关于串口的一个奇怪问题!
时间:12-13
整理:3721RD
点击:
我的目的是用电脑和单片机通过串口传输十进制为0~255的数据。现在我把两台电脑用串
口线连上后,编了一个发送数据(write.vi)和接收数据(Read.vi)的调试程序。
问题是:当发送的十进制数对应的ASCII码为可显示的字符时,发送和接收都没有问题,当
发送的十进制数(>=129)对应的ASCII码为不可显示字符时,接收方就不能正确的接收数据
了。其症状是:运行write.vi后运行Read.vi时所显示的接收到的字节数是正确的,但是转
换过来的数据却不够数。比如我那边发送26个数,这边缓冲区显示的也是26个字符,但是
接收到的却是15个数,如果再运行一次read.vi,则能正确的接收到剩下的11个数据。我曾
怀疑是缓冲区太小的缘故,但是在read.vi中加上VISA set I/O Buffer Size这个节点后根
本就接收不到数据了,而且我觉得26个字符也跟本不会超出缓冲区的 。各位高手帮我看看
问题出在哪了。
.13
口线连上后,编了一个发送数据(write.vi)和接收数据(Read.vi)的调试程序。
问题是:当发送的十进制数对应的ASCII码为可显示的字符时,发送和接收都没有问题,当
发送的十进制数(>=129)对应的ASCII码为不可显示字符时,接收方就不能正确的接收数据
了。其症状是:运行write.vi后运行Read.vi时所显示的接收到的字节数是正确的,但是转
换过来的数据却不够数。比如我那边发送26个数,这边缓冲区显示的也是26个字符,但是
接收到的却是15个数,如果再运行一次read.vi,则能正确的接收到剩下的11个数据。我曾
怀疑是缓冲区太小的缘故,但是在read.vi中加上VISA set I/O Buffer Size这个节点后根
本就接收不到数据了,而且我觉得26个字符也跟本不会超出缓冲区的 。各位高手帮我看看
问题出在哪了。
.13
有点糊涂,那你直接读取缓冲区的所有数据有没有效果呢?也就是你说得26个字符。
我用的时候都没有考虑缓冲区有多少字符的,那边发送多少就这边就读多少个字符。
有的时候把timeout改改。
.102