我的工作是机器人,它必须控制使用无线串行通信。机器人在微控制器上运行(通过燃烧一个.hex文件)。我想用我的Linux () PC来控制它。我是新来的串口编程。我能够发送数据,但我不能读取数据。
在微控制器上运行的几段代码:
函数发送数据:
void TxData(unsigned char tx_data)
{
SBUF = tx_data; // Transmit data that is passed to this function
while(TI == 0) // Wait while data is being transmitted
;
}
我在做的是:
实现协议时,我必须:
将写入引脚设置为high并进入写入模式。
将我的数据( 16字节长)写入串口。
再次将我的引脚设置为low并进入读模式。
等到16个字节到达。
结束传输。
详细内容包括为什么一个写引脚必须设置为高和低,为什么16包准确,和.有些硬件实现细节我无法更改。
目前的解决办法:
// .....
private final Serial serial;
private final GpioPinDigitalOutput pin;
private final long DELAY_M = 2;
private final int DEL