我有一个Arduino脚本可以将命令发送到一些敏感的硬件。我不想改变Arduino的代码,因为我没有写代码,但是我希望能够输入命令序列而不必手动键入。
我希望我的python脚本的输出成为Arduino串行监视器的输入,然后让该脚本将命令发送到开发板。是否可以通过这种方式让python与Arduino IDE对话?
答案 0 :(得分:2)
您只需要将Arduino开发板连接到计算机,并通过串行端口使用python脚本发送和接收数据。我创建了一个简单的示例,并确认以确认在Arduino上收到的命令,但是请记住根据您的需要修改代码:
Arduino代码:
void setup()
{
Serial.begin(9600);
}
// read a command from serial and do proper action
void read_command()
{
String command;
if (Serial.available())
{
command = Serial.readString();
// sending answer back to PC
Serial.println("ACK");
// do proper work with command
}
}
void loop()
{
// get new commands
read_command();
delay(1000);
}
Python代码:
import serial
from time import sleep
# remember to set this value to a proper serial port name
ser = serial.Serial('COM1', 9600)
ser.open()
# flush serial for unprocessed data
ser.flushInput()
while True:
command = input("Enter your command: ")
if command:
command += "\r\n"
ser.write(command.encode())
print("Waiting for answer")
while True:
answer = ser.readline()
if answer:
print("Answer:", answer)
break
sleep(0.1)
ser.flushInput()