首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

(带源码 求解释!)YbCommDevice 串口一次至多只能接到8个字节 为什么呢

2013-03-01 
(带源码 求解释!)YbCommDevice 串口一次最多只能接到8个字节为什么呢?本帖最后由 hddh06 于 2012-04-01 16

(带源码 求解释!)YbCommDevice 串口一次最多只能接到8个字节 为什么呢?
本帖最后由 hddh06 于 2012-04-01 16:07:55 编辑 //---------------------------------------
void __fastcall TForm1::YbCommDevice1CommNotify(TObject *Sender,
      int NotifyType)
{
        unsigned char reBuf[1024];
        memset(reBuf,0x00,1024*sizeof(unsigned char));

        int reLen=0;
        reLen = YbCommDevice1->Read(reBuf,1024);

        if(reLen>0){
          Label10->Caption = IntToStr(reLen);
         // NMUDP1->SendBuffer(reBuf,1024,reLen);
        }
}
//---------------------------------------


为什么串口控件,每次最多只能接收8个字节,多余的第二次才接收到!对于每一条大于8个字节的指令,不能一次接收完!
比如发送的是12345678910
reLen 第一次是 8  数据是12345678
第二次是 3  数据是910
[解决办法]


//---------------------------------------

void __fastcall TForm1::YbCommDevice1Package(TObject *Sender,
      int NotifyType)
{
  unsigned char Buf[1000]; //接收缓存
    int n = YbCommDevice1->ReadPackage(Buf,1000);

    if(n>0) //收到数据的字节数
     {
        if(Buf[0]!=8)  ShowMessage("通信错误");

        AnsiString s;
        for(int i=0; i<n; i++)
            s += IntToHex(Buf[i],2) + " ";
        Memo1->Lines->Add(s); //在 Memo1 里显示出收到的数据, 将会是完整的一帧数据

     }

}

热点排行