c语言read读出数据是4字节的,关于ReadFile读数据读不完整的有关问题

在使用ReadFile从COM1接收数据时,遇到数据无法一次性完整读取的问题。通过COM4发送20字节数据,但需要两次调用Uart_Read函数才能完成接收。串口接收函数Uart_Read中,通过ReadFile读取串口状态,发现数据分多次读取。尝试各种方法未果,寻求解决思路。解决方案可能涉及数据重组和提高读取频率,以适应快速发送的数据流。
摘要由CSDN通过智能技术生成

关于ReadFile读数据读不完整的问题

字节写了一个测试程序,通过COM4给COM1发送20个字节的数据,但是如果循环发送且发送很频繁的时候,会经常出现20个字节要执行两次Uart_Read函数才能收完,试过了各种方法,仍然没有解决,请各位高手帮助:

以下是我封装的串口接受函数:

static COMSTAT ms_ComStat;//  串口状态

static OVERLAPPED ms_Ov;

int Uart_Read(HANDLE hComm, unsigned char *rbuf, int *len)

{

BOOL bRead = TRUE;

BOOL bResult = TRUE;

DWORD dwError = 0;

DWORD BytesRead = 0;

int rtn = 0;

BYTE tmpbuf[256];

DWORD nPos = 0;

DWORD readcnt = 0;// 读到数据次数

memset(tmpbuf, 0x00, sizeof(256));

for(;;)

{

bResult = ClearCommError(hComm, &dwError, &ms_ComStat);

if ( ms_ComStat.cbInQue == 0 )

{

if( readcnt == 0 )

{

return -1;

}

else

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值