社区
C#
帖子详情
多线程利用serialport控件接收串口数据并在界面显示,数据更新很慢
棉花糖_码农夜读
2009-07-30 02:02:35
我用serialport控件,新建一个辅助线程用来接收数据,并在界面上实时的显示接收到得数据,一共10组,然后在一个定时器里不断的调用显示的子程序,定时60ms,可是数据并不能在这个时间里进行更新,数据更新速度很慢,我现在总觉得问题在,接收和显示,这两个没协调好,好像调用显示时数据没准备好,请高手帮忙,谢谢大家,我的QQ是373314575,邮箱是liupenglily@163.com,希望和大家共同学习,共同提高!
...全文
760
13
打赏
收藏
多线程利用serialport控件接收串口数据并在界面显示,数据更新很慢
我用serialport控件,新建一个辅助线程用来接收数据,并在界面上实时的显示接收到得数据,一共10组,然后在一个定时器里不断的调用显示的子程序,定时60ms,可是数据并不能在这个时间里进行更新,数据更新速度很慢,我现在总觉得问题在,接收和显示,这两个没协调好,好像调用显示时数据没准备好,请高手帮忙,谢谢大家,我的QQ是373314575,邮箱是liupenglily@163.com,希望和大家共同学习,共同提高!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
棉花糖_码农夜读
2009-08-05
打赏
举报
回复
我现在刚改成委托了,但是还是不能正常的更新数据,我是在显示那里用的委托,贴点代码吧,这样看更清楚,
private void disp() //对处理后的数据在界面上进行显示
{
label31.Invoke(new EventHandler(delegate
{
label31.Text = cunt.ToString();
}));
if (address == 112)
{
switch (fun_code)
{
case 80: //实时浓度
gas_value1.Invoke(new EventHandler(delegate
{
gas_value1.Clear();
gas_value1.SelectionFont = new Font("宋体", 10, System.Drawing.FontStyle.Bold);
gas_value1.SelectedText = ' ' + gas_value.ToString();
}));
break;
case 39: //上限
gas_alarm_up1.Invoke(new EventHandler(delegate
{
gas_alarm_up1.Clear();
gas_alarm_up1.SelectionFont = new Font("宋体", 10, System.Drawing.FontStyle.Bold);
gas_alarm_up1.SelectedText = ' ' + gas_alarm_h.ToString();
}));
break;
case 41: //下限
gas_alarm1.Invoke(new EventHandler(delegate
{
gas_alarm1.Clear();
gas_alarm1.SelectionFont = new Font("宋体", 10, System.Drawing.FontStyle.Bold);
gas_alarm1.SelectedText = ' ' + gas_alarm_l.ToString();
}));
break;
}
这是一部分,然后我就在辅助线程调用的接收数据的方法里调用这个显示,结果还是不行,不知道什么原因?
ttianqq
2009-08-03
打赏
举报
回复
在线程里用委托,直接就能更新界面了,最好用异步委托,这样你的数据发送的再快也没问题
棉花糖_码农夜读
2009-08-03
打赏
举报
回复
大家帮忙给看看啊,帮帮忙吧
棉花糖_码农夜读
2009-08-01
打赏
举报
回复
我现在就没有用datarecive事件。
棉花糖_码农夜读
2009-08-01
打赏
举报
回复
我用的是线程,不用定时器,怎么更新界面显示的数据,怎么回调?
qldsrx
2009-07-31
打赏
举报
回复
根本用不着定时器的,收到一组数据后直接回调显示即可。
黑脚印_DarkSpoor
2009-07-31
打赏
举报
回复
60ms更新一次,更新后加
Application.DoEvents();
更新有必要这么快吗?人的反应有这么快么?
棉花糖_码农夜读
2009-07-31
打赏
举报
回复
大家谁帮帮忙呀
风之影子
2009-07-31
打赏
举报
回复
根本用不着定时器的,收到一组数据后直接回调显示即可。
顶
四更山吐月
2009-07-31
打赏
举报
回复
新建一个线程来接收??
返回数据写在datareceived事件中就行了。
你设置一个缓冲区,datareceived触发的时候就将信息存入缓冲区中。当数据全部接收上来了,触发一个信号量,给线程。
你只需要开一个线程,访问缓冲区就行了。
棉花糖_码农夜读
2009-07-31
打赏
举报
回复
[Quote=引用 3 楼 qldsrx 的回复:]
根本用不着定时器的,收到一组数据后直接回调显示即可。
[/Quote]
怎么回调呀,我的接受和显示不是一个线程,显示是主线程完成的,接受是辅助线程!您看该怎么实现
棉花糖_码农夜读
2009-07-31
打赏
举报
回复
因为我的不是一组数据一共30组数据呢
ygnews2008
2009-07-31
打赏
举报
回复
这种情况不是直接用委托来做就好了,速度快得很。
利用
Se
ria
l
Port
控件
实现PC与PC
串口
通信(事件方式&查询方式)
在本文中,我们将深入探讨如何使用C#中的
Se
ria
l
Port
控件
来实现在两台个人计算机(PC)之间的串行通信。
串口
通信是设备间进行
数据
传输的一种常见方法,尤其适用于短距离通信。
Se
ria
l
Port
控件
是.NET Framework提供的一...
C#上位机
串口
接收
数据
并绘图
由于
串口
接收
和UI
更新
可能在不同的线程中执行,因此需要确保在
更新
UI时使用正确的同步机制,比如使用`Control.Invoke`或`Control.BeginInvoke`。 综上所述,通过C#上位机编程,我们可以实现
串口
通信,
接收
下位机...
VS2008
串口
MSComm和
Se
ria
l
Port
在IT行业中,
串口
通信是设备之间
数据
交换的重要方式,尤其是在嵌入式系统和工业自动化...在实际应用中,还需要注意
串口
通信的同步问题、错误处理以及
多线程
环境下的并发控制,这些都是确保
串口
通信稳定可靠的关键因素。
Se
ria
l
Port
控件
的使用
###
Se
ria
l
Port
控件
的使用详解 #### 一、概述 随着.NET Framework的发展和技术的
更新
迭代,Visual Studio 6.0中广泛使用的Microsoft Communication Control (MSComm)
控件
已不再适用于现代.NET开发环境。Visual ...
c#中的
se
ria
l
port
控件
在C#编程中,`
Se
ria
l
Port
`
控件
是.NET框架...在C#中,`
Se
ria
l
Port
`
控件
结合
多线程
和线程同步机制,可以实现高效、稳定的串行通信。在设计
串口
通信程序时,理解并正确使用这些概念至关重要,以确保程序的正确性和性能。
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章