将变量分配给 pyserial 端口
Assign variable to pyserial port
我必须给串口分配一个变量。
ser = serial.Serial(
port=VARIABLE
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
我尝试使用 port=VARIABLE
,但这不起作用。
它似乎只接受路径,但在我的程序中我有很多设备。
据我了解,您在 com
端口上有多个设备,您想要 select 其中一个并将该端口分配给 VARIABLE
。
下面是读取 COM
端口并将第一个端口指定为可用 COM 端口的代码。然后它会探测 COM
端口以查看它是否打开。
您可以检查 serial_ports()
输出以确定要使用哪个 COM PORT
并将相应的端口 slice
分配给 VARIABLE
。我用过 port 0
这是我的 COM1
函数serial_ports()
是跨平台的。我有 windows 并且它可以无缝运行。
灵感来自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
>>>
我必须给串口分配一个变量。
ser = serial.Serial(
port=VARIABLE
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
我尝试使用 port=VARIABLE
,但这不起作用。
它似乎只接受路径,但在我的程序中我有很多设备。
据我了解,您在 com
端口上有多个设备,您想要 select 其中一个并将该端口分配给 VARIABLE
。
下面是读取 COM
端口并将第一个端口指定为可用 COM 端口的代码。然后它会探测 COM
端口以查看它是否打开。
您可以检查 serial_ports()
输出以确定要使用哪个 COM PORT
并将相应的端口 slice
分配给 VARIABLE
。我用过 port 0
这是我的 COM1
函数serial_ports()
是跨平台的。我有 windows 并且它可以无缝运行。
灵感来自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
>>>