Python USB串口连接

时间:2015-08-15 08:06:04

标签: python connection usb

我正在运行一个python代码,它插有两个串口,一个华为加密狗和一个zigbee。据我所知,为了找出加密狗使用的端口我必须使用gammu。 zigbee总是使用dev / ttyUSB0。但是,如果我要在启动时自动运行Python脚本,那么raspberry pi应该知道哪个端口连接到哪个USB? 有没有办法我可以直接运行短信的代码,而不必使用gammu找出端口?

1 个答案:

答案 0 :(得分:0)

如果您要问,"如何判断/ dev / ttyUSB0是huawei dongle还是zigbee",那么您可以为每个设备执行以下操作:

udevadm info --name /dev/ttyUSB0 --query property --export

例如,我有一个ftdi串口,命令的输出是:

DEVLINKS='/dev/serial/by-id/usb-FTDI_USB__-__Serial-if00-port0 /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.2:1.0-port0'
DEVNAME='/dev/ttyUSB0'
DEVPATH='/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0'
ID_BUS='usb'
ID_MODEL='USB__-__Serial'
ID_MODEL_ENC='USB\x20\x3c-\x3e\x20Serial'
ID_MODEL_FROM_DATABASE='FT232 USB-Serial (UART) IC'
ID_MODEL_ID='6001'
ID_PATH='platform-bcm2708_usb-usb-0:1.2:1.0'
ID_PATH_TAG='platform-bcm2708_usb-usb-0_1_2_1_0'
ID_REVISION='0400'
ID_SERIAL='FTDI_USB__-__Serial'
ID_TYPE='generic'
ID_USB_DRIVER='ftdi_sio'
ID_USB_INTERFACES=':ffffff:'
ID_USB_INTERFACE_NUM='00'
ID_VENDOR='FTDI'
ID_VENDOR_ENC='FTDI'
ID_VENDOR_FROM_DATABASE='Future Technology Devices International, Ltd'
ID_VENDOR_ID='0403'
MAJOR='188'
MINOR='0'
SUBSYSTEM='tty'
UDEV_LOG='3'
USEC_INITIALIZED='2247071814106'

两个设备的输出应该有足够的差异,以便能够决定哪个是哪个,例如在这种情况下FTDI的ID_VENDOR。 ID_VENDOR_ID和ID_MODEL_ID为0403和6001对应于您可以在以下内容中看到的内容:

$ lsusb   
...
Bus 001 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

如果您的设备可以通过ID_SERIAL进行区分,您可以在/dev/serial/by-id/中找到它们作为相应ttyUSB *的符号链接,例如我的ftdi:

/dev/serial/by-id/usb-FTDI_USB__-__Serial-if00-port0 -> ../../ttyUSB0

如果您每次将设备插入同一个USB端口,您可以在/dev/serial/by-path/下找到相应的ttyUSB作为符号链接,例如:

/dev/serial/by-path/platform-bcm2708_usb-usb-0:1.2:1.0-port0 -> ../../ttyUSB0