pyserial 中的 ser.write() 函数
Posted
技术标签:
【中文标题】pyserial 中的 ser.write() 函数【英文标题】:ser.write() function in pyserial 【发布时间】:2017-12-20 10:59:40 【问题描述】:我正在尝试使用 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);
【问题讨论】:
试试你的loop
函数:while(Serial.available() > 0) buffer = Serial.read(); Serial.print(buffer);
在 Python 中,您将字节 255 转换为字符串“255”,而在 Arduino 端,您尝试打印非 nul 终止的字符串。
【参考方案1】:
您的 Python 代码将数字作为 ASCII 字符串发送,而不是发送字节(这是您的 Arduino 代码所期望的......)。相反,这样做:
for i in range(1,len(b)):
ser.write(b[i-1])
【讨论】:
以上是关于pyserial 中的 ser.write() 函数的主要内容,如果未能解决你的问题,请参考以下文章