Q&A

  • [질문] 485통신에서 질문입니다.
시뮬레이션을 위해 2개의 PC에 useTo485포트로 전화선연결(이후 이 한개는 485전용 장비로 대체될 예정)을 하여, 서로 신호를 주고받고 있습니다.
단, 1장비에서는 불규칙간격으로 2장비로 신호를 전달하고, 2장비에서는 1장비로 일정 간격마다 데이타를 보냅니다.

그러다보니, 서로 송신간격이 일정하지않아, 충돌이 발생합니다.
1에서 2로 전달중일때, 2에서 1로 짧게 데이타를 전송해봤더니, 1에서 2로가는 데이타의 체크섬이 이 때문인지 깨지더군요.

둘다 5바이트씩 전송을 하는데, 체크섬이나 프로토콜은 동일하며, 커맨드에따라 그냥 5바이트만 전송하기도 하고, 경우에 따라서는 시작과 종료커맨드를 5바이트중 일정위치에 붙이고, 그 틈에 데이타를 나눠 5바이트씩 여러개로 가공하여 보내는 방식입니다.
어느 사이트를 보니 485통신에서는 write 전에 포트.setrts(true)를 하고, 딜레이를 한 50msec정도 한후 5바이트를 날리고, 포트.setrts(false)를 해주라고 해서 이 사이클을 반복해서 보내고 있습니다.  1에서 2로 보낼때나, 2에서 1로 보낼때 동일하게 5바이트씩 이런 사이클로 보내는데, 한쪽에서 그냥 얼어버리더군요.

제가 setrts를 잘못이해하고 있는지는 모르겠지만, 한쪽에서 데이타가 날라올때에는 이를 감지하여, 신호선이 비었을때 포트로 쓰게 한다거나 그런 노하우를 아신다면 조언부탁드립니다.
0  COMMENTS