我的以下代码旨在处理异常并在未找到任何内容时切换串行端口。
try:
serial_port = '/dev/cu.usbserial-10'
except:
try:
serial_port = '/dev/cu.usbserial-110'
except:
print("Unable to find sensor. Try again")
但是,它实际上并没有处理异常,仍然让它们到达控制台:
Traceback (most recent call last):
File "/Users/username/Library/Python/3.10/lib/python/site-packages/serial/serialposix.py", line 322, in open
self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
FileNotFoundError: [Errno 2] No such file or directory: '/dev/cu.usbserial-10'
我已在代码中设置它,以便如果没有
/dev/cu.usbserial-10
,它会尝试 serial-110
,如果不存在,它会打印一些内容,但永远不会打印。
编辑:
我正在使用 pyserial,因此
serial_port
作业会尝试查找文件位置。 '/dev/cu.usbserial-10'
是我电脑上的 USB 端口之一。
错误确实表明它位于第 322 行,但我的文件长度不超过 100 行。
更多背景:
import serial
serial_port = 0
try:
serial_port = '/dev/cu.usbserial-10'
except:
try:
serial_port = '/dev/cu.usbserial-110'
except:
print("no")
baud_rate = 115200
ser = serial.Serial(serial_port, baud_rate) # serial data, non-usable
try:
while True:
rawdata = ser.readline().decode().strip() # raw string data from serial
print(rawdata)
这实际上是我的整个文件,当找到
usbserial-10
时,它就可以工作了。
根据发布的代码,您尝试执行某种根据分配的文本打开串行端口的功能。
try:
serial_port = '/dev/cu.usbserial-10'
#you're only assigning the value to a variable . you actually need to call the function that youre testing with that variable here
except:
try:
serial_port = '/dev/cu.usbserial-110'
except:
print("Unable to find sensor. Try again")
这是示例代码:
try:
serial_port = '/dev/cu.usbserial-10'
response=open_serial_port(serial_port) #assuming 'open_serial_port' is the function name.
except:
try:
serial_port = '/dev/cu.usbserial-110'
response=open_serial_port(serial_port) #assuming 'open_serial_port' is the function name.
except:
print("Unable to find sensor. Try again")
这是如何修复它的示例。