|
금목암 님이 쓰신 글 :
: 최명권 님이 쓰신 글 :
: : szBuf(0xFF) 를 Write(szBuf, 1);
: :
: : 이렇게 보내고 워치 창에서 szBuf[0] 을 봣는데요
: :
: : 왜 ' ' 공백이 찍히나용??
: :
: : 매크로 값이 0x7F 을 넘는 값을 보내면
: :
: : Read 할 때 값을 보니깐 0xFFFFFF7F 가 찍히나요??
: :
: : 7F를 안넘으면 딱 두자리로 들어오던데...
:
: 글자를 바이너리아니고 아스키로 받으신거 같네요
: 그리고 xFFFFFF7F 는 lobyte(buffer) 로 마스킹해야 합니다
: 보통 4바이트가 1문자 입니다
확실하게 하려면 마스킹을 꼭해야겟네요..
저.. 질문 한개만 더요.. 제가 마스킹을 안하고 그냥 해봤거든요
보내는 쪽에서는
======================================================
unsigned char szBuf[2];
szBuf[0] = ETX;
ComPort->Write(szBuf, 1);
======================================================
ComPortRxChar 에서는
======================================================
char *szRead = new char[Count + 1];
ComPort->Read(szRead, Count);
for(int i = 0 ; i < Count ; i++)
{
if(szRead[i] == ETX)
{
ShowMessage("ETX");
continue;
}
................ 뒷코드 생략 ....................
}
======================================================
이렇거든요..
여기서 ETX는
#define ETX 0x7F
를 할 경우에는"ETX" 메시지가 출력되는데
ETX가 0x7F 를 넘어서게 되면(0x80 ~ 0xFF) "ETX" 메시지가 출력이 안되더라구요..
제가 어떤 걸 놓치구 얘기하는 것일까요?
|