社区
硬件/系统
帖子详情
使用CSerialPort串口编程,如何判断没有收到字符?
brk1985
2012-06-01 11:19:22
有字符收到触发OnCommunication函数,如果没有收到字符,OnCommunication函数收不到字符信息,怎么判断?
希望实现这样的功能:如果在规定的时间范围(比如5分钟)内,没有收到字符,就假定串口断开、重新发送串口连接命令。
PS:貌似串口有设置超时,一点没起到作用。。。
...全文
379
9
打赏
收藏
使用CSerialPort串口编程,如何判断没有收到字符?
有字符收到触发OnCommunication函数,如果没有收到字符,OnCommunication函数收不到字符信息,怎么判断? 希望实现这样的功能:如果在规定的时间范围(比如5分钟)内,没有收到字符,就假定串口断开、重新发送串口连接命令。 PS:貌似串口有设置超时,一点没起到作用。。。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Saleayas
2012-07-11
打赏
举报
回复
设置一个类似看门狗的东西。
它不停的计时,到指定的时候,就认为串口断开。
而当接受到任何一个数据的时候,就把它的计数器置0,这就是通常所说的喂狗。
FrankieWang008
2012-07-11
打赏
举报
回复
自己手写一个Ontimer事件处理函数,来处理超时处理吧
brk1985
2012-07-11
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
可以这么用:
当发送数据后,用
DWORD dwEnd = ::GetTickCount() ;
得到当前时间,ms级
然后实时判断是否超时即可。
1、用For/While判断
2、在OnTimer()里比较发送时时间
[/Quote]
还以为没人回复了!!!
我后来使用定时器完成了该功能,用定时器设置间隔时间、比如5s,设置一个接收标志位,如果定时器执行的时候仍为“未收到”状态,则判断串口未连接(无收到字符)。
和你所讲的还是有所区别。。。你的思路还是让人觉得有点模糊。。。
fronz
2012-07-07
打赏
举报
回复
不知道你说的串口类的组成,一般来说是没有超时事件触发的,自己设置读超时和读间隔超时事件,改大到5分钟。
elautoctrl
2012-07-05
打赏
举报
回复
用状态机+定时器应该可以解决吧
我就是这么做的
tomyi
2012-07-05
打赏
举报
回复
可以这么用:
当发送数据后,用
DWORD dwEnd = ::GetTickCount() ;
得到当前时间,ms级
然后实时判断是否超时即可。
1、用For/While判断
2、在OnTimer()里比较发送时时间
一条晚起的虫
2012-06-26
打赏
举报
回复
PS:貌似串口有设置超时,一点没起到作用。。。
// 串口超时设置肯定有作用的。
// CSerialPort是用Comm Event出发的,看看Comm Event注册了哪几个?超时的标志注册了没?
brk1985
2012-06-01
打赏
举报
回复
期待高手的出现啊。。。
brk1985
2012-06-01
打赏
举报
回复
继续求助中。。。
串口
通信--
CSe
ria
l
port
类
VS2013下
使用
CSe
ria
l
Port
类进行
串口
通信
MFC之
CSe
ria
l
Port
类双
串口
发送接收
MFC之
CSe
ria
l
Port
类双
串口
发送接收 1、 基本框架 添加
CSe
ria
l
Port
(.c、.h)文件添加到相应位置。 创建对象和函数
CSe
ria
l
Port
m_Se
ria
l
Port
1, m_Se
ria
l
Port
2; afx_msg LONG CDouble
Port
Dlg::OnComm(WPARAM ch, LPARAM
port
);//此函数接
收到
一个
字符
执行一次 指
CSe
ria
l
Port
多线程
串口
编程
工具详解
1.前言 既然有了MSComm这种简单粗暴的控件,为什么还需要
CSe
ria
l
Port
类?这是因为与前者相比,这个类在程序的发布上不需要加入其他的文件,而且
CSe
ria
l
Port
提供给我们的函数都是开放透明的,允许我们进行二次改造。
CSe
ria
l
Port
类是一个非常好用的多线程
串口
编程
工具,可以在很短的时间就可以完成一个
串口
通讯框架的搭建,所以有必要加以记载! 2.
CSe
ria
l
利用
CSe
ria
l
Port
类进行通信
串口
示例代码: 打开
串口
CSe
ria
l
Port
m_
Port
; //
CSe
ria
l
Port
类对象 if (m_
Port
.Init
Port
(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512)) { m_
Port
.StartMonitoring(); m_ctrlIconOpenoff.SetIcon(m_hIconRed); strStatus.Format("STATUS:
C++
编程
->基于
CSe
ria
l
Port
类的
串口
通信测试
先写一段单片机的代码,用于上位机测试。 void setup() { Se
ria
l.begin(9600); // opensse
ria
l
port
, sets data rate to 9600 bps } void loop() { // put your main code here, to run repeatedly: Se
ria
l.println(10); } 下面
硬件/系统
2,644
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章