如何在ESP8266和Python之间建立串口通信
How to establish serial communication between ESP8266 and Python
我跟着this guide尝试学习串行通信,但代码似乎不能正常工作。
#Arduino Code
String InBytes;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(4, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available() > 0) {
InBytes = Serial.readStringUntil('\n');
if (InBytes == "on") {
digitalWrite(4, HIGH);
Serial.write("LED ON");
}
if (InBytes == "off") {
digitalWrite(LED_BUILTIN, LOW);
Serial.write("LED OFF");
}
else {
Serial.write("invalid information");
}
}
}
#Python Code
import serial
import time
serialcomm = serial.Serial('COM3', 115200)
serialcomm.timeout = 1
def main():
while True:
i = input("input(on/off): ").strip()
if i == 'done':
print('finished program')
break
serialcomm.write(i.encode())
time.sleep(0.5)
print(serialcomm.readline().decode('ascii'))
serialcomm.close()
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
main()
我唯一改变的是引脚号和 COM 端口。
当我 运行 Arduino 代码和 Python 代码时,我能够看到 Python 端的输出,但 Arduino 代码没有输出任何内容Python 终端。我也没有收到任何错误消息,所以我不知道可能是什么原因。
如果它很重要,我使用 PyCharm 作为 python 编辑器和 Arduino IDE 作为 ESP8266。
您的 Arduino 代码正在将串行线路的速度设置为 9600。
Serial.begin(9600);
您的 Python 代码将其设置为 115200。
serialcomm = serial.Serial('COM3', 115200)
您需要选择一个并保持一致。尝试更改您的 Python 代码以使用 9600。
我跟着this guide尝试学习串行通信,但代码似乎不能正常工作。
#Arduino Code
String InBytes;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(4, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available() > 0) {
InBytes = Serial.readStringUntil('\n');
if (InBytes == "on") {
digitalWrite(4, HIGH);
Serial.write("LED ON");
}
if (InBytes == "off") {
digitalWrite(LED_BUILTIN, LOW);
Serial.write("LED OFF");
}
else {
Serial.write("invalid information");
}
}
}
#Python Code
import serial
import time
serialcomm = serial.Serial('COM3', 115200)
serialcomm.timeout = 1
def main():
while True:
i = input("input(on/off): ").strip()
if i == 'done':
print('finished program')
break
serialcomm.write(i.encode())
time.sleep(0.5)
print(serialcomm.readline().decode('ascii'))
serialcomm.close()
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
main()
我唯一改变的是引脚号和 COM 端口。
当我 运行 Arduino 代码和 Python 代码时,我能够看到 Python 端的输出,但 Arduino 代码没有输出任何内容Python 终端。我也没有收到任何错误消息,所以我不知道可能是什么原因。
如果它很重要,我使用 PyCharm 作为 python 编辑器和 Arduino IDE 作为 ESP8266。
您的 Arduino 代码正在将串行线路的速度设置为 9600。
Serial.begin(9600);
您的 Python 代码将其设置为 115200。
serialcomm = serial.Serial('COM3', 115200)
您需要选择一个并保持一致。尝试更改您的 Python 代码以使用 9600。