You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本与Arduino Sketch能否共用电脑同一串口通信?

解决Arduino与Python同串口通信冲突的方案

串口属于独占式硬件资源,操作系统不允许两个进程同时打开并占用同一个串口端口,因此不存在让Arduino Sketch与Python脚本同时直接使用同一串口的方法。以下是几种可行的替代解决方案:

  • 方案一:单进程独占串口,关闭IDE监视器后用Python接收
    上传完Arduino Sketch后,关闭Arduino IDE的串口监视器(它会持续占用串口),再运行Python脚本打开该串口接收数据。
    Python接收示例代码(依赖pyserial库):

    import serial
    import time
    
    # 替换为你的串口名称(如COM3、/dev/ttyUSB0)和波特率
    ser = serial.Serial('COM3', 9600, timeout=1)
    time.sleep(2)  # 等待Arduino重启完成
    
    while True:
        if ser.in_waiting > 0:
            data = ser.readline().decode('utf-8').strip()
            print(f"Received: {data}")
    

    对应Arduino发送代码:

    void setup() {
      Serial.begin(9600);
    }
    
    void loop() {
      Serial.println("Sample data from Arduino");
      delay(1000);
    }
    
  • 方案二:用软件串口拆分通信链路
    如果你的Arduino有闲置IO引脚,可借助SoftwareSerial库模拟额外串口,让硬件串口给Python发数据,软件串口用于Arduino IDE的调试监视,两者互不占用。
    Arduino示例代码:

    #include <SoftwareSerial.h>
    
    // 定义软件串口的RX、TX引脚
    SoftwareSerial debugSerial(2, 3);
    
    void setup() {
      Serial.begin(9600);         // 硬件串口,供Python连接
      debugSerial.begin(9600);    // 软件串口,供Arduino IDE监视器连接
    }
    
    void loop() {
      Serial.println("Data for Python");
      debugSerial.println("Debug info for IDE");
      delay(1000);
    }
    

    运行时Python连接硬件串口,Arduino IDE监视器选择软件串口对应的COM端口(可在设备管理器中查看)。

  • 方案三:中间进程中转数据
    若需实现双向交互的复杂场景,可编写一个独占串口的中间程序,负责从Arduino接收数据并转发给Python,同时将Python的指令发送给Arduino。这种方式复杂度较高,仅适用于多进程协同的特殊需求。

内容的提问来源于stack exchange,提问作者Lily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 12:52:05