fbwcpu 发表于 2022-9-11 20:10:00

C#做的串口监听小软件.数据量比较大,按键点不开,怎么处理?

C#做的串口监听小软件,数据量比较大,按键点不开,怎么处理呀?

串口不停的有数据进来(50ms一帧),接收并顺次追加显示在TextBox界面上,这都很正常,但是就在这时候候按键要点几十下才偶尔有效。还有下拉菜单,一点又缩回去了。

68336016 发表于 2022-9-11 20:18:05

C#不了解,不过一般接收处理数据不是放在另外线程的么?跟主界面分开,通过消息之类传送到主界面线程,不然的话主界面就得卡死了

dellric 发表于 2022-9-11 20:18:38

每个串口一个线程,阻塞+接收限时,不影响主线程刷UI

留声而过 发表于 2022-9-11 21:51:09

你把接收和刷新的代码发上来截图看看

wye11083 发表于 2022-9-11 22:00:13

数据量特别大不要用定时器刷新界面。

天下乌鸦一般黑 发表于 2022-9-11 22:13:18

本帖最后由 天下乌鸦一般黑 于 2022-9-11 22:16 编辑

我的处理方式是。和单片机类似。
串口收发数据和ui没关系,就是放进buffer里。这个过程不要去做什么托管更新ui之类的,就只是缓存好数据,处理好协议解析。
然后你单独开个线程,刷新ui就行了。
这个方式500hz的帧率依然没问题。
如果在串口里触发ui,会引入非预期的结果。你可以测试下。
比如在串口收发过程中,你用鼠标左键,点击winform的窗体,按住不动,你会发现,如果此时用chart绘图,用鼠标点击住winform窗体不松开,会丢数据,不连贯了。

cnxh 发表于 2022-9-12 08:21:38

多进程   
页: [1]
查看完整版本: C#做的串口监听小软件.数据量比较大,按键点不开,怎么处理?