社区
C#
帖子详情
serialport收到重复数据
dabendano
2010-03-19 05:27:45
用serialport读取短信猫短信,当往短信猫发送短信频率频繁的时候会出现重复数据
每条短信发送间隔超过10秒左右没有问题,当一条连着一条发 发送7、8条就会有几条短信重复出现
而代码中每次读取短信后都已经进行删除为什么还会读取到?
DiscardOutBuffer,DiscardInBuffer都用到了还是不行
...全文
237
9
打赏
收藏
serialport收到重复数据
用serialport读取短信猫短信,当往短信猫发送短信频率频繁的时候会出现重复数据 每条短信发送间隔超过10秒左右没有问题,当一条连着一条发 发送7、8条就会有几条短信重复出现 而代码中每次读取短信后都已经进行删除为什么还会读取到? DiscardOutBuffer,DiscardInBuffer都用到了还是不行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mr_china
2010-03-22
打赏
举报
回复
判断下是否删除成功,如果返回ok在向后执行,不返回ok则循环删除几次
dabendano
2010-03-22
打赏
举报
回复
发现用这么并不能把缓冲数据清空
DiscardOutBuffer();
DiscardInBuffer();
BytesToRead的时候有时候还会把以前的数据读出来,请问如何解决
燕闪硕
2010-03-22
打赏
举报
回复
谁来帮忙看下...
dabendano
2010-03-22
打赏
举报
回复
大哥大姐……
dabendano
2010-03-21
打赏
举报
回复
感觉不是读取的问题,是删除短信的问题吧,是不是删除短信后需要清理什么,或者删除后需要停一段时间在执行?
当不间断发送短信大于五条的时候就会出现重复,间隔时间10来秒就没有问题
风之影子
2010-03-19
打赏
举报
回复
把你接收的代码贴出来。
或者参照:
串口编程
dopsop110
2010-03-19
打赏
举报
回复
没接触过
nalisaki
2010-03-19
打赏
举报
回复
收到了,说明是不是又发送的一遍?
特别安静
2010-03-19
打赏
举报
回复
不会,帮顶
C#上位机串口编程、Modbus编程
WinForm框架 是 Windows Form 的简称,是美国微软公司Microsoft开发基于 .NET Framework 平台的桌面运用程序框架,一般使用 C#语言 编写。WinForm框架可用于设计窗体和可视控件,采用面向对象语言C#,可快速创建绚丽漂亮的基于Windows的桌面应用程序、非常适合做上位机的界面! 串口(
Se
ria
l
Port
),也称串行通讯接口(通常指COM口), 串口通信是指将
数据
一个比特一个比特地逐位进行传输的通信模式。 C#串口通信是借助一个
Se
ria
l
Port
类的对象来方便的对串口进行读写。 Modbus是一种串行通信协议,是施耐德电气发表工业标准协议。C# NModbus4库提供了ModbusMaster、ModbusSlave类来实现Modbus通讯相关的功能 本课程主要帮助学员熟练掌握C# WinForm框架上位机串口编程,Modbus协议编程,并且通过两个实战工具项目,为学习C# WinForm上位机编程 串口、Modbus编程打下坚固的基础!
c#串口通信(控制台程序)
本文介绍的是利用控制台进行串口通信,网上有很多的文章都是使用winform来介绍串口通信,有些文章并没有给出winform的UI界面,这需要我们去猜那个控件对于的代码了,这相当于费脑子。这是基于这个原因,我利用控制台程序讲解串口通信的大概流程,有什么不对的地方,请多多指教。 由于我在同一台PC机上测试并且我手头上没有串口线,不然我可以利用COM线把PC机上的COM1口和COM2口接起来的,...
C#串口通讯 接收
数据
问题
利用
Se
ria
l
Port
类与串口通讯出现两种情况:
1.接
收到
的
数据
仍旧是上次发送的
数据
。例如:第一次发送:FE2010-11-13 16:02:23EF 接收为:FE2010-11-13 16:02:23EF(第一次正确)。当下次发送为:FE2010-11-13 16:02:24EF 接收仍旧为FE2010-11-13 16:02:23EF。此处是利用Timer每秒发送一次
数据
。接收时用DataReceived事件。
2.DataReceived事件如果接收字节超过8个,则响应8的倍数
C# 串口接收1次
数据
会进入2次串口接收事件
se
ria
l
Port
1_DataReceived,第2次进入时串口缓冲区为空
在C#中使用串口接收
数据
时发现,在完整的接收完一次
数据
后,还会再次进入串口接收事件。 在网上搜索资料发现其他开发者也有遇到该问题: [1] c#串口事件接受一次
数据
莫名其妙会触发两次 原文链接:https://www.52pojie.cn/thread-1009851-1-1.html [2]
Se
ria
l
Port
object's DataReceived Event firing twice 原文链接:https://stackoverflow.com/questions/3029619...
串口接收不定长
数据
这种
数据
的接收就相对比较麻烦一点,因为格式不是固定的,没有明确的标识
数据
帧开头和结尾的特征
数据
,所以这种方式的
数据
接收往往考虑的是
数据
帧之间的间隔,根据两帧
数据
之间的间隔进行判断,设置一个时间间隔,如果符合这个时间间隔就认为
数据
的接收是有效的,否者认为无效。这种方式是使用的串口的空闲中断功能,大概原理是在串口配置开启了空闲中断时,如果接
收到
数据
之后就会启动这个串口的空闲状态检测,在一段时间串口不在
收到
数据
就会触发串口的空闲中断,告知完成一次
数据
的接收。
C#
110,528
社区成员
642,571
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章