|
10 04 04 07 27 02 23 08 00 00 00 2C 8D 8F 29 70 8A 26 51 87 32 C5 94 00 00 00 88
20 00 04 07 27 02 23 57 2C 8D 8F 29 70 8A 00 00 00 26 51 86 32 C5 94 00 00 00 88
20 01 04 07 27 02 24 51 2E 4F 92 29 71 8A 00 00 00 26 51 88 32 C5 94 00 00 00 88
20 02 04 07 27 02 25 57 2C 8D 90 29 71 8B 00 00 00 26 51 86 32 BF 42 00 00 00 88
30 00 04 07 27 02 26 50 00 00 00 00 00 00 00 00 00 00 00 00 32 C5 94 00 00 00 88
30 01 04 07 27 02 27 09 00 00 00 00 00 00 00 00 00 00 00 00 32 BB 31 00 00 00 88
30 02 04 07 27 02 28 20 00 00 00 00 00 00 00 00 00 00 00 00 00 01 04 00 00 00 88
위 처럼 Hexa값을 시리얼로 받아야 하는데 어떻게 받아야 하는지 모르겠네요.
Comdrv32를 사용했습니다.
// 시리얼 통신에서 OnReceiveData의 DataSize는 유동적입니다.
// 10개일수도 100개일수도 50개일수도 있습니다..
void __fastcall TForm1::cpdComReceiveData(TObject *Sender, Pointer DataPtr,
DWORD DataSize)
{
AnsiString strRecvData,strRecvDataAll;
char *pBuf;
char buffer[100];
for( int i=buf;i<DataSize;i++)
{
buffer[i]=*pBuf;
*pBuf++;
}
if(buffer[2]==0x04 & buffer[26]==0x88)
{
for(int j=2;j<26;j++)
{
strRecvData.sprintf("%02X",buffer[j]&0xFF);
strRecvDataAll+=strRecvData;
}
}
}
위와 같이 하면 중간에 데이터가 안들어올때가 있더라고요ㅠㅠ
04~88까지만 잘라서 받고 싶은데 어떻게 하면 좋을까요^^
|