NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

关于串口bytes at port

我在使用串口bytes at port时,遇到一个问题。我是用串口接收下位机发送数据,波特率是115200,下位机不停的以每秒4800字节发送数据。我用bytes at port检测此时串口缓存有多少字节数据并read,但我发现,当下位机发送数据,上位机配置好串口接收,bytes at port得等几百ms才能检测到串口缓存有3000多字节数据,此前bytes at port一直返回0。我想当串口缓存接收到数据后,即使有延迟,bytes at port也不应该等几百ms才返回串口缓存有数据吧?请问这是为什么?多谢了。

0 项奖励
1 条消息(共 9 条)
8,705 次查看

1.请您检查下程序循环读取时是否有延时函数

2.4800字节在115200下全部发送完毕本身需要333ms

3.串口默认缓冲区是4096字节,如果一次发送4800个字节的话,需要调用函数修改缓冲区大小。

4.方便的话可以把程序发过来,可以测试下是否有问题

0 项奖励
2 条消息(共 9 条)
8,692 次查看

我再我电脑上用串口调试助手每10ms发送48个字节,这样模拟你的1s中4800字节,使用下边的串口函数测试,并没有出现延迟情况,程序见附件,您可以参考

0 项奖励
3 条消息(共 9 条)
8,691 次查看

我没有说清下位机发送数据的速率:每次发送4个字节,每秒发送1200个这样的4个字节,所以我前面写的是每秒4800字节。另外,下位机是一直发送的,我是想等几十ms,就读取串口缓存里数据,不是1s读一次。我想几十ms的数据不会超过串口缓存。我是想几十ms,用bytes at Port 检测缓存里字节数,一并读取。但是就发生上面现象。谢谢。

0 项奖励
4 条消息(共 9 条)
8,686 次查看

我理解您的意思,我上边的测试与您说的差不多,程序里我是10ms读一次。我刚才按照您说的进行测试,也没有出现您的情况。可以把程序发上来么?很可能是程序的原因

0 项奖励
5 条消息(共 9 条)
8,676 次查看

如附件所示,是我用来测试的。帮忙看下。另外,你发的那个是LabVIEW2013,能不能保存成2012或8.6,我没做2013. 多谢

0 项奖励
6 条消息(共 9 条)
8,673 次查看

我刚才在我电脑上用串口调试助手,按照你发送的方法试了,也没问题。可是为什么接我的下位机就出现这样的问题?我单独用串口调试助手接收下位机发送数据看了下,也没问题啊。我再想想吧。不行就不用bytes ab port属性节点了。多谢

0 项奖励
7 条消息(共 9 条)
8,666 次查看

使用您的程序测试并没有出现您说的情况,这个测试程序和我那个基本一致。您可以看到测试文档中的数据,中间每隔10ms读到的数据长度是47个字节,我这边串口无法达到您说的那么大速度,不过从原理上看,是一致的,并没有延时和堆积。

您那边把设备的发送速度降下来试试会不会出现延时?例如每秒发1000个字节,每次发送一个字节。

您用串口调试工具直接查看数据会出现以上延时么?

下载全部
0 项奖励
8 条消息(共 9 条)
8,654 次查看

如果不用bytes at port,直接给读串口函数则没有问题。多谢帮忙。

 

0 项奖励
9 条消息(共 9 条)
8,643 次查看