Wie kommuniziere ich mit einem seriellen Port?

828
something

Ich habe diese Off-Brand-Chinese-Ups, die ich in meinen Computer einstecken möchte, der manuelle Zustand, dass er einen "COM-Port" hat, aber sonst nichts, er liefert auch keinen Treiber.

Wenn Sie die USV mit einem USB-Kabel vom Typ B an A an meinen Computer anschließen, erkennen Sie sie als "HID-kompatibles Gerät" und scheint keinen Treiber dafür zu finden.

Screenshot des Geräte-Managers

Gibt es sowieso Informationen von der USV, wie die Ladung noch übrig ist, so dass ich ein Programm erstellen kann, das den Computer vor dem Stromausfall sanft herunterfährt?

Bearbeiten

Dieses Tool http://networkupstools.org scheint meine USV zu erkennen

Bearbeiten 2

Ich kann NUT nicht dazu bringen, mit meinen Ups zu arbeiten. Die manuelle Installation von libusb hat auch nicht funktioniert

Bearbeiten 3

rdesc: http://sprunge.us/WEZV

lsusb: http://sprunge.us/hNiM

0
Klicken Sie mit der rechten Maustaste auf das Gerät und wählen Sie ** Eigenschaften ** -> ** Details **, und zeigen Sie dann in der Dropdown-Liste ** Hardware-IDs ** und dann ** Kompatible IDs ** an. Wenn Sie nach diesen Zeichenketten suchen, können Sie Glück haben. AFH vor 6 Jahren 1
Kompatible IDs sind leer, und Hardware-IDs geben mir eine Reihe von Zeichenfolgen. Wie kann ich diese suchen? Auch dies war auf dem "HID-kompatiblen Gerät", "USB-Eingabegerät" gab mir unterschiedliche Ergebnisse, mit welchen sollte ich arbeiten? something vor 6 Jahren 0
Suchen Sie nach jeder Zeichenfolge, vorzugsweise in Anführungszeichen. Ich würde zuerst das USB-Gerät ausprobieren, aber versuchen Sie es mit dem anderen, wenn Sie nichts finden. AFH vor 6 Jahren 0
Ich habe diese Seite http://networkupstools.org/stable-hcl.html mit vielen generischen Treibern gefunden, kann aber nicht die passende finden something vor 6 Jahren 0
Der `VEN`-Teil des ID-Strings sollte den Hersteller angeben. AFH vor 6 Jahren 0
Es gibt keinen VEN-Teil in der Zeichenfolge, wie ich schon sagte, dies ist eine günstige USV-Marke, die den Verweis auf das Handbuch googelt, liefert kein Ergebnis something vor 6 Jahren 0
Wenn es HID-kompatibel ist, sollte es einen HID-Deskriptor haben, der Ihnen das Format der Daten, die Sie senden können, und das Format der empfangenen Daten mitteilt. Ihr Betriebssystem scheint Windows zu sein, aber ich kann nicht auf den HID-Deskriptor unter Windows zugreifen, nur unter Linux. dirkt vor 6 Jahren 0
Ich habe keine anderen Vorschläge. Sie müssen sich an den Ort wenden, an dem Sie das Gerät gekauft haben. Support-Software sollte mitgeliefert werden. AFH vor 6 Jahren 0
@AFH Im Lieferumfang des Geräts ist keine Support-Software enthalten. Ich bin mir sicher, dass auch der Hersteller keine anbietet something vor 6 Jahren 0
@dirkt Kannst du mir sagen, wie es unter Linux geht? Ich könnte es auf einer virtuellen Maschine ausprobieren something vor 6 Jahren 0
Ich fürchte, du bist allein. Ich selbst würde keine USV ohne Markenzeichen verwenden, weil ich mir Sorgen um die Sicherheitsstandards und die Möglichkeit eines Feuers machen würde. AFH vor 6 Jahren 0
Verfügt die USV über eine physische serielle Schnittstelle (z. B. einen DB9-Anschluss)? Wenn nicht, könnte es sich bei dem COM-Port, auf den sich das Handbuch bezieht, um einen virtuellen seriellen Port handeln. Es gibt also wahrscheinlich einen Treiber, der ihn verfügbar macht. Brian vor 6 Jahren 0
@AFH Ja, du hast recht, eine USV ohne Markenbezeichnung ist nichts, worauf ich mich verlassen sollte. Aber ich würde dies für eine gute Reverse Engineering-Übung halten, wenn ich nur mit diesem Gerät kommunizieren könnte something vor 6 Jahren 0
@Brian Nope, nur USB-B-Stecker, der nach dem Googeln ein "Seriell-zu-USB-Adapter" zu sein scheint something vor 6 Jahren 0

1 Antwort auf die Frage

0
dirkt

Teilantwort:

Ein HID-kompatibles Gerät sollte über einen HID-Deskriptor verfügen, der das bzw. die gültigen Datenformate von und zum Gerät beschreibt.

Unter Linux können Sie auf den HID-Deskriptor folgendermaßen zugreifen:

Sehen Sie sich die neuen Zeilen an dmesg, die nach dem Anschließen des Geräts angezeigt werden. Dies zeigt an, ob der Linux-Kernel ihn auch als HID-Gerät und die Busnummer sowie den Hersteller und die Geräte-ID erkennt.

Wenn es noch nicht montiert ist, machen Sie es

mount -t debugfs none /sys/kernel/debug 

als Wurzel. Dann /sys/kernel/debug/hid/<dev>/rdescwird der HID-Deskriptor enthalten, wobei <dev>eine Geräte-ID die Busnummer, die Hersteller- und Geräte-ID sowie eine zusätzliche Nummer enthält.

Sehen Sie sich den Inhalt des Deskriptors mit cat '/sys/kernel/debug/hid/<dev>/rdesc'an und bearbeiten Sie die Frage, um den Inhalt einzuschließen (oder platzieren Sie ihn in einem Pastebin usw. und bearbeiten Sie die Frage mit einem Link).

lsusbund lsusb -v -d xxxx:yyyy(wo xxxx:yyyyist der Hersteller und die Geräte-ID) gibt auch Informationen, die bei der Bestimmung der Kommunikation mit dem Gerät hilfreich sein können.

Bearbeiten

Das ist eine lustige Art, HID-USB zu verwenden: Der HID-Deskriptor besagt, dass Sie Chunks mit einer Länge von 8 Byte lesen und schreiben können, mit anwendungsspezifischem (nicht standardisiertem) Zweck. In der Tat tut dies der Blazer_usb- Treibercode in NUT, der eine Simulation simuliert serieller USB über 8-Byte-Chunks. Total verrückt.

Hier ist eine Beschreibung, wie es unter Ubuntu funktioniert, anscheinend gibt es mehrere Fallstricke. Das Kommunikationsprotokoll für die eigentliche serielle Schnittstelle wird hier beschrieben .

Wenn Sie immer noch Probleme damit haben, dass es unter Linux funktioniert usbmon, überprüfen Sie, was nicht funktioniert.

Keine Ahnung, was für einen Windows-Treiber zu tun ist, es sei denn, Sie nehmen die Quelle und schreiben selbst einen.

Vielen Dank, ich könnte meinen ersten Schritt beim Schreiben von Treibern machen. something vor 6 Jahren 0