LabVIEW被动接受下位机上传的数据,下位机每5毫秒发送一帧数据,一帧数据17字节,波特率为115200;程序是用的生产者-消费者结构,利用队列进行传递,串口在生产者循环中的事件结构超时分支读取数据进队列,,超时时间设为4ms,在消费者循环中出队列解析数据并进行相关处理,但是会有很多数据帧丢失,1s应该收到200帧数据,但解析出来的只有100多帧,被丢弃的数据帧格式也没出错,怎么解决这个问题啊?谢谢!
LABVIEW不能保证4毫秒的精确定时,事件结构超时尤其如此。一次多读几帧,比如10帧,这样循环时间为50毫秒。注意读取时不需要定时,串口读函数自己保证。
您好,把程序生产者循环中的事件结构删掉,直接将串口读数据放在生产者while循环中,等待时间为50ms,将读出的数据进队列,然后再消费者循环中出队列,解析处理数据,但现在每秒处理的数据只有10帧左右,比之前的还要少很多,是我的程序结构有问题吗?但是直接放在一个while循环中读数据然后处理数据,速度也是10帧左右。
这是生产者-消费者结构,消费者循环中1s能处理的数据帧数与在一个while循环中实现所处理的数据帧数差不多,都是10帧左右,与应该解析200帧数据的数据量差很多。