2013-11-15 2 views
0

내 Arduino와 USB를 통해 통신하는 OSX 용 루비 프로그램을 작성하고 싶습니다. 그 목적으로 직렬 포트 gem을 사용할 것입니다.연결된 USB 장치가/dev /인지 확인

port_str = "/dev/ttyUSB0" #may be different for you 

가 어떻게 스캔하고 아두 이노를 발견하고 어떤 포트 I이 자동으로 연결해야하는 알 수 있습니다 :

나는 말한다 샘플 코드를 발견? (OSX 사용) 고마워! 아두 이노 장치는 하드 아두 이노 비 아두 이노 포트를 구별 할 수있게, USB 직렬 포트로 표시하기 때문에

+0

'lsusb'를 파싱 해 보셨습니까? – screenmutt

+0

내 질문을 편집했습니다. OSX – Himberjack

+0

https://github.com/jlhonora/lsusb? – screenmutt

답변

1

이 일반적인 방법으로 할 까다로울 수있다.

짐승 - 강제 방법은 다음과 같습니다 차례로 열려있는 USB 시리얼 장치를() 각 열거하고 펌웨어 부팅 헤더가 다른 쪽 끝에서 전송되는 경우를 참조하십시오. OSX에서 USB 직렬 장치는 /dev/tty.*에 있지만 향후 OS 업데이트로 변경 될 수 있습니다. 이 방법은 효과가 있지만 느리고 시간에 민감 할 수 있습니다. 나는 머리글을 보내기 전에 Arduino의 시작 지연뿐만 아니라 간단한 "안녕하세요, 거기 있습니까?"명령을 사용하여 호스트가 생명의 징후를 강타 할 수 있음을 알았습니다.

또한 마지막으로 발견 된 포트를 저장하여 후속 앱을 시작하면 해당 포트를 먼저 시도 할 수 있습니다.

변형 : 사용자가 시작시 Arduino를 플러그인하도록 요청하는 경우/dev에 USB 포트를 나열하고 사용자가 플러그인되어 있는지 확인한 다음 포트를 다시 나열 할 수 있습니다. 새로 등장한 장치가 Arduino 일 가능성이 큽니다.

다음 단계에서

, 당신은 USB 공급 업체 및 제품 ID (VID & PID)에서 볼 수 있었다. 그러나이 ID는 모두 Arduino-land의지도 위에 있습니다. 모델, 버전, 개정판, 중국어 복제본 및 다양한 Arduino 호환 장치에 따라 다릅니다. 이 writeup at Adafruit을 참조하십시오.

그냥 일이 매우 좁은 하드웨어 세트와 함께 작동하도록하려는 경우 (예를 들어, 당신의 벤치에 한 아두 이노), 당신은 USB 장치 정보를보기 위해 OSX 명령을 사용할 수 있습니다

system_profiler SPUSBDataType 

을 내 시스템으로, 내가 얻을 : /dev/cu.usbmodem3d11

하는 01,238,123,435,946,791,563,267,527,773를 참조하십시오

... 
USB Bus: 

    Host Controller Location: Built-in USB 
    Host Controller Driver: AppleUSBUHCI 
    PCI Device ID: 0x7fff000027c9 
    PCI Revision ID: 0x7fff00000002 
    PCI Vendor ID: 0x7fff00008086 
    Bus Number: 0x3d 

    Communication Device: 

     Product ID: 0x0043 
     Vendor ID: 0x2341 
     Version: 0.01 
     Serial Number: 75331313133351800000 
     Speed: Up to 12 Mb/sec 
     Manufacturer: Arduino (www.arduino.cc) 
     Location ID: 0x3d100000/2 
     Current Available (mA): 500 
     Current Required (mA): 100 

위치 ID가 (0x3d100000/2) 장치 이름과 일치하는 것은 Ruby 스크립트에서 명령 줄 명령을 실행하는 데 사용됩니다.

관련 문제