引用: blust 发表于 2016-11-14 11:44
如果你发送区接收区都选成文本模式,就不会出现这个情况了。
引用: blust 发表于 2016-11-14 11:44
你调试时选择的是HEX模式,这个模式是十六进制表示的,你发11时其实不是发送的11,而是十六进制数0x11,换成十进制数就是17,是一个字节,所以不会错。但是你发111时,按照十六进制的解析就是前一个字节是0x11,后一个字节由于你只输了一位,默认高位为0,就是0x01,所以你接收到的就是11 01 ,并没有错误。 ...
引用: 黑眼圈红了 发表于 2016-11-14 13:38
意思就是我选择HEX模式发送的话,那我写进缓存区的数据就是用十六进制表示的是吧,我这样试了一下,发送一个字节最大的数FF,确实是可以接收回来的。
引用: blust 发表于 2016-11-14 15:32
你是在接收中断里面直接调用发送函数,在连续接收时可能会导致数据发送与接收冲突,从而丢失数据。最好是在接收中断里做一个标志位,然后在主程序里面调用发送函数。或者等一组数据接收完之后再整体发送回去。
引用: mingmingge8991 发表于 2016-11-14 23:13
你的程序没有问题,你在发送的时候是发送的16进制数据,你输入的是111其实系统默认变成1101 。你输入11 01 结果也一样。至于你在文本模式下,有时候能接受到有时不能接受到应该是你单片机没有处理过来,因为你在接收里有在发送,建议你做数据断帧处理,然后将接收到数据全部发送出去。数据断帧处理代码你要的话可以免费提供 ...
更多回帖