Q&A

  • rs-232 통신중 문제 발생
개발환경 : 델파이 6.0. MS-SQL
레미콘 판넬과 통신을 하는데서 문제가 발생하였습니다.
판넬마다 프로토콜이 다르기 때문에 Dll로 작업이 되있구요

우선 흐름은 다음과 같습니다. 레미콘 판넬을 판넬이라 표시하도록 하죠
PC <-> 판넬
PC -> 판넬 : 오더 전송
판넬 -> PC : 생산 시작신호 전송
판넬 -> PC : 계량 데이터 전송(2~3회, 1회당 전송 Byte는 130~150Byte정도 판넬마다 다릅니다.)
판넬 -> PC : 생산완료신호전송

PC는 전송받은 자료를 DB에 저장합니다.

이런 흐름의 프로그램이 돌아가고 있습니다.

그러나 문제는 하나의 판넬에서 문제가 생겼습니다.

문제가 판넬에서 PC로 전송되는 데이터를 그대로 하이퍼터미널등 통신프로그램에서 받은 자료를 가지고
PC(프로그램역활) <-> PC(판넬역활) 로 테스트를 하면 정상적으로 처리가 다 되는데

이게 실제 판넬과 통신을 하면 자료가 정상적으로 넘어오는것 같은데 이게 저장이 안됩니다.

과연 문제가 뭘까요
속도, Databit등도 판넬과 동일하게 맞춰서 테스트를 하기 때문에 판넬과 동일한 환경이라고 생각됩니다.
프로그램 문제라고 한다면 PC대 PC로 테스트 할때도 마찬가지로 자료가 저장이 안되야 하는데
왜 PC대 PC 이렇게 테스트를 하면 잘 되고
판넬대 PC로 하면 안되는건지...

제 짧은 소견으로는
PC대 PC로 테스트 할때는 Stx - Ext 위치 파악이 잘 되는데
판넬대 PC로 할때는 Stx - Ext 위치 파악이 잘 안되는듯 합니다.

통신하는데 사용하기 좋은 컴포넌트라든지
의견들 부탁드립니다.




1  COMMENTS
  • Profile
    이중철 2004.09.23 22:38
    첫째
    일단 하이퍼터미널은 데이타 전송이 되는지 그것만 확인하세요
    하이퍼터미널은 ASC만 보여주기 땜시 놓칠 수 있는게 있습니다.
    실제로 판넬에서 ASC만 온다고 해도 CR만 붙는지 LFCR이 붙는지
    등 확인 할 수 없으므로 하이퍼는 데이터 전송이 잘 되는지만 확인
    하세요
    제경우에는 TEXT뿐만 아니라 HEX로도 보여주는 프로그램 짜서
    테스트 합니다.
    두번째
    제가쓰는 Async Component는 TMS의 Async입니다..
    세번째
    PC대 PC로 테스트 할결우 PC 한대에서 Com1 -> Com2 이런식
    으로 하지 마세요 개발할 때는 그와같이 해도 상관없지만
    디버깅이나 테스트 할때는 독립PC로 가줘야 합니다.
    네번째
    다른 사람은 모르겠지만 전 시리얼통신 메세지는 Queue를 씁니다.
    일반적으로 Thread(Async Compoent Thead 이므로 그것 까지 신경
    안써도 된다는)는 안써도 되고요
    데이터 수신 이벤트 발생시 제경우에는 데이터를 Queue에 넣고 다시
    SendMessage또는 PostMessage로 Message Queue에 쌓습니다.
    .. 이후 절차는 아시겠죠 물론 왜 이렇게 하는지 이유도요..

    그럼 이만..