我在使用串口bytes at port时,遇到一个问题。我是用串口接收下位机发送数据,波特率是115200,下位机不停的以每秒4800字节发送数据。我用bytes at port检测此时串口缓存有多少字节数据并read,但我发现,当下位机发送数据,上位机配置好串口接收,bytes at port得等几百ms才能检测到串口缓存有3000多字节数据,此前bytes at port一直返回0。我想当串口缓存接收到数据后,即使有延迟,bytes at port也不应该等几百ms才返回串口缓存有数据吧?请问这是为什么?多谢了。
1.请您检查下程序循环读取时是否有延时函数
2.4800字节在115200下全部发送完毕本身需要333ms
3.串口默认缓冲区是4096字节,如果一次发送4800个字节的话,需要调用函数修改缓冲区大小。
4.方便的话可以把程序发过来,可以测试下是否有问题
我再我电脑上用串口调试助手每10ms发送48个字节,这样模拟你的1s中4800字节,使用下边的串口函数测试,并没有出现延迟情况,程序见附件,您可以参考
我没有说清下位机发送数据的速率:每次发送4个字节,每秒发送1200个这样的4个字节,所以我前面写的是每秒4800字节。另外,下位机是一直发送的,我是想等几十ms,就读取串口缓存里数据,不是1s读一次。我想几十ms的数据不会超过串口缓存。我是想几十ms,用bytes at Port 检测缓存里字节数,一并读取。但是就发生上面现象。谢谢。
如附件所示,是我用来测试的。帮忙看下。另外,你发的那个是LabVIEW2013,能不能保存成2012或8.6,我没做2013. 多谢
使用您的程序测试并没有出现您说的情况,这个测试程序和我那个基本一致。您可以看到测试文档中的数据,中间每隔10ms读到的数据长度是47个字节,我这边串口无法达到您说的那么大速度,不过从原理上看,是一致的,并没有延时和堆积。
您那边把设备的发送速度降下来试试会不会出现延时?例如每秒发1000个字节,每次发送一个字节。
您用串口调试工具直接查看数据会出现以上延时么?