Python 3.x Arduino Python 3脚本
我正在尝试使用Python3脚本来控制Arduino Mega。这是一个简单的脚本,可以从键盘上提取一行代码,并通过Arduino将其回显。我从一个可以工作的Python2脚本开始。我似乎无法获取我发回的字符,这可能是一个格式问题 这是格式问题吗?unicode到ASCII问题? 如何使用Python3和pySerial读取/写入二进制/十六进制数据和ASCII文本? 欢迎为Python新手提供任何建议 Python 3脚本:Python 3.x Arduino Python 3脚本,python-3.x,serial-port,arduino,pyserial,Python 3.x,Serial Port,Arduino,Pyserial,我正在尝试使用Python3脚本来控制Arduino Mega。这是一个简单的脚本,可以从键盘上提取一行代码,并通过Arduino将其回显。我从一个可以工作的Python2脚本开始。我似乎无法获取我发回的字符,这可能是一个格式问题 这是格式问题吗?unicode到ASCII问题? 如何使用Python3和pySerial读取/写入二进制/十六进制数据和ASCII文本? 欢迎为Python新手提供任何建议 Python 3脚本: import serial import time ser = s
import serial
import time
ser = serial.Serial('COM8', 9600, timeout=0)
var = input("Enter something: ")
print(var)
ser.write(bytes(var.encode('ascii')))
while 1:
try:
print(ser.readline())
time.sleep(1)
except ser.SerialTimeoutException:
print(('Data could not be read'))
Arduino代码:
int incomingByte=0;
void setup() {
// Open serial connection.
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
// Read the incoming byte.
incomingByte = Serial.read();
// Echo what you got.
Serial.print("I got: ");
Serial.println(incomingByte);
}
}
输入:
敏捷的红狐
输出:
b''
b'I got: 84\r\n'
b'I got: 104\r\n'
b'I got: 101\r\n'
等等。字节(var.encode('ascii'))
似乎没有必要,只需使用.encode()
方法或字节()
函数,两者都不需要。您还可以对接收到的数据使用.decode()
异常serial.SerialTimeoutException
与读取无关
在Arduino代码中,尝试使用发送回数据。您收到消息时,他们只是打印代码点,而不是字符。ASCII 84是
T
,104是h
,101是e
。您知道返回ASCII的语法吗?