社区
C#
帖子详情
c# 串口接收大量数据后,我要每50组数据处理一次应该怎么办?
mwn_3517
2014-02-11 03:04:15
我用串口接收数据,数据是每50ms发送一组数据,一组数据的大小事50byte,我利用事件来接收数据,接收数据远远大于50byte,但是我想每50byte处理一次,应该怎么办?
...全文
506
6
打赏
收藏
c# 串口接收大量数据后,我要每50组数据处理一次应该怎么办?
我用串口接收数据,数据是每50ms发送一组数据,一组数据的大小事50byte,我利用事件来接收数据,接收数据远远大于50byte,但是我想每50byte处理一次,应该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mwn_3517
2014-02-12
打赏
举报
回复
我说的接收的比发送的多指的设备一直在发送数据,而我需要每50组处理一次,我想将接收的数据放在队列中,然后每次取出50组进行处理
大湿级
2014-02-12
打赏
举报
回复
是用SerialPort这个控件来收发数据的吗! comP.BytesToRead得到接受的数据,然后一个循环将每50个byte输入到数组,操作数组就好了; 你得到的数据比接受的多,你还得看看。。。
编程有钱人了
2014-02-12
打赏
举报
回复
设置缓冲区啊,每次读 byte[] by=new byte[50]
mwn_3517
2014-02-12
打赏
举报
回复
具体是这样的,我要通过串口读取设备的数据,该设备是每隔50ms发送一次,停止位是oD,OA,一次发送50组,我采用SerialPort和线程实现?我想每隔50ms读取一次,然后处理。下面是代码?但是里面存在一些问题,首先是接收的数据远远大于50组,另外,我想将接收的数据处理之后,显示到界面上,但是出现不在同一线程上 private void 接收ToolStripMenuItem_Click(object sender, EventArgs e) { string rece = "SO1/n"; Serial_4612.Write(rece); ReceiveThread = new Thread(new ThreadStart(Serial_4612_DataReceived)); ReceiveThread.Start(); Thread.Sleep(50); } private void Serial_4612_DataReceived() { Byte[] receive=new Byte[4096]; int n=Serial_4612.Read(receive, 0, Serial_4612.ReadBufferSize); ByteList.Enqueue(receive); if (receive!=null) { Byte[] received = new Byte[50]; received = ByteList.Dequeue(); ProcessData(received); m++; } } private void ProcessData(Byte[] received) { int[] Channel = new int[6]; int j = 0; for (int i = 0; i < 33; i++) { if (i % 6 == 0) { Channel[j++] = received[i] * 65536 + received[i + 1] * 256 + received[i + 2]; } } if (m % 20 == 0) { txt_Channel1.Text = Channel[0].ToString(); txt_Channel2.Text = Channel[1].ToString(); txt_Channel3.Text = Channel[2].ToString(); txt_Channel4.Text = Channel[3].ToString(); txt_Channel5.Text = Channel[4].ToString(); txt_Channel6.Text = Channel[5].ToString(); } }
zhpfaff
2014-02-11
打赏
举报
回复
事件来接收数据,发多少就收多少,怎么可能收得比发得多?
C#
串口收发测试 软件创建串口
组
件,实现独立线程接收和
数据
处理
。
C#
串口收发测试 软件创建串口
组
件,实现独立线程接收和
数据
处理
。
C#
多串口通信
数据
接收处理
本源码在VS2013平台上,使用
C#
编程,实现了多串口通信的
数据
接收处理,实用性强,代码简洁,内置使用说明
C#
上位机串口编程、Modbus编程
WinForm框架 是 Windows Form 的简称,是美国微软公司Microsoft开发基于 .NET Framework 平台的桌面运用程序框架,一般使用
C#
语言 编写。WinForm框架可用于设计窗体和可视控件,采用面向对象语言
C#
,可快速创建绚丽漂亮的基于Windows的桌面应用程序、非常适合做上位机的界面! 串口(Serial Port),也称串行通讯接口(通常指COM口), 串口通信是指将
数据
一个比特一个比特地逐位进行传输的通信模式。
C#
串口通信是借助一个SerialPort类的对象来方便的对串口进行读写。 Modbus是一种串行通信协议,是施耐德电气发表工业标准协议。
C#
NModbus4库提供了ModbusMaster、ModbusSlave类来实现Modbus通讯相关的功能 本课程主要帮助学员熟练掌握
C#
WinForm框架上位机串口编程,Modbus协议编程,并且通过两个实战工具项目,为学习
C#
WinForm上位机编程 串口、Modbus编程打下坚固的基础!
C#
实现串口发送接收
数据
C#
实现串口发送接收
数据
,有简单的版本和基于协议的两种版本,完整项目文件和详细注释
添加缓存区的
C#
串口接收
在做项目时,发现
C#
串口经常会发生丢帧的情况,在发送/接收
大量
数据
时,这种状况尤为明显。因此,在对比了各种缓存处理办法的基础上,做了这个小程序。经过实测,完全可以应对48byte/5ms的
数据
量。这个小程序只做了接收部分,仅供参考~
C#
110,561
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章