2017-12-17 8 views
0

정기적으로 내 리눅스 PC에 연결된 USB 장치를 감지하기 위해 파이썬에서 폴링 명령 (glob ('/ dev/tty [A-Za-z] *'))을 사용하고 있습니다. 내 신청서. 자동으로 연결된 USB 장치를 감지 할 수있는 방법이 있습니까?리눅스 env에 대한 파이썬의 USB 자동 감지

+0

'dbus' 모듈을 사용할 수 있습니까? – Pavel

+0

'tty'장치 핫 플러그를 모니터하는'pyudev' 코드 https://stackoverflow.com/a/39885881/1778421 –

답변

0

여기가 시작되었습니다. 당신은 당신의 usb 공급 업체 here을 찾을 수 있습니다. current_list_usb 코드를 작성하여 확인해야 할 시간 간격을 설정하여 새 장치가 연결되었는지 여부를 비교하고 확인할 수 있습니다. USB 모듈을 가져올 때 일부 코드를 사용 :

import usb, usb.core, usb.util, usb.backend.libusb1 

...snippet... 

# usb.core.find() 
# find our device 

dev = usb.core.find(idVendor= ...., idProduct= ....) 
#dev_1 = usb.util.find_descriptor(cfg, find_all =True) 

# was it found? 
if dev is None: 
    raise ValueError('Device not found') 

#x = dev.set_configuration() 
#print (dev) 
#print (help(usb.core)) 
if usb.core.find(find_all=True, bDeviceClass=7) is None: 
    raise ValueError('No printer found') 
0

이 작업을 수행하는 일반적인 방법은 새로운 tty이있는 프로그램을 알려주는 udev 규칙을 만드는 것입니다.

사용자 정의 된 udev 규칙은 다음과 같이 보일 수 있습니다 (의이 /etc/udev/rules.d/50-custom-tty.rules를 호출하자.

KERNEL=="ttyUSB[0-9]+", RUN+="/usr/bin/my-program" 

Here's 쓰기 udev 규칙에 좋은 가이드를이 경우

을, 프로그램 /usr/bin/my-program 때마다 실행됩니다 새로운 ttyUSB 장치가/dev에 생성되면 udev는 방금 연결 한 것을 알려주는 환경 변수를 설정합니다. 그러면 주 프로그램에 새로운 ttyUSB이 있음을 알릴 수 있고 그것을 사용해야합니다. 너는 ~해야한다. 작은 경우, 그렇지 않으면 udev 데몬은 시간이 오래 걸리면 죽일 것입니다.

0

libudev를 사용하고 hotplugged 디바이스를 탐지하는 udev 모니터 오브젝트를 생성하는 것이 좋습니다.

https://www.freedesktop.org/software/systemd/man/libudev.html

당신이 C 코드를 작성하지 않고 기능을 사용할 수 있습니다 udev에 랩 이미 좋은 파이썬 라이브러리가있을 수 있습니다 : 당신이 libudev 및 모니터 기능에 대해 배울 수 여기 출발점이 될 것입니다.