|
아는대로만 답변을 드리겠습니다.
김성준 님이 쓰신 글 :
: 안녕하세요
: Cport3.0을 사용해서 장비와 시리얼 통신하는 프로그램을 짜고 있는데요
: 장비에서 수많은 데이터가 마구 쏟아져 들어옵니다.
: 어떤 정해진 값이 아니면 오류 메세지를 띄우고 포트를 닫으려 하는데요.
: 계속 수신되는 값이 있으니 문제가 생기더군요.
:
: 글을 검색해 보니 포트를 닫기전에 데이터 수신 이벤트를 해제하고 버퍼를 클리어, 포트 닫기를 해야 할듯한데요
:
: 제가 빌더로 프로그램을 처음 짜는지라.. 수신 이벤트 해제하는법이랑 버퍼 클리어 하는법을 모르겠어요..
:
: 1. 수신 이벤트 해제 하는법..ComPort1->Events = []; 이거 오류 나더군요 ;;
=> ComPort1->Events.Clear() 하면 될 것 같네요.
혹은 ComPort1->OnRxChar = NULL; 하면 될 듯 싶네요.
: 2. 버퍼 클리어하는법.
=> ComPort1->ClearBuffer(true, true) 하면 입출력 버퍼를 모두 클리어 시킵니다. 함수 인자 중 앞쪽이 입력, 뒤가 출력을 클리어 시킵니다.
: 3. ComPort1->Connected = true; 와 ComPort1->Open();의 차이점은 뭔가요.
=> 동일합니다.
: 4. 수신되는 데이터를 딱 한바이트씩 검사하기 위해 한바이트가 들어올때마다 이벤트를 발생시키려면 뭘 만져줘야 하는지.. ComPort1RxChar 이놈은 타임아웃안에 들어온 데이터를 모두 읽는거 같던데요..
=> RxChar 이벤트를 이용하시면 됩니다. 그리고 데이터를 버퍼에서 가져올 때 한 바이트씩 가져오시면 됩니다.
:
: 읽어주셔서 감사합니다.
|