在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上的串口组件中的两个函数,我现在用它来收串口字节数据存在一个动态数组里面,如果数据比较多就会出现丢失数据的现象,还请高手来指点一下小弟。 没人会吗,求高手
页:
[1]