VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 190|回复: 3

[求助] 串口通信事件

[复制链接]
81_avatar_middle
online_vip06 沉浮AA 发表于 2018-12-5 14:52:55 | 显示全部楼层 |阅读模式
3驿站币
在打开串口后,我把WaitCommEvent()放在一个线程里面,当读缓冲区接收到数据后就提示去读缓冲区,
但是发现一旦有数据进来,WaitCommEvent()会有两次返回true,也就是说会提示两次。
想知道为什么会这样,WaitCommEvent()的机制是怎样的?
还是说我的方法不对?
求有经验的前辈指教......





上一篇:头文件重复包含
下一篇:两张表的名称字段名一致,联合查询怎么提取

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-12-5 15:36:54 | 显示全部楼层
对返回的长度加下判断就可以了,具体可以看看这个:
串口问题:关于EV_RXCHAR事件的疑惑 :
https://bbs.csdn.net/topics/50181122

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

81_avatar_middle
ico_lz  楼主| 沉浮AA 发表于 2018-12-5 17:49:12 | 显示全部楼层
串口检测到输入缓存区有数据就发生事件检测提示,然后CPU再去读数据,是这样子的吗、
还是说输入缓存区的数据已经完全被CPU读进来了,才发生事件检测提示

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

78_avatar_middle
在线会员 xiazhifei 发表于 4 天前 | 显示全部楼层
我认为目前最好的通用读串口的方法应该是基于时间片的读取,
基本原理如下:
数据帧与数据帧之间一般是有时间间隔的,如果检查出有一段时间没有数据,那就可以判断为数据帧间隔了。

基本方法如下:

开一个多媒体定时器,比如每隔10ms执行一次,然后定时检查串口硬件缓存中的数据,如果前后两次数量一致,表示以上是完整的一帧数据,再从串口硬件缓存中取出全部数据。当然还要做一些简单的判断和处理。

优点:
多媒体定时器自动开线程,稳定可靠

缺点:
时间间隔太短的不行,比如1ms以下的肯定不行,5ms以下的USB转串口模块估计不行

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-14 00:56

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表