0

我正在尝试在我的 PC 和微控制器 (MC) 之间进行通信。我的微控制器将getchar()一直读取到 4 个字符,否则会碰到字符'\0''\''\r'.

与超级终端的通信工作得非常好。但是,我的 python 脚本似乎没有发送'\0', '\', 或者'\r'在对输入字符串进行编码并与其中一个特殊字符连接时。

command  = input("Enter Command: ")
port.write(bytes(command + '\n', 'UTF-8'))

因此,如果我输入了x它应该发送的命令'x''\n'并且 MC 应该停止等待读取更多字符,因为新行。但是,如果我只输入x,则 MC 将等待再读取 4 个字符。
如何将带有特殊字符的字符串正确转换为字节?谢谢。

MC代码是:

buffer[ii] = getchar();

while(buffer[ii] != '\0' && buffer[ii] != '\n' && buffer[ii] != '\r' && ii < 4 - 1)
{
    buffer[++ii] = getchar();
}
4

1 回答 1

1

您可以通过以下任一方式将字符串转换为整数数组 0 <= N <= 256:

map(ord,command+'\n') 或者 bytearray(command+'\n',"UTF-8")

如果您必须将每个字节一个一个地写入端口:

>>> for b in bytearray("message\n","UTF-8"):
...     port.write(b)

应该做的伎俩。

于 2013-05-13T03:04:36.667 回答