我不知怎么贴图,我把程序放在word中了。
因为上位机PC发送数据的长度和时间都是随机的,Read循环的delay不管怎么调整应该都会遇到当执行VISA Read时,上位机正在发送数据,恰巧部分数据被接受到了,Read读到部分数据即返回的巧合。
可以试一下Enable Terminal Character,并把Terminal Character设为'\n',还有read buffer size设为常数。上位机发送的字符串都以'\n'结尾,看下是不是能够接受完一帧即返回。
用'\n'作为发送字符串的结束符,LabVIEW在VISA Read接收数据的时候一旦判断出当前已经接受到'\n',则会将之后的数据暂时放在硬件缓存自己立刻返回。这样若read size足够大,那么VISA Read不会因为缓存满返回,而只可能是接收到'\n',即可保证一帧数据完整接收。