indy를 사용하여 기계를 제어하는 프로그램 작업중입니다.
PC에서 <I4R-Bchr(13)> 를 주면 <I4R-B????????chr(13)>을 리턴해주게 되었습니다.
여기서 chr13 : Enter값, ???????? : 이진수 0 or 1 이 들어옵니다.
이부분 코드는 이렇습니다.
<!--CodeS-->
TCMD2Thread= Class(TThread) //스레드선언부
Private
Protected
Procedure Execute; override;
end;
.
.
frmClient.TCPClient2.WriteLn('I4R-B' + chr(13)); // tx 처음 시작부분
.
Procedure TCMD2Thread.Execute; // 스레드 읽어오는 부분
Begin
FreeOnTerminate := TRUE;
Repeat
Command2(frmClient.TCPClient2.Readln(#13,14)); // rx
Until Terminated;
End;
Procedure Command2(CMD : String); // 스레드 처리부분
begin
frmClient.CMD2 := Cmd;
frmClient.Memo2.Lines.Add(Cmd);
frmClient.TCPClient2.WriteLn('I4R-B' + chr(13)); // tx
End;
<!--CodeE-->
TX에서 보내면 총 6Byte 실지로 가는 길이는 7Byte가 되는데 어떤 문제 인가요???ㅠㅠ
TX부분이 잘못나가니 기계에서는 무응답입니다.
어떻게 해결해야 할까요?
전문가 분들의 좋은 가르침 부탁합니다.
WriteLn으로 보내셨으니까 뒤에 리턴(CR)이붙습니다.
WriteLn대신에 Write를 사용해서 보내세요.
^^ 항상 즐코하세요...