Ich habe ein zu testendes Gerät (DUT) und messe dessen Stromverbrauch mit einem Power Analyzer-Datenlogger unter Verwendung der Daten von /dev/ttyUSB0
.
Das Problem ist, dass der Prüfling jetzt von der Workstation entfernt ist, mit der ich Daten gesammelt habe, aber im selben Netzwerk muss ein zweiter PC verwendet werden, der direkt über USB mit dem Power Anlayzer als eine Art USB-Proxy und SSH verbunden ist eine Art symbolische Verknüpfung auf der Messmaschine des USB-Geräts der "Proxy" -Maschine zu erstellen.
In Anbetracht der obigen Diagramm wie kann die 1 st PC Zugang /dev/ttyUSB0
des 2 nd PC , der direkt verbunden ist, in einer Weise , dass ein Programm , um den Strom aus dem 1 Lesen st PC nicht den Unterschied bemerken?
quelle
Sie können eine Kombination aus
ser2net
und verwendensocat
. Ich habe zum Beispiel einen Roboter, der über eine serielle Schnittstelle mit einem Himbeer-Pi verbunden ist. Der Himbeer-Pi ist mit meinem lokalen Netzwerk verbunden (entspricht Ihrem 2. PC). Mein Laptop ist mit demselben lokalen Netzwerk verbunden (entspricht Ihrem ersten PC). Dann verwende ich ser2net, um die serielle Schnittstelle über TCP vom 2. PC weiterzuleiten und eine Proxy-Datei für serielle Geräte mitsocat
dem 1. PC zu erstellen .Dieses Setup funktioniert möglicherweise auch für Sie. Vorgeschlagene Lösung:
Schritt 1: Installieren Sie das ser2net-Paket auf Ihrem 2. PC (gemäß Ihrem Diagramm)
sudo apt-get install ser2net
ser2net lauscht an einem TCP-Port und kann über den TCP-Port Daten von und zu einem seriellen Port leiten. Sie können über die Konfigurationsdatei festlegen, für welche seriellen Ports Sie "Proxies" erstellen möchten
/etc/ser2net.conf
.Schritt 2: ser2net im 2. PC konfigurieren
Wenn Sie beispielsweise ein Gerät
/dev/ttyACM0
mit Baudrate angeschlossen haben115200
und es über den lokalen Host- Port 3333 bedienen möchten, können Sie die folgende Zeile hinzufügen/etc/ser2net.conf
3333:raw:0:/dev/ttyACM0:115200,remctl
Nachdem Sie die Konfigurationsdatei erstellt haben, starten Sie ser2net entweder auf dem zweiten PC:
ser2net
oder (wenn es bereits läuft, dann starte es einfach neu wie unten)
/etc/init.d/ser2net restart
Eine wichtige Sache ist hier die Option remctl. Hiermit kann der Client (der erste PC in Ihrem Diagramm) eine Verbindung zum Gerät herstellen und die seriellen Verbindungsoptionen frei wählen. Ich denke, auf diese Weise ist die serielle Kommunikation aus Sicht des Datenerfassungsarbeitsbereichs vollständig transparent. Sehen Sie hier weitere Informationen .
Schritt 3: Einrichten der Datei für das serielle Proxy-Gerät auf der Datenerfassungs-Workstation (1. PC)
(wenn du kein socat hast, dann
sudo apt-get install socat
)socat
Erstellen Sie schließlich in einem Terminal auf dem ersten PC einen seriellen Proxy-Port, der vom TCP-Port abhört:socat pty,link=$HOME/MyProxySerialPort,waitslave tcp:$ip:$port,forever,reuseaddr,keepalive
Wo, in diesem Beispiel
ip=<2nd-PC-IP-address>
undport=3333
(oder was auch immer Sie beim Einrichten/etc/ser2net.conf
auf dem 2. PC gewählt haben).Schritt 4: Stellen Sie eine Verbindung zu MyProxySerialPort her
Jetzt sollten Sie in der Lage sein, eine serielle Verbindung zu dem Gerät
$HOME/MyProxySerialPort
auf dem ersten PC herzustellen .Dieser Blog-Beitrag enthält auch weitere Informationen zu diesem Setup: http://techtinkering.com/2013/04/02/connecting-to-a-remote-serial-port-over-tcpip/
quelle
In Linux-Kerneln, die eine symbolische Verbindung von / dev / bus / usb / BUS_ID / DEV_ID zu / dev / char / MAJOR verwenden: MINOR socat kann solche Geräte aufgrund eines unangemessenen IOCTL-Fehlers nicht öffnen!
Dieser Ansatz scheint also nicht direkt auf USB-Geräten zu funktionieren.
Ich habe usbip ausprobiert, was eine engere Implementierung darstellt, aber nur auf älteren Kerneln unterstützt wird.
Da es sich bei meiner Lösung um Kartenleser handelte, die über pcsc-lite verbunden waren, gab es eine bessere Lösung, die die Umgebungsvariable für libpcsclite- Clients verwendete.
Auf diese Weise kann ein anderer Unix-Domain-Socket angegeben werden. Und dieser kann mit socat an die Kartenleser-Buchse eines Remote-Hosts weitergeleitet werden :
Führen Sie dies auf dem Host aus, um den Kartenleser zu ersetzen
Führen Sie dies auf dem CARD_READER_HOST-Host mit angeschlossenem PC-Kartenleser aus
quelle
/dev/ttyUSB0
oder einen Leistungsanalysator bezieht, der kein PCSCLITE verwendet. Wenn Sie diese Informationen veröffentlichen möchten, ist es besser, wenn Sie eine separate Frage stellen. Sie dürfen und werden ermutigt, themenbezogene Fragen zu stellen, auf die Sie umgehend eine Antwort erhalten.:
Charakters im Pfad? Die socat-Manpage, Abschnitt "ADRESSEN-SPEZIFIKATIONEN", enthält einen Absatz über das Escape von Zeichen (ab v1.5.0).