wyu289356739 发表于 2010-11-6 13:16:13

在BCB上用自己安装的串口组件接收数据有丢失现象

void __fastcall TComm::ReadProcess(void)
{
      DWORDnBytesRead,dwCommError,i,ReadLen;
      COMSTAT CS;
      ClearCommError(hComm,&dwCommError,&CS);
      FCommError=dwCommError;
      if(CS.cbInQue!=0)
      {
                if(InputLen==0)
                ReadLen=CS.cbInQue;
                else
                ReadLen=InputLen;
                if(CS.cbInQue>sizeof(szInputBuffer))
                PurgeComm(hComm,PURGE_RXCLEAR);
                else
                {
                        if(ReadFile(hComm,szInputBuffer,ReadLen,&nBytesRead,NULL))
                        {
                              //取出数据
                              FInputData=AnsiString(szInputBuffer,(unsigned int)ReadLen);
                              //设置字节动态数组的长度
                              FInputByteData.Length=ReadLen;
                              for(i=0;i<ReadLen;i++)
                              FInputByteData=szInputBuffer;

                        }//read file loop
                } //else loop
      }//cs.binque loop
}
DynamicArray<byte>TComm::ReadInputByte(void)
{
       int i;
       if(hComm==0)
       ShowMessage("COM Port if not opened yet");
       ReadProcess();//执行读取函数
       return(FInputByteData);//取得数据数组的最高索引值
}
这是我在BCB上的串口组件中的两个函数,我现在用它来收串口字节数据存在一个动态数组里面,如果数据比较多就会出现丢失数据的现象,还请高手来指点一下小弟。

wyu289356739 发表于 2010-11-7 00:37:36

没人会吗,求高手
页: [1]
查看完整版本: 在BCB上用自己安装的串口组件接收数据有丢失现象