Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2350469
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:01:41

我使用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) |
给主人留下些什么吧!~~