시리얼통신(RS232)으로 캐리지리턴값없는 데이터 수신 질문입니다.
가지
안녕하세요. 오래간만에 사이트에 들렀네요.
비베넷으로 하다가 또 막혀서 이곳을 찾았습니다.
막힌 부분은...
rs232통신을 합니다.
시리얼포트에 데이터리스브 함수이용해서 데이터는 잘 받아집니다.
하지만, 받아지는 데이터는 캐리지리턴값이 없이 들어옵니다.
비베넷으로 데이터를 받아서 처리하는 프로그램을 작성후 돌려보면
몇번 데이터받고 실행하고 하다가... 받아지는 데이터들이 깨집니다.
예를 들면... 1개의 정상 데이터값이 abcdef 라 하면...
몇번 루프를 돌면 dddddd 라던지 222222 라던지... 이런식으로 데이터가 깨집니다.
이것 저것을 찾아보고 수정해서 시도해봐도 안됩니다.
지금까지 시도해봐서 나름 판단한것은 통신 수신 데이터가 오버플로우? 난듯 합니다.
시리얼포트 속성에 보니 readbuffersize 4096 으로 되어있습니다. 아무래도 수신 데이터가 계속 쌓여 12비트를 넘은듯 합니다.
readline 명령어는 읽혀지지 않고, readexisting으로 사용했습니다.
(1개의 테그를 읽으면 1개씩 11번이 pc로 읽혀집니다.)
그래서, 데이터리시브함수 또는 수신데이터 받는 함수에...
11개의 데이터를 받고, 통신 수신 데이터 버퍼를 비워주거나 0으로 만들면 될듯 싶은데...
(이건 제 생각입니다.)
사용방법을 모르겠네요, 제 생각이 틀린다면 어떻게 해야할지 선배님들의 조언 부탁드립니다.
감사합니다. 새해 복 많이 받으세요. (__)