Как общаться с ups через последовательный порт?

734
something

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

Подключив ИБП с помощью USB-кабеля типа B к кабелю A к моему компьютеру, определите его как «HID-совместимое устройство» и, похоже, не найдете драйвер для него.

Device manager screenshot

Есть ли какой-либо способ получить информацию от ИБП, например, об оставшемся заряде, чтобы я мог создать программу, которая аккуратно выключит компьютер перед отключением питания?

редактировать

Этот инструмент http://networkupstools.org, кажется, обнаруживает мой ИБП

Редактировать 2

Не могу заставить NUT работать с моими взлётами, ручная установка libusb тоже не сработала

Редактировать 3

rdesc: http://sprunge.us/WEZV

lsusb: http://sprunge.us/hNiM

0
Щелкните правой кнопкой мыши устройство и выберите вкладку ** Свойства ** -> ** Детали **, затем в раскрывающемся списке отобразите ** Идентификаторы оборудования **, а затем ** Совместимые идентификаторы **. Если вы ищете эти строки, вам может повезти. AFH 6 лет назад 1
Совместимые идентификаторы пусты, а аппаратные идентификаторы дают мне кучу строк, как мне их искать? Также это было на «HID-совместимом устройстве», «USB input device» дает мне разные результаты, с каким мне следует работать? something 6 лет назад 0
Поиск каждой строки по очереди, желательно в двойных кавычках. Сначала я бы попробовал USB-устройство, но попробую другое, если ничего не найдешь. AFH 6 лет назад 0
Я нашел эту страницу http://networkupstools.org/stable-hcl.html со множеством общих драйверов, но не могу найти подходящий something 6 лет назад 0
Часть `VEN` строки идентификатора должна указывать производителя. AFH 6 лет назад 0
В строке нет VEN-части, как я уже говорил, это дешевый ИБП с нестандартной маркой, поиск по ссылке в руководстве не дает результата. something 6 лет назад 0
Если он совместим с HID, он должен иметь дескриптор HID, поэтому он сообщает вам формат данных, которые вы можете отправить ему, и формат данных, которые вы получаете. Кажется, ваша ОС - Windows, но я не знаю, как получить доступ к дескриптору HID в Windows, только в Linux. dirkt 6 лет назад 0
У меня нет других предложений. Вам нужно будет связаться с вами, где бы вы ни покупали устройство, - программное обеспечение поддержки должно было поставляться с ним. AFH 6 лет назад 0
@AFH Никакого вспомогательного программного обеспечения не было в комплекте с устройством, я уверен, что даже поставщик не предоставит его something 6 лет назад 0
@dirkt Можете ли вы сказать мне, как это сделать на Linux? Я мог бы попробовать это на виртуальной машине something 6 лет назад 0
Боюсь, ты сам по себе. Для себя я бы не использовал ИБП без маркировки, потому что я был бы обеспокоен стандартами безопасности и возможностью пожара. AFH 6 лет назад 0
Имеет ли ИБП физический последовательный интерфейс (например, разъем DB9)? Если нет, то COM-порт, на который ссылается руководство, может быть виртуальным последовательным портом, так что, скорее всего, существует драйвер, который его предоставляет. Brian 6 лет назад 0
@ АФН, да, ты прав, на марку ИБП я ​​не могу положиться. Но я бы нашел это хорошее упражнение для обратного инжиниринга, если бы я мог общаться с этим устройством. something 6 лет назад 0
@Brian Nope, только USB-разъем типа B, который после поиска в Google выглядит как «последовательный USB-адаптер» something 6 лет назад 0

1 ответ на вопрос

0
dirkt

Частичный ответ:

HID-совместимое устройство должно иметь дескриптор HID, который описывает действительный формат (ы) данных на устройство и с него.

В Linux вы можете получить доступ к дескриптору HID следующим образом:

Посмотрите на новые строки, dmesgкоторые появляются после подключения устройства. Это скажет вам, если ядро ​​Linux также распознает его как устройство HID, и номер шины, а также идентификатор производителя и устройства.

Если он еще не установлен, выполните

mount -t debugfs none /sys/kernel/debug 

как корень. Затем /sys/kernel/debug/hid/<dev>/rdescбудет содержать дескриптор HID, где <dev>находится идентификатор устройства, содержащий номер шины, идентификатор производителя и устройства, а также дополнительный номер.

Посмотрите на содержимое дескриптора с помощью cat '/sys/kernel/debug/hid/<dev>/rdesc'и отредактируйте вопрос, включив в него содержимое (или поместите его в вставку и т. Д., И отредактируйте вопрос с помощью ссылки).

lsusbи lsusb -v -d xxxx:yyyy(где xxxx:yyyyуказан идентификатор поставщика и устройства) также предоставит информацию, которая может помочь в определении способа связи с устройством.

редактировать

Это забавный способ использования HID USB: дескриптор HID говорит, что вы можете читать и записывать куски длиной 8 байт, с конкретной (нестандартной) целью приложения, и действительно, код драйвера blazer_usb в NUT точно это делает, имитируя последовательный USB через 8 байт. Абсолютно сумасшедший.

Вот описание, как заставить это работать под Ubuntu, по-видимому, есть несколько ошибок. Протокол связи для собственно последовательного интерфейса описан здесь .

Если вам все еще не удается заставить его работать под Linux, посмотрите, usbmonчтобы отладить то, что не работает.

Понятия не имею, что делать для драйвера Windows, если вы не берете исходный код и не пишете его самостоятельно.

Что ж, спасибо, возможно, сделаю первый шаг в написании драйверов. something 6 лет назад 0