Q&A

  • indy를 사용하여 기계를 제어하는 프로그램 작업중입니다.
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부분이 잘못나가니 기계에서는 무응답입니다.
어떻게 해결해야 할까요?
전문가 분들의 좋은 가르침 부탁합니다.
2  COMMENTS
  • Profile
    최용일 2005.10.29 19:23
    안녕하세요. 최용일입니다.

    WriteLn으로 보내셨으니까 뒤에 리턴(CR)이붙습니다.
    WriteLn대신에 Write를 사용해서 보내세요.

    ^^ 항상 즐코하세요...

  • Profile
    장우석 2005.10.29 21:32
    ㅎㅎ 정말이군요^^
    감사 감사 감사 합니다.
    하루 종일 컴터만 보구 있으니 새로운 생각이 사라져 버린것 같군요!
    이러니 전문가의 조언이 필요합니다.
    우리 기계쟁이들의 일화가 있네요.
    하루내 전직원들이 달라붙어 아무리 보아도 문제가 없는데 기계는 안돌아가고
    결국 전문가를 초빙해 A/S를 받았는데  전문가가 휙 돌아 보더니 망치루 기계의 한부분을
    땅땅 치구나서 가동해 보라하니 바루 기계가 돌아가 버리는 거 있죠ㅠㅠ
    그러구 A/S비용은 1천만원을 청구해서 망치한두번때리구 이런 금액을 청구하냐구 했더니
    망치루 두번 친 비용은 10만원인데 기술료가 990만원이다.  하더라군요.
    ㅎㅎ  감사합니다.