Я пытаюсь связаться с несколькими научными измерительными приборами в нашей лаборатории и столкнулся со странной проблемой. Мы используем Считыватели массового расхода Bronkhorst для измерения количества газообразного гелия, проходящего по нашим линиям.
ПРИМЕЧАНИЕ --- Я запускаю свой код через git bash на компьютере с Windows 10. Аппаратное обеспечение подключается через кабель RS232. Я не проверял это на Linux, но могу, если это необходимо для устранения неполадок. Мы вынуждены использовать Windows 10 из-за другого оборудования. Если Linux в конечном итоге заработает, мне все равно нужно будет найти решение для Windows 10.
Пытаясь написать класс для автоматизации определения COM-порта, я обнаружил, что эти устройства не выводят серийный номер. В приведенном ниже коде показано, что я делаю, сейчас я предоставлю более подробную информацию.
import serial
from serial.tools import list_ports
import pandas as pd
def identify_devices():
a = list_ports.comports()
df = pd.DataFrame()
df['com_port'] = [port.name for port in a]
df['vendor_id'] = [port.vid for port in a]
df['product_id'] = [port.pid for port in a]
df['serial_number'] = [port.serial_number for port in a]
df['description'] = [port.description for port in a]
df['location'] = [port.location for port in a]
df['manufacturer'] = [port.manufacturer for port in a]
df['product'] = [port.product for port in a]
df['interface'] = [port.interface for port in a]
df['hwid'] = [port.hwid for port in a]
return df
В коде намного больше, но по сути он сводится к этому. Вывод следующий.
In [18]: identify_devices()
Out[18]:
com_port vendor_id product_id serial_number description location manufacturer product interface hwid
0 COM4 1027.0 24577.0 FTSTT5NA USB Serial Port (COM4) None FTDI None None USB VID:PID=0403:6001 SER=FTSTT5NA
1 COM1 NaN NaN None Communications Port (COM1) None (Standard port types) None None ACPI\PNP0501\1
2 COM6 1027.0 24577.0 FTXEF0AHA USB Serial Port (COM6) None FTDI None None USB VID:PID=0403:6001 SER=FTXEF0AHA
3 COM5 1659.0 8963.0 Prolific USB-to-Serial Comm Port (COM5) 1-8 Prolific None None USB VID:PID=067B:2303 SER= LOCATION=1-8
COM5
выше — это интересующее меня устройство. Я ожидал, что серийный номер, аналогичный тем, что указаны в COM4
и COM6
, заполнит это поле, но вместо этого оно пусто. Я попытался изучить кабель RS232, чтобы увидеть, не блокирует ли он как-то серийный номер, но я оказался с пустыми руками.
Я проверил это с несколькими устройствами Bronkhorst и 3 разными кабелями RS232, все они вызывают одну и ту же проблему. Я не могу себе представить, чтобы устройства не имели серийных номеров.
Я ищу решение или какое-то направление, куда идти отсюда. Пожалуйста, дайте мне знать, если есть вопросы или нужны разъяснения, спасибо.
РЕДАКТИРОВАТЬ:
Я проверил диспетчер устройств в Windows и нашел правильную информацию о серийном номере для устройства COM4, скрытую в свойстве parent
. Перейдя к тому же месту в диспетчере устройств Bronkhorst, я обнаружил, что макет немного отличается. См. рисунок ниже.
В чем здесь отличия? Может ли pyserial искать элементы по пути ROOT_HUB30
?