|
OnRxChar 이벤트에서
void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count)
{
AnsiString Str;
ComPort1->ReadStr(Str,Count);
Memo1->Lines->Add(Str);
}
이렇게 해서 메모장에 나오는 데이타를 확인해 보세요.. 핵사 값으로 들어온 놈들이 자리수 마다 다른 의미를 가지고 있따면
Str.SubString(int,int) 를 사용해서 필요한부분을 잡아 오면 될겁니다.
0x40 0x40 0x40 0x42 0x1C 0x11 0x20 0x33 0x33 0x23 0x3D
만약 이런 데이타가 순서대로 들어 왔따면. 메모장에는
404040421C11203333233D 처럼 그대로 핵사값으로 출력되면
AnsiString Temp;
int Temp1;
Temp = Str.SubString(1,1) //젤 첫번째 바이트가 Temp에 들어 가겠죠?
Temp1 = Temp.c_str(); 이렇게 하면 아스키코드값이 십진수로 바뀌어서 Temp1에 들어 갈겁니다.
안되면 욕하십시요..
요구르트 님이 쓰신 글 :
: 시리얼 통신으로..
:
: HEX코드가 들어오거든요..
:
: 이거 받는 코드좀 가르쳐주세요..
:
: 제 생각에는..
:
: AnsiString buf[4096];
: int cont;
:
: ComPort1->Read(buf, cont);
:
: 이렇게 할려고 하는데..
: 안되네요..?
:
: 쫌 받는것 같더니..
: 이런 에러가 나오거든요...
: 왜 이러죠..?
: Project Project2.exe raised exception class EComPort with message 'ReadFile function
: failed (with error code: 998)'. Process stopped. Use Step or Run to continue
:
: 간단하게..
:
: 0x40 0x40 0x40 0x42 0x1C 0x11 0x20 0x33 0x33 0x23 0x3D 이런 HEX값이 11개가..
: 시리얼 통신으로 들어올때..
: 받는 코드좀 부탁드려요..--;
:
: 정말..힘이드네요..--;
|