【发布时间】:2021-12-18 04:02:27
【问题描述】:
我目前正在尝试通过串行与绝对编码器进行通信,如下图所示,它可以很好地响应我的请求,但我遇到的问题是 arduino 没有正确读取所有响应字节时间。来自编码器的位置请求是命令 0x64,它以 4 个字节进行响应,其中包括一个回波字节(图片中的 0x64)、两个数据字节(图片中的 0xAD 和 0x53)和一个错误字节(图片中的 0x00)。我目前正在做的是发送命令,读取 4 个字节,作为一种调试方式,我将回显字节的响应写回串行端口(图片中的 0x18)。正如你所看到的 0x18 != 0x64 所以我想知道我哪里出错了。我已经仔细检查了波特率并且我正在以正确的速度说话,我似乎无法获得一致的响应读数。下面是我一直在运行以尝试解决此问题的代码的简化版本。 delayMicroseconds() 只是用来分隔示波器上的字节。
Serial.write(0x64);
byte echo_byte = 0;
byte pos_1 = 0;
byte pos_2 = 0;
byte status_byte = 0;
echo_byte = Serial.read();
pos_1 = Serial.read();
pos_2 = Serial.read();
status_byte = Serial.read();
delayMicroseconds(1000);
Serial.write(echo_byte)
【问题讨论】:
-
在最后一行使用
Serial.write(0x18)而不是Serial.write(echo_byte)。
标签: arduino serial-port atmega