|
CommPort262 버전 컴포넌트로 개발중입니다...
문제점은
Comm 포트를 통해 데이터를 받을때 Null문자처리 입니다.
Null문자도 응용처리상에 유용한 데이타인 관계로 DiscardNull 옵션을
줄수도 없는 상태입니다.
받는 메세지는 아래와 같은 데이터입니다.
M0112345678 010820171247FD50E20102030401003D0D03D7000000D410650320000367838D2
^ 바로 여기에 있는 HEX(00) 문자
HEX(00)문자로 인해 원해는 데이터가 분리되어 M0112345678 만 수신처리됩니다.
해결할 수 있는 방안을 알려주십시오...
그리고요... 아래와 같이 Comm 포트의 메세지를 기다리기 위해 While 루프를 돌렸습니다.
timer를 이용해 200ns 후에 타임아웃이 걸렸으면 하는데 무한루프에 걸립니다.
commSMSPort->WriteStr("AT");
// 연결상태점검 메세지 응답 대기
timerTimeOut->Enabled=true; <-- timer 설정은 interval 100입니다.
do{
commSMSPort->ReadStr(strTmpInputMsg,commSMSPort->InputCount());
strInputMsg=strInputMsg+strTmpInputMsg;
if(strInputMsg.AnsiPos("ERROR")!=0) chkCommPort=false;
Sleep(100); <-- 이 방법 말구는 없는지요... 쓰레드로 구현해야 되나???
}while(strInputMsg.AnsiPos("OK")==0 && !boolSyncTimeOut && chkCommPort);
timerTimeOut->Enabled=false;
깔끔한 해결방법있으시면 알려 주십시오... 그럼 즐거운 하루 되시길....
|