我无法从 Python 脚本通过串行方式正确地将数据发送到 Arduino Uno。我正在使用 9600 波特,并且 Arduino 正确重置,但它没有读取我从 Python 脚本发送的字符。我打电话time.sleep()
以确保 Arduino 上的重置不会干扰,并且我使用的是 Windows 7。我应该澄清说我的桌面正在运行 python 脚本并通过 USB 连接到我的 Arduino Uno 的串行。然后,我将 Uno 的 RX 和 TX 引脚(引脚 0 和 1)连接到我的 Mega 的 Serial1(引脚 18 和 19)。然后,我在笔记本电脑(使用 Mega 的常规串行)上的 Arduino IDE 中使用串行监视器来查看 Uno 所看到的内容。这是 Mega 的代码:
void setup() {
Serial1.begin(9600);
Serial.begin(9600);
Serial.println("Master Ready");
}
void loop() {
if(Serial1.available() > 0) {
char inByte = Serial1.read();
Serial.write(inByte);
Serial.write("\n");
}
}
这是 Uno 的代码:
void setup() {
Serial.begin(9600);
Serial.println("Slave Ready");
}
void loop() {
if(Serial.available() > 0) {
char inByte = Serial.read();
Serial.write(inByte);
}
}
最后,这是 python 脚本:
import sys
import serial
import time
ser = serial.Serial("COM23",9600)
n = int(sys.argv[1])
print n
time.sleep(10)
print ser
print n == 41
if (n == 70):
ser.write(chr(97))
print 'a'
elif n == 41:
ser.write('ggggggg')
print 'b'
elif n == 42:
ser.write('hello world')
print 'c'
elif n == 25:
ser.write(chr(100))
elif n == 26:
ser.write(chr(101))
elif n == 22:
ser.write(chr(102))
elif n == 10:
ser.write(chr(103))
elif n == 4:
ser.write(chr(104))
elif n == 14:
ser.write(chr(105))
elif n == 7:
ser.write(chr(106))
elif n == 11:
ser.write(chr(105))
elif n == 5:
ser.write(chr(106))
elif n == 17:
ser.write(chr(107))
# head - a - 70
# right bicep - b - 41
# right forearm - c - 42
# left bicep - d - 25
# left forearm - e - 26
# chest - f - 22
# right thigh - g - 10
# left thigh - h - 4
# right shin - i - 11 - 14
# left shin - j - 5 - 7
# waist - k - 17
如果有帮助,我实际上是在尝试将 Doom3 中的命中位置通过串行方式写入 Arduino,以便 Arduino 可以在您身体的适当位置打开电机。游戏代码是用 C++ 编写的,我首先尝试使用 C++ 的串行库,但这也不起作用。