rs232 к usb, не работающему

Я не знаком с расширением .ts, но предполагая, что это какой-то тип видеофайла, вы можете использовать ffmpeg для определения длительности файла следующим образом:

$ ffmpeg -i some.mp4 2>&1 | grep Dura
  Duration: 00:23:17.01, start: 0.000000, bitrate: 504 kb/s

Затем мы можем разделить этот вывод, выбрав только длительность.

$ ffmpeg -i some.mp4 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)"
00:23:17.01

Так что теперь нам нужен только способ итерации по нашим файлам и сбора этих значений продолжительности.

$ for i in *.mp4; do
    ffmpeg -i "$i" 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)"; done
00:23:17.01
00:23:17.01
00:23:17.01

ПРИМЕЧАНИЕ: В данном примере я просто скопировал свой файл-пример some.mp4 и назвал его 1.mp4, 2.mp4, и 3.mp4.

Преобразование времени в секунды

Следующий фрагмент возьмет длительность сверху и преобразует ее в секунды.

$ for i in *.mp4; do 
    dur=$(ffmpeg -i "$i" 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)");
    date -ud "1970/01/01 $dur" +%s; done
1397
1397
1397

Это берёт наши длительности и помещает их в переменную, $dur, по мере того, как мы перебираем файлы. Команда date затем используется для вычисления количества секунд синусоидальной эпохи Unix (1970/01/01). Вот вышеприведенная команда date разбита так, чтобы было проще увидеть:

$ date -ud "1970/01/01 00:23:17.01" +%s
1397

NOTE: Использование date таким образом будет работать только в том случае, если все ваши файлы имеют продолжительность < 24 часа (т.е. 86400 секунд). Если вам нужно что-то, что может обработать большую длительность, вы можете использовать это в качестве альтернативы:

sed 's/^/((/; s/:/)*60+/g' | bc
Пример
$ echo 44:29:36.01 | sed 's/^/((/; s/:/)*60+/g' | bc
160176.01

Подсчет времени

Затем мы можем взять вывод нашего цикла для и выполнить его в команде paste, которая будет включать знаки + между каждым номером, например, таким образом:

$ for i in *.mp4; do 
    dur=$(ffmpeg -i "$i" 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)");
    date -ud "1970/01/01 $dur" +%s; done | paste -s -d+
1397+1397+1397

Наконец, мы запускаем эту команду в калькулятор командной строки, bc, чтобы просуммировать их:

$ for i in *.mp4; do 
    dur=$(ffmpeg -i "$i" 2>&1 | grep -oP "(?<=Duration: ).*(?=, start.*)");
    date -ud "1970/01/01 $dur" +%s; done | paste -s -d+ | bc
4191

В результате получим общую длительность всех файлов, в секундах. Разумеется, при необходимости это можно преобразовать в какой-нибудь другой формат.

0
01.10.2014, 04:50
1 ответ

Если скорость соотношения и бода неверна, консоль просто не будет работать, и она очень вряд ли будет отображать что-либо вообще.

Если это что-то отображается, скорость четности и бода должно быть в порядке.

Как правило, консоли Cisco требуют следующих настроек:

9600 baud, 8 data bits, no parity, and 1 stop bit.

Это документ, который научил меня большинству из того, что я знаю об этом, и это очень ориентирован на ядр:

user usb-последовательная документация

Установите скорость передачи данных, биты данных, четность и стоп-сигнал

stty -F /dev/ttyACM0 cs8 9600 -parenb -cstopb

Руководство STTY

Теперь вы, какую программу вы используете в качестве серийной консоли?

Попробуйте подключиться к тому, что вы используете.

Я буду смотреть, если есть какие-то конкретные проблемы с этим ядром, поскольку Ubuntu включает в себя пакеты без FOSS .... Я дам вам знать мои выводы.

2
28.01.2020, 02:37

Теги

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