Как читать и делать min / max / avg из потока NMEA

У меня есть метеостанция, прикрепленная к моему устройству, плетущая NMEA 0183 on /tty/USB0

Я alreeady разобрался, как разбирать данные и эхо, что я хочу в сценарии.

Теперь мне нужно /tty/USB0 файл /tty/USB0 в файл, а затем, когда я вызываю свой скрипт, я хочу, чтобы он отображал min / max / avg для определенных полей с разделителями-запятыми.

Существующий код: выводит данные из метеостанции во временный файл, а затем отображает этот файл на экране

 #!/bin/sh awk -F, '/\$WIMDA/ {print $4*1000" millibars""\n" $6" Celsius""\n" $10"% Humidity""\n" "Wind Direction "$14 " Degrees""\n" "Wind Speed "$20*3.6 " km/h""\n"; fflush(); exit }' /dev/ttyUSB0 > weather1.txt cat weather1.txt 

Я хочу сделать это до $6 $20 .

One Solution collect form web for “Как читать и делать min / max / avg из потока NMEA”

Вы можете начать с timestamping данных по мере их получения в файл журнала:

 awk '{print strftime("%Y.%m.%d.%H%M%S ") $0}' </tty/USB0 >>logfile 

Вы можете выбрать формат, который легко разобрать. Конечно, данные, возможно, уже имеют временную метку. В приведенном выше примере указаны строки с фиксированной шириной даты и времени, например:

 2015.07.07.093953 

В сценарии вы можете просмотреть данные и извлечь интересующие вас записи. Например, для среднего / максимального использования последних 24 часов в вашем сценарии оболочки:

 start=$(date --date="-1 days" +"%Y.%m.%d.%H%M%S") 

Это получает отметку времени в течение 24 часов в том же формате. Затем вы можете получить максимальное и среднее значение:

 awk -v start="$start" <logfile ' $1>=start { if($7>max7)max7 = $7 tot21 += $21+0 numdone++ } END { printf "max %g, ave %g\n",max7,tot21/numdone } ' 

Обратите внимание, что в начале строки есть дополнительное поле, вам нужно $ 7 для поля $ 6. Выбирая формат даты с фиксированной шириной с первым и последним годами, мы можем провести простое сравнение строк между датами.

  • Как безопасно вставить пароль пользователя в файл?
  • Домашний путь пользователей в сценарии bash
  • Поиск длины сеанса терминала
  • Доступ к экранам назад и вперед через скрипт bash
  • Есть ли что-то эквивалентное getch () в ksh?
  • Как я могу проверить RUNLEVEL из сценария bash на Rasbpian?
  • Добавить в файлы
  • Обновление файлов конфигурации в скрипте, который ссылается на них?
  • Соедините каждую строку файла с определенной переменной во второй команде
  • Могу ли я запускать скрипты Bash во FreeBSD без их модификации?
  • сценарий оболочки заменяет только первую строку в переменной
  • Linux и Unix - лучшая ОС в мире.