cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 2340|回复: 16

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

[复制链接]
发表于 2018-8-31 10:45:31 | 显示全部楼层 |阅读模式
本帖最后由 ssmyjiob 于 2019-9-25 11:47 编辑

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

这四个模块主要为了实现数据的实时快速接收处理显示,但是在调试上需要下很大的功夫,本方案有不足的地方请指教,如若谁有更好的方案望能共享,共同进步。谢谢
发表于 2018-8-31 11:37:50 | 显示全部楼层
本帖最后由 cvifan 于 2018-8-31 11:42 编辑

感谢分享,赞
 楼主| 发表于 2018-8-31 11:43:36 | 显示全部楼层

个人思路,有不合适的地方可以指出
发表于 2018-9-23 18:54:52 | 显示全部楼层
 楼主| 发表于 2018-9-26 16:54:42 | 显示全部楼层
hewusd 发表于 2018-9-23 18:54
线程信号灯问题没有考虑

愿闻其详
发表于 2018-11-3 16:40:04 | 显示全部楼层
没啥,只是觉得用中断处理比较好,效率比较高,稳定一些。
 楼主| 发表于 2018-11-19 12:26:36 | 显示全部楼层
hewusd 发表于 2018-11-3 16:40
没啥,只是觉得用中断处理比较好,效率比较高,稳定一些。

串口中断小批量数据可以,高速大数据就容易出现不稳定因素,比如:在传输数据过程中操作面板控件,容易导致接收卡顿,而且假如数据处理慢容易显示不全,丢失数据。
发表于 2018-12-3 11:05:33 | 显示全部楼层
你好,我现在是这样的我电脑连接的fpga1ms向我电脑发送一条数据包10多个字节的,我在串口回传函数中将标志位置1的,并另外开了一个线程一旦标志位置1,即将数据包进行解析存储到buff中,但调试后我发现会丢失很多数据包,有什么解决办法吗?用你说的安全队列可以解决吗???
发表于 2019-9-18 16:45:32 | 显示全部楼层
不错!感谢分享!
 楼主| 发表于 2019-9-19 08:40:05 | 显示全部楼层

1 串口接收2 写入安全队列
3 开辟线程读安全队列
4 数据处理 显示
发表于 2019-9-22 21:32:11 | 显示全部楼层
回复

使用道具 举报

发表于 2019-9-23 08:46:23 | 显示全部楼层
感觉这位哥们儿是删除了附件
发表于 2019-9-23 08:46:49 | 显示全部楼层
哦不好意思,这里是labwindows/cvi的分区,我以为是labview
 楼主| 发表于 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
实际测试发现,数据量大时会产生死机,再串口回调中死,提示超过串口缓存的数组了。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-5 01:00 , Processed in 0.845656 second(s), 5 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表