我可以让我的python脚本在arduino串行监视器中输入命令吗?

时间:2019-06-17 21:24:56

标签: python arduino arduino-ide

我有一个Arduino脚本可以将命令发送到一些敏感的硬件。我不想改变Arduino的代码,因为我没有写代码,但是我希望能够输入命令序列而不必手动键入。

我希望我的python脚本的输出成为Arduino串行监视器的输入,然后让该脚本将命令发送到开发板。是否可以通过这种方式让python与Arduino IDE对话?

1 个答案:

答案 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()