Q&A

  • AsyncPro사용중에..
델파이 5 / WinXP / 노트북에 USBtoSerial 젠다를 사용합니다.

전에도 같은 질문을 올리기도 하였고..
그동안 혼자서 여러가지 고민도 해보았지만,
해결을 하지 못해서요...

문제는..
----
SendtoInst := #27 + 'id' + #13; (속성은 string)
중략...time trigger 걸고, 실행시키고...

ApdComport.putstring(SendtoInst);

이러면, 연결된 장비로 전달이 되지 않는다는 것입니다.

이것을 AdTerminal을 실행시켜 화면에서 키보드로 같은것을
입력하면 바로 장비와 통신을 한다는 것이지요..

putstring()으로는 문자열이 가지를 않고, Terminal에서는 되는 이유가
무얼까요?  

AsyncPro를 사용하시는 분의 도움을 부탁드립니다.


2  COMMENTS
  • Profile
    권태훈 2006.07.27 20:02
    가지 않는다고 확신하십니까?

    가긴 가는데 장비가 알아채진 못하는게 아닐까요?

    터미널에서 엔터를 치면 CR, LF 두문자가 넘어갑니다.

    #13은 한개만 처리하셨는데 #10하고 묶어서, 바꿔가면서 해보세요.



  • Profile
    윤수아 2006.07.27 04:13
    저 역시 비슷한 환경에서 ApdComport 컴포넌트를 쓰고 있습니다.

    델파이 6 / winXP or Win2000 or Win98 / 노특북 or 데스크탑 / Serial 고정포트 or USBToSerial 젠다

    이런 다양한 환경에서... 하는데... (time trigger 이벤트는 쓰질 않아서... 뭐하는 이벤트인지 모르겠어요...
    데이타 받을 때는 TriggerAvail 이벤트에서 받고 보내는 건 putString으로....해서 보내고 있습니다...)
    데이타가 안 나간다...는 경우는 없었거든요...

    음...USBToSerial 이라고 가셨으니 가상 시리얼 포트 생겼을 거고 그걸로 포트 번호 맞추고...
    장비와 똑같은 보레이트 설정해주고...그러고 날리면.... 되는데...
    어떤 상황인지..모르겠어요... 분명 되야 하는데.......

    Com1, Com2가 있는 데스크탑에서 우선 나가는지를 테스트 해보세요...
    Com1 Com2를 크로스 시리얼 케이블로 연결 하신 후
    님이 짜신 프로그램을 두개 띄우셔서 한 놈은 Com1으로 설정하시고...
    다른 한놈은 Com2로 설정합니다.. (님이 짜신 프로그램에서 분명히 데이타가 오면
    받아주는 부분이 있을 것이라고 생각합니다)
    그리고 Com1을 잡은 쪽에서 데이타를 putString을 통해 쏘고..그 데이타를 Com2를 잡은
    놈이 받는지를 테스트해봅니다..
    여기서 받는다면... 데이타는 나간다고 봐야합니다...
    데이타는 나가는데 장비에서 요구하는 형식에 맞지 않아서 장비에서..
    데이타를 받고도 별 반응이 없는 것은 아닐까요...?

    Termial 역시 Comport를 연결해서 쓰고 있고... 제가 보기엔 화면에 입력을 하면
    연결된 Comport가 putChar() 로 1byte의 데이타를 쏴주고 있는 것 같습니다...

    가령 '123'이라고 치면 내부 동작은
    Comport.putchar('1');
    Comport.putchar('2');
    Comport.putchar('3');
    이런 식으로요...


    Terminal에서 키보드로 123 쳤더니... 통신이 되더라 라면...
    버튼 3개 만드시고 Click 이벤트에
    Botton1 click 이벤트에 Comport.putchar('1');
    Botton2 click 이벤트에 Comport.putchar('2');
    Botton3 click 이벤트에 Comport.putchar('3');

    이라고 코딩하신 후... 실행시키셔서 버튼 1 ~ 3을 차례대로... 눌러보세요...

    통신이 되는지...