社区
VB
帖子详情
232串口数据接收丢失问题
lemonzx2008
2008-06-18 05:03:00
用一台泵连到计算机上,通过计算机不停接收泵的数据
我是用VB.NET2003利用串口类来写的上位机接收程序,出现以下问题
1、接收数据时老是少接收一个,但是发现缓冲区中还有一个
2、发生最多的情况是第一次接收少收一个,而以后则接收数据正常
3、偶尔第一次及以后均接收正常
上面是在不利用断点的情况下,若加上断点来调试,则每次接收的数据都少一个,即校验和收不到。
想破了脑袋,还是没解决这个问题,希望社区的兄弟姐妹不吝指点下。
...全文
1140
27
打赏
收藏
232串口数据接收丢失问题
用一台泵连到计算机上,通过计算机不停接收泵的数据 我是用VB.NET2003利用串口类来写的上位机接收程序,出现以下问题 1、接收数据时老是少接收一个,但是发现缓冲区中还有一个 2、发生最多的情况是第一次接收少收一个,而以后则接收数据正常 3、偶尔第一次及以后均接收正常 上面是在不利用断点的情况下,若加上断点来调试,则每次接收的数据都少一个,即校验和收不到。 想破了脑袋,还是没解决这个问题,希望社区的兄弟姐妹不吝指点下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lemonzx2008
2008-07-02
打赏
举报
回复
自己顶下
只在此山中
2008-06-27
打赏
举报
回复
应该不是BUG,
估计是什么参数没设置或设置错误.你是用事件触发吗?是接收1个字节就触发1次吗?
lemonzx2008
2008-06-27
打赏
举报
回复
是的 是用事件触发,接收一个字节触发一次
zdingyun
2008-06-26
打赏
举报
回复
一台电脑可通过插PCI串口扩展卡,可增加串口,费用60-70元。
lemonzx2008
2008-06-26
打赏
举报
回复
多谢大家,现在装了VB.NET2005,想用SERIALPORT类做,由于要向下位机发送地址,所以校验位用的是MARK,结果发现校验位为MARK时进不了接收中断且再用串口调试助手收到的数据比原来多了15个字节.前面在VB.NET2003中校验位为MARK也没发现有这个问题,难不成是2005的BUG?有人能回答下吗?郁闷深思中^……
lemonzx2008
2008-06-23
打赏
举报
回复
聪明^^^^
yanlongwuhui
2008-06-23
打赏
举报
回复
2个电脑不就有2个串口了嘛......
lemonzx2008
2008-06-23
打赏
举报
回复
电脑只有一个串口……
yanlongwuhui
2008-06-22
打赏
举报
回复
串口连接线应该知道怎么用的吧,就是把COM1跟COM2连接起来(线要做对,不清楚的话可以查下资料),用串口调试工具通过COM1往COM2发数据,上位机软件在COM2口接收数据
yanlongwuhui
2008-06-22
打赏
举报
回复
是不是上位机软件问题,通过两个途径可以进行排查:
1.做个串口连接线,用串口调试工具给自己发指令,自己接收处理,看能否正常处理:
2.改成单字节接收,看是否接收正确;
如果两者排查确认上位机都能正常处理,基本能确保问题在下位机
lemonzx2008
2008-06-22
打赏
举报
回复
谢谢炎龙无悔,明天去公司了试下,好象我电脑只有一个串口……
lemonzx2008
2008-06-21
打赏
举报
回复
恩,去看了下,收获不小,不过有些还是不太明白,最想要一个应用的实例.
实在不行的话就只能改成每接收一个就读一个了,不过上位机牵涉到浮点数转换问题,有点麻烦.
yanlongwuhui
2008-06-21
打赏
举报
回复
[Quote=引用 12 楼 lemonzx2008 的回复:]
不过我不明白的是为什么串口调试工具可以收到正确的?应该原理一样的啊。
[/Quote]
因为串口调试工具是接收到什么就读取什么,显示什么。如果你的测试不考虑指令,改成每接收到1个字符就读取一次,并显示一次,保证你的结果跟串口调试工具一样。本来也以为是上位机程序问题,后来下位机的程序员主动通过调试找到问题了,算合作得比较愉快吧。
lemonzx2008
2008-06-20
打赏
举报
回复
谢谢各位 今天试了延时,加了延时后一个也收不到了,而串口调试工具依然是接收正确。
难道真的是我的程序有问题,或者要装上VS.NET 2005?
可能自己对串口还是不是很了解,不知道对串口类来说怎样才能控制一次只读一个字节。
我遇到的也是,下位机的现在还一直说是上位机软件的问题,不愿意修改,一直认为是接收的问题,因为用串口调试工具接收正确。问他发送的速度,他不知道,要我算,我也不知道该怎么算。
不过我不明白的是为什么串口调试工具可以收到正确的?应该原理一样的啊。
yanlongwuhui
2008-06-20
打赏
举报
回复
[Quote=引用 9 楼 lemonzx2008 的回复:]
还有,用串口调试工具接收的数据是正确的.这样是不是可以说下位机是没有问题的呢?
[/Quote]
我遇到的也是这问题,开始做下位机的一直说是上位机软件的问题,后来进过多次调试,修改了下位机代码。下位机修改的好象不是延时,好象修改了发送速度,没记错的话,好象是加快了。至于为什么会这样,就不很清楚了。
网上的资料,不知道有没有对下位机分析问题有用:
为什么在RS-485/RS-422构成的通信网络中,传输数据包时经常出现多出一个数据或少一个数据的现象?
一般在点-多点通信系统中会经常出现这个问题, 归纳出现的原因大致如下:
1) 在半双工通信中,一般可以通过禁止RS-485收发器接收使能或UART内部的接收使能,以保证不出现自发自收,进而减少CPU的开销。当数据发送完成后,RS-485接收器和内部UART将回到允许接收状态而发送器将关闭,在此状态切换过程中,可能出现RS-485接收器输出低电平跳变,而此时UART已经允许接收,从而导致多接收一个字节。
正确处理方法应该为:从接收状态向发送状态转换时,先禁止内部UART的接收使能,再打开接口的发送器使能,然后,允许内部UART的发送使能,开始发送数据;从发送状态向接收状态转换时,先禁止内部UART的发送使能,再关闭接口的发送使能(如果接口的接收使能被禁止,则紧跟着打开接口的接收使能),在延时2至4个NOP指令后,才打开内部UART的接收使能。
2)对于大多数UART来说,内部发送缓冲器"空"会产生中断或置对应的标志位,但此时数据不一定真的发送完成,因为数据有可能还在输出移位寄存器中。如果仅靠发送缓冲的状态来判断一包数据是否发送完成,从而决定是否关闭内部UART的发送使能和接口的发送使能,则这个数据包的最后一个字节将不会发送到总线上,以致对方会少接收一个字节。此类问题会出现在MAX3100、MAX3140和PIC系列单片机等类似情况的UART中,请用户应用中注意此类问题。
cauhorse
2008-06-20
打赏
举报
回复
。。。真抱歉,以前做的代码,课题一结就找不到了(-_-|||),不过当时我就照着MSDN上的一个文档改的:
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
SerialPort Class
有一点例程。
把那个基本整明白了,应该就没有问题了。
lemonzx2008
2008-06-20
打赏
举报
回复
新装了2005,庭树东南枝能给我一个应用实例吗?
AManStudio
2008-06-19
打赏
举报
回复
有一种笨的方法就是不用控件触发的事件,而是用一个Timer循环读取串口数据!
lemonzx2008
2008-06-19
打赏
举报
回复
还有,用串口调试工具接收的数据是正确的.这样是不是可以说下位机是没有问题的呢?
lemonzx2008
2008-06-19
打赏
举报
回复
下位机程序是要发送的字节间加延时吗?
加载更多回复(7)
C#
串口
通信(彻底解决C#
串口
通信中的
数据
丢失
问题
)
### C#
串口
通信详解与
数据
丢失
问题
的解决方法 #### 概述
串口
通信是一种常见的设备间
数据
传输方式,在工业控制、自动化测试等领域应用广泛。然而,在使用C#进行
串口
通信开发时,很多开发者都遇到过
数据
丢失
的
问题
...
接收
串口
数据
并将
数据
保存
在IT行业中,
串口
通信(Serial Port Communication)是...通过上述知识点,我们可以构建一个基本的
串口
数据
接收
和保存系统。实际操作中,还需要考虑到异常处理、
数据
解析、性能优化等因素,以确保系统的稳定性和效率。
串口
通信解决
数据
乱码和
数据
丢失
4.
接收
中断:在
数据
接收
过程中,如果中断或者
丢失
了某个字符,可能导致后续字符解析错误,从而出现乱码。使用适当的缓冲区大小,确保能完整
接收
数据
包,并处理好异常情况。 二、
数据
丢失
原因与解决方案 1. 缓冲区...
RS
232
串口
驱动程序
调试过程中可能遇到的
问题
包括
数据
丢失
、乱码、通信错误等,这些
问题
可能源于硬件故障、驱动程序错误、电缆
问题
或者通信协议设置不当。 在提供的压缩包中,"RS
232
"这个文件很可能是驱动程序的安装文件或者是包含了...
C#版
串口
通信编程(
接收
和发送
数据
)
本主题聚焦于使用C#进行
串口
通信的编程,涉及如何
接收
和发送
数据
。C#作为一种面向对象的编程语言,提供了丰富的库和API,使得
串口
通信变得相对简单和直观。 首先,我们需要了解
串口
通信的基础概念。
串口
通信,也...
VB
16,718
社区成员
110,522
社区内容
发帖
与我相关
我的任务
VB
VB技术相关讨论,主要为经典vb,即VB6.0
复制链接
扫一扫
分享
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章