pyserial中的ser.write()函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyserial中的ser.write()函数相关的知识,希望对你有一定的参考价值。

我试图使用pyserial库将图像文件的字节数组发送到Arduino。我在Arduino中逐字节地接收数据。但似乎我无法检索Arduino上的字节。例如,它发送一个'255'字符串Arduino接收字节为'2'。

Python代码:

import serial
ser = serial.Serial('/dev/ttyUSB0', 115200, bytesize=8, timeout=0, parity=serial.PARITY_EVEN, rtscts=1)
f = open('image.jpg','rb')
l = f.read()
b = bytearray(l)
for i in range(1,len(b)):
  ser.write(str(b[i-1]))
ser.flush()
ser.close()

Arduino代码:

char buffer ; // for incoming serial data
int length = 1;
void setup() {
  Serial.begin(115200); // opens serial port, sets data rate to 9600 bps
}

void loop() {
  Serial.readBytes(&buffer, length) ;
  Serial.println(buffer);
}
答案

您的Python代码将数字作为ASCII字符串发送,而不是发送字节(这是您的Arduino代码所期望的......)。相反,做:

for i in range(1,len(b)):
  ser.write(b[i-1])

以上是关于pyserial中的ser.write()函数的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 pyserial 发送整数

使用pyserial发送二进制数据

PySerial 在脚本中不起作用

python的串口close()函数关闭不成功

如果在 __init__ 中未使用,则类 ser 端口为无

PySerial 读取问题