Na linuxowych urządzeniach szeregowych USB utwórz dwa aliasy do portu szeregowego:
/dev/tty*
i/dev/serial/by-id/<my_usb_device_id>
Czy w OSX jest sposób na identyfikację portu szeregowego na podstawie identyfikatora urządzenia USB? Zarówno w Profilu systemu, jak i przy użyciu ioreg -p IOUSB
widzę identyfikator, ale to nie zbliża mnie do łączenia się przy użyciu tego identyfikatora.
Opracowujemy kilka elementów sprzętu i testowanie ich jest uciążliwe, ponieważ za każdym razem, gdy podłączam inne urządzenie, muszę zweryfikować konfigurację portu szeregowego oprogramowania testującego, ponieważ w OSX tty.*
nazwa portu zależy od portu na moim komputerze, nie w urządzeniu. Faceci korzystający z systemu Linux chętnie korzystają z /dev/serial/by-id/<my_usb_device_id>
portu, aby automatycznie rozróżniać różne urządzenia.
Właściwie powinieneś być w stanie znaleźć mapowanie z ID urządzenia / numeru seryjnego na nazwę portu szeregowego za pomocą
ioreg
. Wypróbuj to polecenie:Wydrukuje wszystkie urządzenia hosta USB i wydrukuje wszystkie właściwości z poddrzewa każdego urządzenia. Powinieneś być w stanie znaleźć swoje urządzenie na najwyższym poziomie na podstawie jego identyfikatora lub numeru seryjnego. Po znalezieniu go powinieneś być w stanie przeskanować jego poddrzewo i ostatecznie znaleźć obiekt klasy
IOSerialBSDClient
. Będzie zawierać właściwość,IODialinDevice
która jest tym, czego chcesz.Jeśli chcesz to zrobić programowo, możesz dodać
-a
opcję doioreg
polecenia, która wyświetli wersję plist powyższego wyjścia. Następnie możesz to przeanalizować za pomocą biblioteki takiej jakplistlib
.Pomocne może być użycie aplikacji IORegistryExplorer, aby pomóc w wizualizacji tego, ponieważ pełne
ioreg
wyjście jest nieco trudne do odczytania! Jest to dostępne w pakiecie „Hardware IO Tools” XCode, który można znaleźć, wyszukując pliki do pobrania w witrynie dla programistów Apple . Oto jak to wygląda na moim urządzeniu:źródło