社区
C#
帖子详情
串口通信未收到数据的处理方法
zhxingway1
2010-01-13 09:04:12
你好,感谢你阅读此帖.
我在VS2005中用串口控件SerialPort的时候,接收数据用DataReveived事件,
用户在打开错误的串口的时候,是没有数据可以接收的,这样就不会触发触发DataReveived事件
那么我应该怎么做才能在接收不到数据的时候给出一个提示给用户呢?
另外就是怎样在接收数据超时的时候也给出一个提示给用户呢?
我搜索了好久都没有找到答案,
期待你的解答.谢谢.
祝你工作顺利,身体健康!
...全文
468
14
打赏
收藏
串口通信未收到数据的处理方法
你好,感谢你阅读此帖. 我在VS2005中用串口控件SerialPort的时候,接收数据用DataReveived事件, 用户在打开错误的串口的时候,是没有数据可以接收的,这样就不会触发触发DataReveived事件 那么我应该怎么做才能在接收不到数据的时候给出一个提示给用户呢? 另外就是怎样在接收数据超时的时候也给出一个提示给用户呢? 我搜索了好久都没有找到答案, 期待你的解答.谢谢. 祝你工作顺利,身体健康!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
x2635340408
2011-10-17
打赏
举报
回复
[Quote=引用 2 楼 zhxingway1 的回复:]
我是在DataReveived事件中放一个Byte数组,
但是如果没有数据的话,我的DataReveived事件都不会触发啊.那我就判断不了了,,其实我已经把问题解决了,
思路就是DataReveived事件放一个Bool变量
然后用一个定时器在一定时间后根据这个变量来判断有没有接收到数据
明天把代码发出来
[/Quote]代码呢
Lee
2010-01-14
打赏
举报
回复
已经 明白了
Lee
2010-01-14
打赏
举报
回复
多谢 zhxingway1
zhxingway1
2010-01-14
打赏
举报
回复
关键字:串口通信,超时,SerialPort,串口,
zhxingway1
2010-01-14
打赏
举报
回复
[Quote=引用 6 楼 leek 的回复:]
SerialPort的 接收数据用DataReveived事件 处理过程,如果把读取的数据返回到窗体的文本框 就出现错误提示 :不是这个窗体创建的线程。 但是 使用messagebox 输出数据 没有错误提示 ,
这是怎么回事?改如何解决?
[/Quote]
请参考:(如何:对 Windows 窗体控件进行线程安全调用)
http://msdn.microsoft.com/zh-cn/library/ms171728(VS.80).aspx
zhxingway1
2010-01-14
打赏
举报
回复
问题解决,谢谢大家
Uncle_Yong
2010-01-14
打赏
举报
回复
首先,你得定义你得“未接受到数据”,什么叫“未接受到数据”,是发送数据后一定时间内没有响应就是未接受到数据吗?
如果是这样,加Timer,在发送数据后启动Timer,在DataReveived事件中(接收到数据了)停止Timer;Timer事件中(未接受到数据)给出未接受到数据。
michaelnami
2010-01-14
打赏
举报
回复
用户在打开错误的串口的时候
那你直接提示错误并终止当前接收不就好了
Lee
2010-01-14
打赏
举报
回复
SerialPort的 接收数据用DataReveived事件 处理过程,如果把读取的数据返回到窗体的文本框 就出现错误提示 :不是这个窗体创建的线程。 但是 使用messagebox 输出数据 没有错误提示 ,
这是怎么回事?改如何解决?
wlglala
2010-01-14
打赏
举报
回复
定义定时器,在定时器中检测
freeboy827
2010-01-14
打赏
举报
回复
搞个全局变量,
http://topic.csdn.net/u/20100112/14/d78a7204-cbec-4992-aff4-b9be94ae2433.html
请参考这里我的回复
sito_hongta
2010-01-14
打赏
举报
回复
純支持
zhxingway1
2010-01-13
打赏
举报
回复
我是在DataReveived事件中放一个Byte数组,
但是如果没有数据的话,我的DataReveived事件都不会触发啊.那我就判断不了了,,其实我已经把问题解决了,
思路就是DataReveived事件放一个Bool变量
然后用一个定时器在一定时间后根据这个变量来判断有没有接收到数据
明天把代码发出来
yinrongg
2010-01-13
打赏
举报
回复
用bytes数组接收发来的数据,如果接收缓冲区为空就是代表没 数据啊,这样用label提示无数据。还要怎么提示呢?
PIC16F1946
串口通信
程序
本资源包含一个基于pic16f1946的简单的
串口通信
工程。当串口
收到
一串
数据
后,蜂鸣器发出声响一声。同时将
收到
的
数据
发送出来。
Linux C语言实现串口收发
数据
基于Linux使用C语言实现的一个串口通讯Demo,实测可用。
MFC串口通讯接受
数据
双缓冲画波形图
采用api串口通讯技术,线程
处理
方式接受发送union
数据
转为float,将float以波形画出来显示在界面
单片机串口缓存
处理
架构.html
我们知道的串口收发都是:接收一个
数据
,触发中断,然后把
数据
发回来。这种
处理
方式是没有缓冲的,当数量太大的时候,亦或者当
数据
接收太快的时候,我们来不及
处理
已经
收到
的
数据
,那么,当再次
收到
数据
的时候,就会将之前还
未
处理
的
数据
覆盖掉。那么就会出现丢包的现象了,对我们的程序是一个致命的创伤;于是就自己写了个缓冲区,代价就是消耗一部分内存空间,时间-空间本来就是一对矛盾体,想减少
串口通信
中
数据
丢失问题只能牺牲部分空间,来减少
数据
通信过程中的丢失问题
串口通信
非阻塞
串口通信
非阻塞方式,发送
数据
,接收
数据
并保存到文件(当间隔n毫秒没有再
收到
数据
表示一次接收完毕,将
数据
保存到文件)
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章