例如:我发送一大串字符串如7B BC CD 03 77 BB DD EE FF AA BB CC, 在到达03这段数据的时候,实时发送7b bc cd 03出去。
首先要明确全双工通信方式的具体含义:全双工方式需要通信双方连接两条传输线(共地),一条是将数据从甲方送到乙方,另外一条是从乙方送到甲方。就是甲乙双方各自对应一发一收,51单片机上是有一个全双工的串行接口的,可以用两条传输线实现双向同时传送。
就你说的问题,我看得不是很明白,但是一个单片机不能同时两条线上都是发送(或接受)的,这点是肯定的。追问
就你说的问题,我看得不是很明白,但是一个单片机不能同时两条线上都是发送(或接受)的,这点是肯定的。追问
我想我问得还不太清楚:首先上位机发送一段指令,如ab bc bd 03 66 77 88 99 00。单片机上接收到03时,就马上发送03前面的4个byte(ab bc bd 03)。剩下的未接收的byte继续完成接收。现在我这段代码已经完成了,可是有个问题,当我发送完后,剩下的没接收完的串口数据不能在接收了,只有等下上位机再发送数据的时候才把之前没接收的数据发过来。
上述的03前面的4个byte是返回给上位机的.如果问题点还是不太明白,那跪求全双工串口实例,分数再提高30
追答问题我看懂了,就根据我前面所说的,单片机是可以完成双向同步收发数据的,估计是你写的代码有问题。我现在手上也没有全双工的示例代码,建议你去网上找找范例学习一下再对你的代码进行改进。
追问现在遇到的问题是发送和接收的buf有冲突,这个你以前有没有遇到
追答我刚也去查了下资料,说是一般8位单片机是单线程处理,如果是模拟接收发送的话是无法做到全双工通信的,但是单片机里有UART,虽然只有一个SBUF,但在物理上是两个寄存器,可以完成全双工通信的。
具体看:http://zhidao.baidu.com/question/529128530.html
很感谢你,不过我还是看看吧
温馨提示:答案为网友推荐,仅供参考