Raspian: Статическая карта / dev / ttyUSB *

Для этого решения требуется GNU awk :

NR == FNR {
    split($6, arr, "-");
    date = mktime(sprintf("%4d %02d %02d 00 00 00", arr[1], arr[2], arr[3]));
    if (!start[$5] || date < start[$5]) {
        start[$5] = date;
    }
    if (date > stop[$5]) {
        stop[$5] = date;
    }
    next;
}

{
    print $0 " " int((stop[$5] - start[$5]) / (3600 * 24));
}
1
14.01.2019, 00:09
2 ответа

Для последовательных устройств вы должны найти их имена по топологии в /dev/serial/by-path/, поэтому, если вы используете те же концентраторы USB и порты, они должны оставаться постоянными. Например:

ls -l /dev/serial/by-path/pci-0000:04:00.0-usb-0:2.1.1:1.0-port0
... /dev/serial/by-path/pci-0000:04:00.0-usb-0:2.1.1:1.0-port0 ->../../ttyUSB0

Точно так же вы должны найти устройства по имени, иногда включая серийный номер, в разделе /dev/serial/by-id/, например:

 ls -l /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5771WOA-if00-port0
... /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5771WOA-if00-port0 ->../../ttyUSB0
2
27.01.2020, 23:24

Для этого можно использовать правила udev. Правило udev может сопоставлять USB-устройство по его серийному номеру и позволяет создать альтернативное имя для устройства в /dev.

Подобного правила udev должно быть достаточно для создания символической ссылки в /dev, указывающей на реальный узел устройства:

SUBSYSTEM=="usb", ATTRS{serial}=="<serial number>", SYMLINK+="USBserial1"

Подробнее см. Написание правил udev Дэниела Дрейка.

1
27.01.2020, 23:24

Теги

Похожие вопросы