ssmyjiob 发表于 2018-8-31 10:45:31

怎么处理好多线程与串口通信的关系!!!

本帖最后由 ssmyjiob 于 2019-9-25 11:47 编辑

1 串口接收
2 写入安全队列
3 开辟线程读安全队列
4 数据处理 显示
这四个模块主要为了实现数据的实时快速接收处理显示,但是在调试上需要下很大的功夫,本方案有不足的地方请指教,如若谁有更好的方案望能共享,共同进步。谢谢

cvifan 发表于 2018-8-31 11:37:50

本帖最后由 cvifan 于 2018-8-31 11:42 编辑

感谢分享,赞

ssmyjiob 发表于 2018-8-31 11:43:36

cvifan 发表于 2018-8-31 11:37
感谢分享,赞

个人思路,有不合适的地方可以指出

hewusd 发表于 2018-9-23 18:54:52

线程信号灯问题没有考虑

ssmyjiob 发表于 2018-9-26 16:54:42

hewusd 发表于 2018-9-23 18:54
线程信号灯问题没有考虑

愿闻其详

hewusd 发表于 2018-11-3 16:40:04

没啥,只是觉得用中断处理比较好,效率比较高,稳定一些。

ssmyjiob 发表于 2018-11-19 12:26:36

hewusd 发表于 2018-11-3 16:40
没啥,只是觉得用中断处理比较好,效率比较高,稳定一些。

串口中断小批量数据可以,高速大数据就容易出现不稳定因素,比如:在传输数据过程中操作面板控件,容易导致接收卡顿,而且假如数据处理慢容易显示不全,丢失数据。

potent_ 发表于 2018-12-3 11:05:33

你好,我现在是这样的我电脑连接的fpga1ms向我电脑发送一条数据包10多个字节的,我在串口回传函数中将标志位置1的,并另外开了一个线程一旦标志位置1,即将数据包进行解析存储到buff中,但调试后我发现会丢失很多数据包,有什么解决办法吗?用你说的安全队列可以解决吗???

yhabcd2003yhxy 发表于 2019-9-18 16:45:32

不错!感谢分享!

ssmyjiob 发表于 2019-9-19 08:40:05

yhabcd2003yhxy 发表于 2019-9-18 16:45
不错!感谢分享!

1 串口接收2 写入安全队列
3 开辟线程读安全队列
4 数据处理 显示

zwlysm 发表于 2019-9-22 21:32:11

看不到啊

tester 发表于 2019-9-23 08:46:23

感觉这位哥们儿是删除了附件

tester 发表于 2019-9-23 08:46:49

哦不好意思,这里是labwindows/cvi的分区,我以为是labview

ssmyjiob 发表于 2019-9-24 08:58:02

tester 发表于 2019-9-23 08:46
感觉这位哥们儿是删除了附件

调试发现了点问题,最后准备修改在上传,一直在忙不好意思

安静的矩形 发表于 2020-9-2 14:33:03

ssmyjiob 发表于 2018-11-19 12:26
串口中断小批量数据可以,高速大数据就容易出现不稳定因素,比如:在传输数据过程中操作面板控件,容易导 ...

你好,这种情况怎么解决呢,我这样做的,不行。
1串口回调中读取数据,并写入安全队列,置为辅助线程处理标志
2辅助线程中判断标志,如果置位,说明已经完成一次接收,在此读取安全队列数据,并将数据显示到textbox
实际测试发现,数据量大时会产生死机,再串口回调中死,提示超过串口缓存的数组了。


页: [1] 2
查看完整版本: 怎么处理好多线程与串口通信的关系!!!