2013-05-13 30 views
0

我试图在我的PC和微控制器(MC)之间进行通信。我的微控制器将使用getchar()进行读取,直到读取4个字符,或者碰到字符'\0','\''\r'Pyserial字符串到字节编码写入到微控制器

该通信与超级终端完美无瑕。然而,我的Python脚本似乎并没有发送'\0','\''\r'编码输入字符串并连接到一个特殊字符。

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

所以,如果我输入的命令x应发送'x''\n'和MC应该停止等待更多的字符,因为新线的读取。但是,如果我只输入x,则MC将等待另外4个字符的读取。
如何将字符串正确转换为字节?谢谢。

的MC代码是:

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

如果:

buffer[ii] = getchar(); 

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

回答

1

您可以通过字符串转换成整数的数组0 < = N < = 256你必须逐个写入每个字节到端口:

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

应该这样做。

+0

谢谢。所以我必须一次发送一个字节,但也要加上10毫秒的延迟。好像python会一次发送整个消息,而超级终端一次发送一个字节。 getchar()似乎看着第一个字符,然后其余的数据在pyserial中丢失了。 上面for循环代码的一个小改动是b必须首先转换为一个字节。 – roverred 2013-05-13 04:48:52