통신에서는
모든 데이터가 함께 들어온다고 생각해서는 안됩니다.
따라서 수신 버터의 내용을 또다른 버퍼에 넣고 ..
원하는 부분만 짤라서 써야 하고..
(stx ~ etx 까지 내용만 추출)
간혹 일부 데이터가 안오거나 ..
노이즈 등의 영향으로 변조된 데이터가 들어 오는 경우도 있기 때문에..
이런 경우에 대한 처리도 들어가야 합니다.
이지형 님이 쓰신 글 :
: 안녕하세요 이제 막 C빌더 배우고 있는 신생아 입니다.
:
: C빌더6을 사용하고 Cport264 입니다.
:
: 제가 마이컴에서 rs232로 데이터를 받아서 스트링 그리드로 데이터 표시하는 프로그램을 만들고 있는데
:
: 통신쪽에 문제가 생겨서 질문드려요
:
: 마이컴에서 200ms 마다 송신을 하는데 버퍼 맨앞에 stx 보내고'1' 'D' 'A' 'T' 문자열 보내고 그다음 데이터를 보내서
:
: 앞에 stx와1 D A T를 확인하고 그다음 버퍼부터 데이터를 스트링 그리드에 표시하게 했는데요
:
: 문제는 데스크탑 PC에서는 몇시간동안 해도 잘 되는데
:
: 노트북에서 해보니 짧게는 1분 길어도 2~3분만에 스트링 그리드에 표시가 안되더라구요
:
: 그래서 데이터 표시가 안될때 rx 버퍼를 확인해보니 수신이 되긴 하는데
:
: 버퍼 맨앞에 stx가 아니더라구요..맨앞이 'D' 일때도 있고 '1' 일때도 있고..
:
: 포트를 끊었다가 다시 하면 또 되다가 2~3분 후에 똑같은 현상이 나옵니다
:
: C빌더에서는 rx char 에서 버퍼에 데이터 받고
:
: 타이머를 이용하여 프로세싱 하게 했고 타이머 인터발은 1 입니다.
:
: 데스크탑에서는 잘 되는데 노트북에서 저런현상이 나오는게 원인을 잘 모르겠네요 ㅜㅜ
:
: 고수님들의 조언 부탁드립니다.
:
:
|