Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyserial字符串到字节编码,用于写入微控制器_Python_Pyserial_Serial Communication - Fatal编程技术网

Python Pyserial字符串到字节编码,用于写入微控制器

Python Pyserial字符串到字节编码,用于写入微控制器,python,pyserial,serial-communication,Python,Pyserial,Serial Communication,我正在尝试在我的PC和微控制器(MC)之间进行通信。我的微控制器将使用getchar()进行读取,直到读取了4个字符,或者它碰到了'\0'、'\'或'\r' 使用超级终端,通信效果非常好。但是,在对输入字符串进行编码并将其中一个特殊字符连接到输入字符串时,我的python脚本似乎没有发送'\0'、'\'或'\r' command = input("Enter Command: ") port.write(bytes(command + '\n', 'UTF-8')) 因此,如果我输入命令x,

我正在尝试在我的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();
}
buffer[ii]=getchar();
while(buffer[ii]!='\0'和&buffer[ii]!='\n'和&buffer[ii]!='\r'和&ii<4-1)
{
缓冲区[++ii]=getchar();
}

您可以将字符串转换为整数数组。谢谢。所以我必须一次发送一个字节,但还要加上10毫秒的延迟。看起来python一次发送整个消息,而超级终端一次发送一个字节。getchar()似乎查看了第一个字符,然后pyserial丢失了其余的数据。上面for循环代码的一个小变化是,必须首先将b转换为字节。
>>> for b in bytearray("message\n","UTF-8"):
...     port.write(b)