먼저 노트북에서 UART를 쓰셨다면 아마 USB-UART 컨버터를 쓰셨을 텐데 인터넷에서 검색해 보면 UART 패킷 데이터를 캡쳐해서 보여주는 툴이 있습니다. 이더넷으로는 wireshark 같은 것인데 이 툴을 통해서 먼저 데이터가 잘 들어오는지 확인해 보시고.
다음으로는 다른 것도 마찬가지지만 특히 원격 장비로부터 시리얼 데이터를 받을 때에는 수신단을 잘 설계해야 합니다.
stx 1DAT data 식으로 값들이 들어온다면 중간 중간 이상하게 들어올수도 있다는 것을 염두해 두어야 합니다.
가령
stx DAT data
stx AT data
sx 1A data
s 1DAT dat
등등으로요.
한가지 방법은 stx 1DAT data 가 모두 들어온 다음에 데이터 표시 부분으로 넘어가면 됩니다. 데이터를 받다가 다시 stx가 들어오면 기존 것은 버리고 처음부터 다시 받기를 재개하면 됩니다.
그리고 USB-UART 컨버터를 한번 바꿔 보세요. 이게 가끔 제품을 탑니다. 시중에 여러가지가 나와 있으니 바꿔보시는 것도 좋을 것 같습니다.
이지형 님이 쓰신 글 :
: 안녕하세요 이제 막 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 입니다.
:
: 데스크탑에서는 잘 되는데 노트북에서 저런현상이 나오는게 원인을 잘 모르겠네요 ㅜㅜ
:
: 고수님들의 조언 부탁드립니다.
:
:
|