将变量分配给pyserial端口

时间:2016-03-30 20:52:40

标签: python variables serial-port port pyserial

我必须为串口分配一个变量。

ser = serial.Serial(
port=VARIABLE
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)

我尝试使用port=VARIABLE,但这不起作用。 它似乎只接受路径,但在我的程序中我有很多设备。

1 个答案:

答案 0 :(得分:1)

据我了解,您在com端口上有多个设备,并且您希望选择其中一个设备并将该端口分配给VARIABLE

下面是一个读取COM端口并将第一个端口指定为可用COM端口的代码。然后它会探测COM端口以查看它是否打开。

您可以检查serial_ports()输出以确定要使用的COM PORT,并相应地将相应的端口slice分配给VARIABLE。我使用的port 0COM1

函数serial_ports()是跨平台的。我有窗户,它无缝地工作。

来自here

的灵感

演示代码

import sys
import glob
import serial


def serial_ports():

    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')

    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result


if __name__ == '__main__':

    VARIABLE = serial_ports()[0] #Assign first port as COM port    
    ser = serial.Serial(
    port=VARIABLE,
    baudrate=115200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS
    )

    print "Is port", VARIABLE , " open ?", ser.isOpen()

<强>输出

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
Is port COM1  open ? True
>>>