【问题标题】:Python USB Serial ports connectionPython USB 串口连接
【发布时间】:2015-08-15 08:06:04
【问题描述】:

我正在运行一个插入有两个串行端口、一个华为加密狗和一个 zigbee 的 python 代码。我知道为了找出加密狗正在使用哪个端口,我必须使用 gammu。 zigbee 总是使用 dev/ttyUSB0。但是,如果我要在启动时自动运行 Python 脚本,树莓派应该如何知道哪个端口连接到哪个 USB? 有没有一种方法可以让我直接运行短信代码,而无需使用 gammu 来找出端口?

【问题讨论】:

    标签: python connection usb


    【解决方案1】:

    如果您问“我如何判断 /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。 0403 和 6001 的 ID_VENDOR_ID 和 ID_MODEL_ID 对应的是你可以看到的:

    $ 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
    

    【讨论】:

    • 是的尝试过,但我的意思是因为使用华为我需要做 gammu 才能知道我使用哪个端口才能继续发送短信。但问题是我必须测试 3 个端口,ttyUSB0 到 ttyUSB2 才能为华为配置串口。
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多