vc6.0 SerialPort 串口接收数据不完整

LZNJ06 2010-12-29 09:58:21
我在VC6.0下使用SerialPort 类接收数据,在9600bps下能接收到数据,现在速率改为115200bps后接收数据不全,总是看到的是前半部分,或后半部分,我是发送命令到下位机后等待2秒后,去开始处理数据的。我给的2k缓冲,应该够用了。我用串口助手接受看了看能全部接收到数据。不知什么原因,请大家指点!谢谢!
...全文
454 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LZNJ06 2010-12-30
  • 打赏
  • 举报
回复
谢谢楼上的兄弟回复,怪我,原因我都不好意思说了,m_ReceiveLength 长度给搞成UCHAR了,大了就出界了,惭愧啊。UINT 后OK.
LZNJ06 2010-12-29
  • 打赏
  • 举报
回复

//初始化串口的 writebuffersize = 2048
if (m_SerialPort.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,writebuffersize))

//接收消息响应的。
LONG CSMSModuleToolDlg::OnCommunication(WPARAM ch ,LPARAM port)
{
if (!m_bReceiveEnd)
{
m_ucRECEIVE[m_ReceiveLength++] = ch;
}
return 0;

}

另外就是接收处理的了,我从收到的 m_ucRECEIVE[m_ReceiveLength++] 发现就是不全的。
但数据量少的可以的。
feige170905 2010-12-29
  • 打赏
  • 举报
回复
贴出主要代码才能给你分析啊。
LZNJ06 2010-12-29
  • 打赏
  • 举报
回复
9600bps下可以,另外数据量较小时也是可以完整,准确接收的。当达到1k左右时,就出现了接受不全的情况。谢谢各位回复!我还在找原因中!
grf9527 2010-12-29
  • 打赏
  • 举报
回复
不排除频率过高的原因。你的软件在低频率的表现如何
Metrosexual 2010-12-29
  • 打赏
  • 举报
回复
代码贴出来看看吧!
还没想好 2010-12-29
  • 打赏
  • 举报
回复
使用api,createfile readfile 组合。很简单 更灵活。
手机写程序 2010-12-29
  • 打赏
  • 举报
回复
那就是代码有问题.猜不出哪里的问题.
LZNJ06 2010-12-29
  • 打赏
  • 举报
回复
首先谢谢你的回复。我用的是消息触发方式接收的,用的SerialPort 类当收到数据时会有一个消息来的,另外因为我接收数据长度不确定,所以我就用延时读取方式来读取了,我想这个延时时间内应该能收到全部数据。关于系统分配的这个缓冲大小,我再查查看!
sendwb 2010-12-29
  • 打赏
  • 举报
回复
首先可以确定你没有使用消息触发数据接收,而是采用延迟接收的方式。第二,一般系统会默认为串口分配一个缓冲区,而你接收的数据实际是读取的这个缓冲区的数据,当确定数据被取走后,串口会继续读取数据填充这一缓冲区。如果缓冲区满,会造成阻塞,甚至部分数据丢失。这个系统分配的缓冲区与你应用程序分配的缓冲区无关,大小暂时不记得,需要去查相关资料。如果你不想采用消息驱动数据读取,就建议采用死循环的方式读取,虽然效率低一点,但应该可以保证数据完全读取。
zgl7903 2010-12-29
  • 打赏
  • 举报
回复
lixingkai2 2010-12-29
  • 打赏
  • 举报
回复
不太可能吧!串口工具也是用这个类做的呀!
LZNJ06 2010-12-29
  • 打赏
  • 举报
回复
没有找到解决方法,不知什么原因,应该能解决的。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧