Связь с датчиком массового расхода Bronkhorst — у устройства нет серийного номера?

Я пытаюсь связаться с несколькими научными измерительными приборами в нашей лаборатории и столкнулся со странной проблемой. Мы используем Считыватели массового расхода 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?

введите здесь описание изображения


person NoVa    schedule 28.04.2021    source источник


Ответы (1)


Я не могу себе представить, чтобы устройства не имели серийных номеров.

Извините, но вы сорвали джекпот с этими фишками Prolific. Судя по всему, они поставляются без написания серийного номера. На старых устройствах даже не было места для записи уникального серийного номера (см. -linux">здесь).

Если вам повезет, ваши чипы будут новее, и вы должен иметь возможность самостоятельно написать серийный номер с помощью инструмента от Prolific. .

Если это не решение для вас (я думаю, может быть, это продукты клиента, и вам нужно будет спросить их разрешения), возможно, вы можете настроить pyserial, чтобы проглотить и очистить те числа (какими бы они ни были), которые вы получаете.

Если вы посмотрите на код, который должен не очень сложно...

Раньше у меня были некоторые из этих мостов Prolific, но, к сожалению, я не смог найти ни одного из них, поэтому все вышеперечисленное - просто слухи. В любом случае, я надеюсь, что вы найдете это полезным.

РЕДАКТИРОВАТЬ: я раздобыл один мост Prolific, но, к сожалению, он был более старого типа 2303HXA. Памяти OTP или даже EEPROM нет, поэтому о записи серийного номера не может быть и речи (некуда его записывать).

Но я могу подтвердить то же поведение, что и в Windows (я даже получил предупреждение о том, что устройство снято с производства и не поддерживается с 2012 года). В Linux тоже нигде нет серийного номера.

Я также заметил, что если вы хотите писать на более новые чипы, вам нужно будет подать на порт 6,5 В вместо обычных 5 В, которые вы получаете от USB (Prolific предлагает адаптер, но я думаю, это не должно быть сложно сделать своими руками). Это).

person Marcos G.    schedule 29.04.2021