我使用BCB6,将Memo中的十六进制数据每18个字节为一组发送给单片机2051。每当单片机将接收到的18字节数据处理完毕,就发送给PC一个以00为第一字节的十八字节长的数据。PC接收到这个数据后,再发送下一个18字节数据。比如:
单片机发送给PC: 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
PC收到这个以00为第一字节的数据段后,发送数据: 11 22 33 44 55 66 77 88 99 00 11 22 33 44 55 66 77 88 99
单片机处理完这个18字节数据后,再发送 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
依次类推。
我使用下面这样的方法来判断接收到的是否为以00为第一字节的数据段:
void __fastcall TfrmMain::comWriteCommNotify(TObject *Sender, int NotifyType)
{
comWrite->Read(Buf25165,256);
if (Buf25165[0]==0x00)
{
Buf25165[0]=0xff;
SendCmd(Hex25xx5[SendCount]);
SendCount++;
}
}
其中,函数SendCmd的作用为向单片机发送十六进制数据;Buf25165、Hex25xx5、SendCount为全局变量,定义分别为:
unsigned long Buf25165[256];
AnsiString Hex25xx5[512];//存储要发送给单片机的18字节数据
int SendCount;
但是我的这种方法不成功!问题就在于void __fastcall TfrmMain::comWriteCommNotify(TObject *Sender, int NotifyType)无法正确判断接收到的数据。我搞不定了!还请您指教!多谢!!
--------------------next---------------------
阅读(1244) | 评论(0) | 转发(0) |