포멧 연산자 %c때문입니다.
아스키 변환 포멧이라
%c는 0 ~ 127(0x7F) 까지만 기능합니다
시리얼 포트 콤포넌트는 대부분 바이너리 정송도 가능하니
그 함수를 이용하세요
CPortA->Write(데이터, 데이터 크기);
예)
unsigned char SendData[] = { 0x80, 0x81, 0x82, 0x83 };
CPortA->Write(SendData, sizeof(SendData));
gongdori 님이 쓰신 글 :
: 안녕하세요.
:
: 통신 프로그램을 작성하다가 안되는 부분이 있어서 문의드립니다.
:
: CPORT로 UART 통신을 하는 중에 HEXA 코드를 그대로 전송해야 할 상황이 생겼습니다.
: 아스키코드를 전송할 때는 전혀 문제가 없었는데 헥사코드를 전송하려고 하다보니 문제가 생겨 문의드립니다.
:
: 시험해보니 0x00~0x7F까지 전송하는데는 전혀 문제가 없습니다.
: 그런데 0x80~0xFF까지 전송하려고 하니 전혀 엉뚱한 코드가 전송됩니다.
:
: 그래서 방법을 문의드립니다.
:
: 제가 전송하는 코드는 아래와 같은 형태를 사용합니다.
:
: AnsiString S1;
: S1.sprintf("%c%c%c%c", 0x80,0x81,0x82,0x83);
: CPortA->WriteStr(S1);
:
: 조언부탁드립니다.
:
: 감사합니다.
:
|