리눅스에서 USB 직렬 장치를 직렬 포트에 두 개의 별칭을 만듭니다
/dev/tty*
및/dev/serial/by-id/<my_usb_device_id>
OSX에서 USB 장치 ID로 직렬 포트를 식별하는 방법이 있습니까? 시스템 정보보기 및 사용 모두에서 ioreg -p IOUSB
ID를 볼 수 있지만 해당 ID를 사용하여 연결하는 데 더 가깝지는 않습니다.
우리는 여러 하드웨어를 개발하고 있으며 다른 장치를 연결할 때마다 테스트 소프트웨어의 직렬 포트 구성을 확인해야합니다. OSX의 경우 tty.*
포트 이름이 컴퓨터의 포트에 따라 다르기 때문에 장치에 없습니다. 리눅스를 실행하는 사람들은 행복하게 /dev/serial/by-id/<my_usb_device_id>
다른 장치를 자동으로 구별하기 위해 포트를 사용하고 있습니다.
답변
내가 가지고있는 FTDI 브리지의 경우 일련 번호가 이미 장치 이름에 나타납니다 : Linux 및 MacOS /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DA00AG57-if00-port0
에서 (일부에 해당)으로 나타납니다 . (참조 /programming//a/8632603/4896937을 사이의 차이 와 .)/dev/ttyUSBx
/dev/cu.usbserial-DA00AG57
/dev/tty.usbserial-DA00AG57
tty.*
cu.*
다작 내가 가진 해소를 위해 불행하게도, 당신과 같은 문제가 계속 적용 장치로 나타나는 /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0
(일련 번호를 포함하지 않는)은 단순히 /dev/cu.usbserial
및 /dev/tty.usbserial
맥 OS에 (심지어 시스템 정보보기 그것을 위해 일련 번호를 제공합니다). 내가 두 번째 플러그를 꽂으면 어떻게 될지 누가 알 겠어요.
공급 업체에 독립적 인 더 일반적인 답변이있을 수 있지만 일부 장치는 일련 번호를보고하지 않을 수 있습니다.
답변
실제로을 사용하여 장치 ID / 일련 번호에서 직렬 포트 이름으로의 매핑을 찾을 수 있어야합니다 ioreg
. 이 명령을 시도하십시오 :
ioreg -r -c IOUSBHostDevice -l
모든 USB 호스트 장치를 인쇄하고 각 장치의 하위 트리에서 모든 속성을 인쇄합니다. ID 또는 일련 번호를 기반으로 최상위 레벨에서 장치를 찾을 수 있어야합니다. 일단 그것을 찾으면 하위 트리를 스캔하고 결국 class의 객체를 찾을 수 있어야합니다 IOSerialBSDClient
. 여기에는 원하는 속성이 포함됩니다 IODialinDevice
.
프로그래밍 방식으로이 작업을 수행 -a
하려면 ioreg
명령에 옵션을 추가 하면 위 출력의 plist 버전이 출력됩니다. 그런 다음와 같은 라이브러리로이를 구문 분석 할 수 plistlib
있습니다.
전체 ioreg
출력을 읽기가 약간 어려우 므로 IORegistryExplorer 앱을 사용하여이를 시각화하는 것이 도움이 될 수 있습니다 ! 이것은 XCode의 “Hardware IO Tools”패키지로 제공되며, Apple 개발자 사이트에서 다운로드를 검색하여 찾을 수 있습니다 . 내 장치의 모습은 다음과 같습니다.