社区
C#
帖子详情
继续串口通信问题?
pfworld
2009-12-21 07:51:16
因为在主界面要使用3个以上的SerialPort,而且大部分接受连续发送数据的设备,再加上用远程视频,所以系统资源消耗比较大,容易造成UI卡死,寻求多线程解决方案!
以前使用自定义控件做了一个显示SerialPort数据的LED屏,后来发现容易卡死,因此显示和读取分开写,读取SerialPort数据后放进缓冲区内,然后使用线程更新LED显示控件,不知道这样行得通?或者大家有什么好的方案请帮忙!(回帖有分)
...全文
382
32
打赏
收藏
继续串口通信问题?
因为在主界面要使用3个以上的SerialPort,而且大部分接受连续发送数据的设备,再加上用远程视频,所以系统资源消耗比较大,容易造成UI卡死,寻求多线程解决方案! 以前使用自定义控件做了一个显示SerialPort数据的LED屏,后来发现容易卡死,因此显示和读取分开写,读取SerialPort数据后放进缓冲区内,然后使用线程更新LED显示控件,不知道这样行得通?或者大家有什么好的方案请帮忙!(回帖有分)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lijianfan
2010-06-08
打赏
举报
回复
兄弟!!!我最近也在搞那个,,,可我一点头绪也没有。。。要显示汉字好像要调用字库HZK16 ..能否将你的源代码给我看看。。。QQ550304122 搞了好多天了。。。希望你能帮我。。。
TANGLIJUNASP
2010-03-25
打赏
举报
回复
版主,把源码提供出来,参考一下,我也在做类似项目
有同感,方便的话发我邮箱也可以,tljchina001@163.com
pfworld
2010-01-14
打赏
举报
回复
up!
yccwt
2010-01-06
打赏
举报
回复
嗯,将UI和数据处理分开
chenglidexiaoxue
2010-01-06
打赏
举报
回复
直接使用API最好,可以更自由一些,资源消耗也少些,我在WINCE下测试过serialport这个串口封装类,长时间的接收数据,内存使用量会一直增加,当然会有个峰值,之后不再增加,但相当一部分的内存使用是释放不掉的,这和.NET垃圾处理机制是有关系的,除非你把serialport对象CLOSE掉才可以释放内存。
建议楼主在后台用一个固定的线程在一个合适的间隔时间内去读取3个串口的缓冲区,这样好控制,不要用serialPort1_DataReceived,这个触发一次就是抛出一个线程,多个线程都去争抢CPU当然容易卡死。
当然后台刷新UI也要有排队机制,最好加个LOCK,等上个数据包更新UI后,Sleep下,下个数据包再刷
yilaozhuang
2010-01-06
打赏
举报
回复
到底用MSCOMM好呢,还是serialport好呢?或者MFC呢
redlei
2010-01-04
打赏
举报
回复
UP一下
pfworld
2010-01-04
打赏
举报
回复
寻求帮助!!
zhoudan3986226
2010-01-03
打赏
举报
回复
我也写过一个无线串口接收数据的 还好啊 你吧接收和显示的写开就行了
pfworld
2010-01-03
打赏
举报
回复
[Quote=引用 22 楼 freeboy827 的回复:]
1毫秒刷一次啊,有这个必要吗
[/Quote]
测试!这个是用来降低系统性能的!极限测试!
freeboy827
2010-01-02
打赏
举报
回复
1毫秒刷一次啊,有这个必要吗
pfworld
2010-01-02
打赏
举报
回复
元旦自己顶!!
wzrj2008
2009-12-30
打赏
举报
回复
顶 一下
pfworld
2009-12-28
打赏
举报
回复
晕,自己UP一下!!
pfworld
2009-12-25
打赏
举报
回复
如何把控件运行在非UI线程中?比如说:串口、Timer、datagridview等!
ld6886
2009-12-25
打赏
举报
回复
根据楼主的描述是将数据的处理放在UI中了,所以才有低波特率下的问题。
将数据处理放到另一个线程中(或另几个线程中,根据具体的情况决定),不要在UI中放任何数据处理的代码。
这是UI的基本要求。
mjp1234airen4385
2009-12-25
打赏
举报
回复
自定义控件也是在主线程里跑的。
除非你放在子线程里定义才行的。
最好是用多线程。
pfworld
2009-12-25
打赏
举报
回复
解决方案1:在serialPort1_DataReceived内读取数据,分析数据后赋值到变量,然后传值到自定义控件LED显示数值,用户取值时直接读取变量值。
解决方案2:在serialPort1_DataReceived内读取数据,使用Timer每1/100秒读取serialPort1_DataReceived数据,分析数据后赋值到变量,然后传值到自定义控件LED显示数值,用户取值时直接读取变量值。
问题:使用解决方案1 UI有时有点卡,使用解决方案2时 数据不能同步!
michaelnami
2009-12-24
打赏
举报
回复
就用线程就好 但是注意屏幕不要实时显示 这样及其容易卡死
wutb2001
2009-12-24
打赏
举报
回复
帮顶
加载更多回复(12)
串口检测软件能够监测串口数据
串口,即RS-232串行通信接口,是计算机硬件中常见的一种通信接口,用于设备间的异步数据传输。串口检测软件则是专门设计来帮助开发者或技术人员查看通过串口进行的数据交换情况。 标题中提到的“串口检测软件能够...
串口虚拟串口
总之,虚拟串口技术是现代计算机与传统串行设备通信的重要桥梁,它通过软件手段解决了硬件接口的兼容性
问题
,让旧的串口应用程序能够在新的计算环境中
继续
发挥效用。通过虚拟串口,无论是USB设备、网络连接还是其他...
串口转换驱动
总的来说,串口转换驱动是连接现代计算机与串行设备的关键,它使得那些仍然依赖串行通信的设备能够在不断发展的技术环境中
继续
发挥作用。理解和掌握串口转换驱动的使用,对于解决涉及
串口通信
的
问题
至关重要。
串口转USB驱动程序
在现代计算机中,由于内部设计的变化,串口逐渐被USB接口取代,但许多工业设备、测量仪器以及老式打印机等仍然依赖串行接口。串口转USB驱动程序的作用就是建立两者之间的桥梁。 **驱动程序概述** 驱动程序是操作...
CH430串口转USB驱动
CH430串口转USB驱动是将传统的串行接口(如RS-232)转换为USB接口的硬件设备,常用于老旧设备与现代计算机的连接,因为现代计算机往往不再提供串口。CH430芯片是实现这种转换的核心元件,它是一个微控制器,具有集成...
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章