接收端是不会判断所谓某个字节的起始位的,接收机如果是在接收的状态,那么只要它的接收引脚检测到有低电平(这个低电平不是检测一次,而是检测3次,判断有2次均是低电平则最终判断为低电平,即起始位),那么接收端就开始以设定的波特率接收数据,判断数据时也是判断3次2次有效,也就是说,只要检测到低电平它就接收。假如发送端已经在发送过程中,再接上接收端,那么接收的数据一定是错的,你可以试试,随便将接收状态下的RXD用导线接地一下,接收机肯定收到数据。那么是不是不可避免这种情况的发生呢?是可以的避免的,但是发送端的时间需要有个数据的时间间隔,否则永远出不来这个循环错误:1,确保接收端就绪先于发送端,那么第一个字节的起始位必定被检测到; 2,发送第9位,接收到数据后,判断数据和第9位是对应,若对应则再接收之后的数据;3, 添加必要地起始字节如0xaa,当接收端接收到第一个数据,并且为0xaa时,才进入接收真正的有效数据,一个起始字节不够就两个;总之在接收时就作条件判断,直至同步为止。
所以如何在自己的笔记本电脑上模拟串口数据就成了当务之急。托Google的福,找到了两个小工具:VSPD和串口调试助手。下面简单介绍一下如何结合这两个小工具进行串口程序调试。1、安装好VSPD后,首先选择你要虚拟的端口号,点击“添加端口”。一般现在的笔记本电脑都没有串口,所以可以选COM1和COM2。
2、虚拟好端口后,左侧能看到新虚拟出的COM1和COM2,此时两个端口应该都没有被占用,处于停用状态。
3、打开串口调试助手,设置COM1的波特率、奇偶校验位、数据位、停止位等参数,同时确保COM2是未占用状态。我们这样设置,是为了让COM1负责发送数据,COM2负责接收数据。如果COM2也被占用,那么你的程序就无法使用这个端口了。
4、在图中方框位置填入你要模拟的数据,然后点击“自动发送”,这时你应该看到进度条不断前进,而VSPD的COM1的Sent数据不断增长,说明串口调试助手正不断通过COM1发送数据。
5、打开你要调试的程序,在你的程序中设置好波特率等各种参数,即可看到模拟结果了。此时可以观察到VSPD中的COM2被Java占用了,而且Received数据不断增长。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)