|
1. 232 특성이라고 생각하시면 됩니다.
원래 그래요.
경우에 따라서 님의 경우처럼 나눠서 들어오기도 하고..
연속적으로 송신이 일어나는 경우 다음에 받아야 할 데이터가 한꺼번에 들어오기도 합니다.
따라서 이런부분은 개발자가 처리해 줘야 합니다.
일부가 아예 안들어 오거나 깨지는 경우등 상황에 따라서 이런 부분도 고려해서 개발해야 합니다.
이건 232 뿐만 아니라 대부분의 통신에 적용되는 사항입니다.
2. String buffer ; header 에 멤버 변수로 선언하시고..
buffer += msg ; 해서 수신데이터를 모두 보관시키고..
buffer 를 확인해서.. 수신 데이터가 모두 들어왔는지 확인합니다.
확인조건은 스캐너 스펙 보시고..
끝에 cr/lf 등 종결 상태임을 표시하는 문자가 있으면 그걸로..
아니면 자리수등으로 수신이 다 됐는지 확인합니다.
무릉도원 님이 쓰신 글 :
: 제가 지금 초보자라 이해가 잘 안되서 그러는데 문자열을 따로 하나 둬서 수신데이터를 누적시킨다는것이 뭘 말하는것인지 잘 모르겠습니다.
:
: 일단 들어오는 데이터는 문제가 없지만, 가끔 한줄이 아닌 두줄에 나눠서 출력이 되는 경우가 있는것인데 어느 부분에서 문제가 있어서 저렇게 출력이 되는지를 잘 모르겠어서요...ㅠㅠ
:
:
: Intotheblue 님이 쓰신 글 :
: : 질문에 무엇을 원하시는건지 구체적인 설명이 없네요..
: :
: : 어쨋든 232 통신에서 님이 올린것 처럼 나오는건 정상입니다.
: : \n 들어가는건 아니고.. 수신이 완료되기 전에 읽어 들이기 때문에 나오는 현상입니다.
: :
: : 그래서 개발자가 저런 부분을 고려해서 처리하는 수 밖에 없습니다.
: :
: : 보통은 문자열을 따로 하나 둬서 수신데이터를 누적시키면서..
: : 필요한 내용이 다 들어올 때까지 대기 후 다른 처리를 합니다.
: :
: :
: :
: : 무릉도원 님이 쓰신 글 :
: : : 스캐너가 바코드를 읽으면 그 읽은값을 메모장으로 출력을 하고 있는데
: : : 한번씩 \n이 들어가는지
: : : 152663584256
: : : 152663584256
: : : 152663584256
: : : 152663584256
: : : 15266358
: : : 4256
: : : 152663584256
: : : 이런식으로 중간에 한번씩 출력결과가 이상이 있습니다.
: : :
: : : void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
: : : {
: : : String msg;
: : : char *p;
: : : char str[50];
: : : ComPort1->ReadStr(msg, Count);
: : : Memo1->Lines->Add(msg);
: : : }
: : :
: : : 현재 사용중인 코드입니다.
|