Erstellen Sie auf seriellen USB-Geräten unter Linux zwei Aliase für den seriellen Port:
/dev/tty*
and/dev/serial/by-id/<my_usb_device_id>
Gibt es unter OSX eine Möglichkeit, einen seriellen Anschluss anhand der USB-Geräte-ID zu identifizieren? Sowohl im System Profiler als auch bei der Verwendung ioreg -p IOUSB
kann ich die ID sehen, aber das bringt mich der Verbindung mit dieser ID nicht näher.
Wir entwickeln mehrere Hardwareteile und es ist mühsam, sie zu testen, da ich jedes Mal, wenn ich ein anderes Gerät anschließe, die Konfiguration des seriellen Anschlusses der Testsoftware überprüfen muss, da der Anschlussname unter OSX tty.*
vom Anschluss an meinem Computer abhängt. nicht am Gerät. Die Linux-Leute nutzen den /dev/serial/by-id/<my_usb_device_id>
Port gerne, um automatisch zwischen den verschiedenen Geräten zu unterscheiden.
Eigentlich sollten Sie in der Lage sein, die Zuordnung von der Geräte-ID/Seriennummer zum Namen des seriellen Anschlusses mit zu finden ioreg
. Versuchen Sie diesen Befehl:
ioreg -r -c IOUSBHostDevice -l
Es druckt alle USB-Host-Geräte und alle Eigenschaften aus dem Unterbaum jedes Geräts. Sie sollten Ihr Gerät anhand seiner ID oder Seriennummer auf der obersten Ebene finden können. Sobald Sie es gefunden haben, sollten Sie in der Lage sein, seinen Unterbaum zu durchsuchen und schließlich ein Objekt der Klasse zu finden IOSerialBSDClient
. Diese enthält die gewünschte Eigenschaft IODialinDevice
.
Wenn Sie dies dann programmgesteuert tun möchten, können Sie -a
dem Befehl die Option hinzufügen ioreg
, die eine plist-Version der obigen Ausgabe ausgibt. Sie könnten dies dann mit einer Bibliothek wie plistlib
.
Möglicherweise finden Sie es hilfreich, die IORegistryExplorer-App zu verwenden, um dies zu visualisieren, da die vollständige ioreg
Ausgabe etwas schwer zu lesen ist! Dies ist im Paket „Hardware IO Tools“ von XCode verfügbar, das Sie finden können, indem Sie die Downloads auf der Apple-Entwickler-Website durchsuchen . So sieht es auf meinem Gerät aus:
Nach meiner Erfahrung kommt dieses Problem vom Treiber Ihres Serial-to-Uart-Geräts. Normalerweise sollten Sie mit auf die serielle Schnittstelle zugreifen können
ls /dev/tty*.*
und das ist der einzige Weg, es zu tun. Aber wenn Ihr Mac es nicht anzeigt, habe ich ein Programm namens Serial Detect installiert, und es hat mein Board erkannt, andernfalls verwenden Sie lusb vor und nach dem Anschließen des Boards, wenn Sie es nicht haben, installieren Sie es wie folgt
brew install lsusb
laut meinem gerät brauchte ich für meinen mac 10.13 folgenden treiber
Einmal installiert, finden Sie es unter
ls /dev/tty*.*
Jetzt können Sie Ihr Gerät flashen oder die serielle Schnittstelle öffnen. Sie können mit dfu-util über die Geräte-ID auf das USB-Gerät zugreifen, in meinem Fall ist 1d50:6017 die in lsusb angezeigte Geräte-ID, ich habe sie zum Flashen einer Blackmagic-Sonde verwendet, aber Sie können flashen, was Sie wollen, dfu-util ist a kostenloses Dienstprogramm kann mit installiert werdenbrew install --build-from-source dfu-util
dfu-util -d 1d50:6017 -s 0x08002000:leave -D ./src/blackmagic.bin
Für eine FTDI-Bridge, die ich habe, erscheint die Seriennummer bereits im Gerätenamen: Sie erscheint als /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DA00AG57-if00-port0
(entsprechend einigen /dev/ttyUSBx
) unter Linux und als /dev/cu.usbserial-DA00AG57
und /dev/tty.usbserial-DA00AG57
unter macOS. (Siehe https://stackoverflow.com/a/8632603/4896937 für den Unterschied zwischen tty.*
und cu.*
.)
Leider gilt für die Prolific Bridge, die ich habe, immer noch ein Problem wie Ihres: Ein Gerät, das als /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
(das keine Seriennummer enthält) angezeigt wird, ist einfach /dev/cu.usbserial
und /dev/tty.usbserial
unter macOS (nicht einmal der System Profiler gibt eine Seriennummer dafür an). Wer weiß, was passieren würde, wenn ich ein zweites angeschlossen hätte.
Vielleicht gibt es eine allgemeinere Antwort, die herstellerunabhängig ist, aber seien Sie gewarnt, dass einige Geräte möglicherweise keine Seriennummer melden.
Ich hatte das gleiche Problem mit Profilic Bridge und lade den Treiber von http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41 herunter, um das Problem nach dem Neustart zu beheben.
Antonius
IORegistryExplorer.app
es jetzt in einer .dmg namens "Zusätzliche Tools für Xcode" gebündelt ist, immer noch unter derselben URL.