我正在编写一些基本代码,其中列出了可用的串行端口,然后根据描述中所需的端口名称(即“串行设备”)分配所需的端口并从中接收信息等。
我发现的问题是连接的设备可能是从“COM4”到“COM99”的任何设备,而我无法提前知道这一点。
下面是我编写的代码的相关部分。
ports = list(serial.tools.list_ports.comports())
for p in ports:
print(p.description)
if 'Serial Device' in p.description:
find_com = re.findall(r'COM[0-9][0-9]',p.description)
但是,我无法弄清楚如何根据 COM 是否以一位数或两位数结尾来使我的代码正常工作。 我发现当使用两套时
find_com = re.findall(r'COM[0-9][0-9]',p.description)
任何带有一位数字的 COM 都会被遗漏。 但是当使用单个[套装]时
find_com = re.findall(r'COM[0-99]',p.description)
# OR
find_com = re.findall(r'COM[00-99]',p.description)
这会错过任何具有两位数的 COM(即 COM12)
我觉得我已经接近能够连接到正确的 COM,无论它是以一位数还是两位数结尾,但我错过了一些东西?
r'COM\d{1,2}'
将匹配 COM
,然后恰好匹配一或两个 d
数字。