604
社区成员
发帖
与我相关
我的任务
分享
#pragma pack(1)
typedef struct {
unsigned short fHeader;
unsigned char fLen;
unsigned short fAngel;
unsigned short fCrc;
unsigned short fTailer;
} angelFrame;
#pragma pack()
bool angelConvert(unsigned char *buf, unsigned long *angel)
{
#define SWAP16(x) (unsigned short)(((x) < < 8) | ((x) >> 8))
unsigned char *p = buf;
if (!p) {
return false;
}
while (*p == '\x55')
++p;
/* check header */
angelFrame *f = (angelFrame *)(p - 2);
/* check length */
/* check crc */
*angel = SWAP16(f->fAngel);
return true;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned char *buf[] = {
"\x55\x55\x02\x00\xB4\xD0\x77\xAA\xAA",
"\x55\x55\x02\x01\x0E\x50\x54\xAA\xAA",
"\x55\x55\x02\x01\x69\x11\xBE\xAA\xAA",
"\x55\x55\x02\x01\x6E\x50\x7C\xAA\xAA",
"\x55\x55\x02\x01\xE0\xD0\x18\xAA\xAA",
"\x55\x55\x02\x01\xFB\x90\x13\xAA\xAA"
};
AnsiString asAngel;
unsigned long iAngel;
float fAngel;
for (int i = 0; i < 6; i++) {
angelConvert(buf[i], &iAngel);
fAngel = 0.5 * iAngel;
asAngel.printf("%f", fAngel);
ShowMessage(asAngel);
}
}