C# 显示雷达目标实时轨迹,不延时

一开始的模式:
开两个线程,一个线程A用于接收CAN数据,将解析的数据,堆入到Q堆栈中;
另开一个线程B,用于从Q堆栈中将数据取出来,根据标志信息将同一帧的数据放入到同一队列中,每收集完一帧数据,触发界面显示事件,将队列数据databind到指定的chart.series中。(用databind的好处是,不会闪屏,可以直观的看到目标检测是否稳定,不要用clear,显示效果不好);
问题:目标点迹少的情况,还好;点迹一多,入栈快,而取数据的速度跟不上,(关键耗时的地方是触发显示时间),这样堆栈里的数据越积越多,就出现了显示轨迹延时现象。

优化:
思路:显示没必要用触发模式,取消处理线程时间;既然主要耗时是显示,而显示又没必要每个帧都显示,只要保持最新的帧,用于显示就好了;
处理:将显示的内容用全局变量(主要还是队列或字典啦)存储,利用定时器,定时将他们绑定到chart.series的points上;偷懒,直接把B线程删了,直接在接收线程A里,将同一帧的数据堆到全局变量中(注意中转),用于更新显示点迹。

写的有些乱,基本功能可以实现,可以轻松应对雷达帧处理时间,做到无延时显示~
tuxiaobai_2015

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值