|
먼저..
여러님들이..
많은 답글을 올려주신거..
정말 고맙습니다..
나름대로 헬프도 뒤지고,,
해서 새로 코드를 만들었거든요..
ReadStr(), WriteStr()대신 Read(), Write()를 보니깐 버퍼 타입이 void길래 그걸로 했거든요..
char buf[3]; char Str[3];
int cont; int cont;
-->
memset(buf, 0, 4); memset(Str, 0, 4);
-->
buf[0] = 0x10; ComPort1->Read(Str, cont);
buf[1] = 0x11;
buf[2] = 0x12;
ComPort1->Write(buf, cont);
이렇게 했더니..
뭐.
if(Str[0] == 0x10) ShowMessage("!!"); //
데이터가 들어온걸 확인 했거든요..
근데요..
[질문1]
다른 분이나 제가 가지고 있는 코드를 보면,,
받는쪽의 버퍼의 크기를 4096으로 잡던데..
그러는 이유가 있나요??
데이타에 생각지 않는 널문자가 포함될수 있다는건 알지만,
만약 제가 받는 데이타의 크기가 10바이트인데도 그렇게 크게 버퍼를 잡아줘야 하나요??
[질문2]
위에서는 연습삼아 3개의 데이터를 보내는 거예서는
받는쪽도 보내는 쪽도 버퍼크기를 4로 잡았는데요..
이걸 좀 바꿔봤더니 안되네요?
case1. 받는 쪽은 그대로 크기 4로 두고 보내는 쪽의 버퍼를 4096으로 바꿔
봤더니 이때는 아무 이상이 없었거든요.
case2. 보내는 쪽의 버퍼를 10으로만 올려도..
대충 디버그를 잘 몰라서
ShowMessage("START");
ComPort1->Read(Str, cont);
ShowMessage("END");
이렇게 검사했더니..
START는 보이는데.. END는 안뜨더라구요..
혹시 입력받는 버퍼의 크기가 커서 그거 다 받을려고 기다리느라 시간이 지연되는건 아니겠죠?
아무튼 받는쪽의 버퍼크기를 조정하면 왜 문제가 생기죠?
또 해결방법은 무엇이죠??
|