Skip to main content
 首页 » 编程设计

Python-Arduino-Prototyping-API v2-关闭串口

2025年05月04日28mfryf

我正在使用 Python-Arduino-Prototyping-API - v2 模块与我的 Osepp Uno(Arduino 克隆)进行通信。 API 确实有一个关闭端口的 close() 函数。我想在打开程序时检查端口的状态。如果端口是打开的,我想关闭它,以便程序的其余部分可以访问该端口。

到目前为止,这是我的代码:

from arduino import Arduino 
import time 
import serial.tools.list_ports 
 
#Find USB Port 
def find_port():  #Finds which port the arduino is plugged into 
    ports = list(serial.tools.list_ports.comports()) 
    for p in ports: 
        if '0403' in p[2]:  
            print p 
            return p[0] 
usbport = find_port()  
b = Arduino(usbport) #adds port  
 
pin = 0 
 
b.output([]) 
 
while (True): 
    val = b.analogRead(pin)     
    print val         
    print usbport 
    time.sleep(0.05) 

请您参考如下方法:

我想通了。我使用 pySerial 检查端口是否打开,如果打开,我将其关闭。这确保端口可用于程序的其余部分。

from arduino import Arduino 
import time 
import serial.tools.list_ports 
import serial 
 
#Find USB Port 
def find_port():  #Finds which port the arduino is plugged into 
    ports = list(serial.tools.list_ports.comports()) 
    for p in ports: 
        if '0403' in p[2]:  
            print p 
            return p[0] 
usbport = find_port() #Calls function to get Arduinos USB port 
 
def closeport(): #Closes port if currently open 
    ser = serial.Serial(usbport)  
    if ser.isOpen() == True: 
        ser.close() 
 
closeport() #make sure port is available 
 
b = Arduino(usbport) #opens Arduino with correct port 
pin = 0  #Assigns analog out, pin 0 
b.output([]) 
while (True): 
    val = b.analogRead(pin)     
    print val         
    print usbport 
    time.sleep(0.05) 

我希望这对其他人有帮助。