Универсальный просмотрщик логов
-
- Posts: 342
- Joined: 16 Jun 2015, 21:45
- Your CAR: Golf II 1.3i
- SECU version: DIY SECU-3T
- Has thanked: 11 times
- Been thanked: 114 times
Универсальный просмотрщик логов
Для девайса из этой темы понадобился просмотрщик логов. Кроме того, хотелось чтобы он понимал и логи секу. В общем, учитывая все возможное разнообразие логов (полей, форматов и т.д.), было решено состряпать свой просмотрщик (поскольку другого не нашлось), в некоторой степени универсальный.
Написан на C#, требует .NET Framework 4 Client. Чтоб заставить его показывать графики нужно задать две вещи - файл шаблона и файл лога. С файлом лога все более менее понятно, жмем File - Open и показываем лог. С файлом шаблона чуть интереснее. Задается просто Settings/Template - Set Template... Программа запоминает шаблон, файл лога нужно переоткрывать при изменении шаблона.
Итак, что такое шаблон и для чего он нужен. Для того чтобы жестко не задавать структуру лог-файла (разделитель, число полей, их порядок и т.д.) решено было сделать конструктор шаблонов, который задает как общие параметры отображения (ось Х, цвет фона и пр.) так и индивидуальные (кривые, толщина, цвет... прочее). В шаблоне ставится соответствие кривой и столбцу данных в лог файле, причем данные можно трансформировать (например, если столбец из сырых данных с АЦП). Кривая добавляется в шаблон кнопкой Add, изменяется кнопкой Modify (чтобы что-то изменить, нужно сначала что-то добавить), удаляется - Delete. Сам шаблон можно открыть - Open, сохранить - Save. Изменение шаблона можно делать по схеме Открыть - Изменить - Пересохранить.
Две основных вкладки настройки шаблона: Имя кривой пишем в Curve. Выставляем остальные параметры и жмем добавить. Потом не забудьте сохранить шаблон. Маленькое замечание по осям (axis) - их можно не отображать (чтобы не нагромождать графики), на пределы лучше указывать, дабы графики выглядели соразмерно.
Маска нужна для отображения ошибки из поля типа 00001000100, какую маску поставим (ее еще надо включить галочкой), ту ошибку и отловим.
Параметры по оси Х берутся либо из файла (автонумерация не включена) - столбец 0, если там формат времени то автоматом будет время по оси Х, если времени в лог файле нет (лог пишется девайсом по таймеру), то ставим автонумерацию, разрешаем ее, трансформируем нужным образом и отображаем на оси Х.
Например, данные из лог файла во вложении по шаблону 1 (время из файла) По шаблону 2 (считаем что запись каждые 20 мс) График интерактивный, можно таскать, ресайзить и т.д. Есть интересное и полезное контекстное меню...
Замечания и предложения приветствуются. Если что непонятно, спрашивайте. Версия пока альфа, потому в файл шаблона и прочие места рецепт от борща вставлять не стоит, хоть основные исключения и обработаны.
Написан на C#, требует .NET Framework 4 Client. Чтоб заставить его показывать графики нужно задать две вещи - файл шаблона и файл лога. С файлом лога все более менее понятно, жмем File - Open и показываем лог. С файлом шаблона чуть интереснее. Задается просто Settings/Template - Set Template... Программа запоминает шаблон, файл лога нужно переоткрывать при изменении шаблона.
Итак, что такое шаблон и для чего он нужен. Для того чтобы жестко не задавать структуру лог-файла (разделитель, число полей, их порядок и т.д.) решено было сделать конструктор шаблонов, который задает как общие параметры отображения (ось Х, цвет фона и пр.) так и индивидуальные (кривые, толщина, цвет... прочее). В шаблоне ставится соответствие кривой и столбцу данных в лог файле, причем данные можно трансформировать (например, если столбец из сырых данных с АЦП). Кривая добавляется в шаблон кнопкой Add, изменяется кнопкой Modify (чтобы что-то изменить, нужно сначала что-то добавить), удаляется - Delete. Сам шаблон можно открыть - Open, сохранить - Save. Изменение шаблона можно делать по схеме Открыть - Изменить - Пересохранить.
Две основных вкладки настройки шаблона: Имя кривой пишем в Curve. Выставляем остальные параметры и жмем добавить. Потом не забудьте сохранить шаблон. Маленькое замечание по осям (axis) - их можно не отображать (чтобы не нагромождать графики), на пределы лучше указывать, дабы графики выглядели соразмерно.
Маска нужна для отображения ошибки из поля типа 00001000100, какую маску поставим (ее еще надо включить галочкой), ту ошибку и отловим.
Параметры по оси Х берутся либо из файла (автонумерация не включена) - столбец 0, если там формат времени то автоматом будет время по оси Х, если времени в лог файле нет (лог пишется девайсом по таймеру), то ставим автонумерацию, разрешаем ее, трансформируем нужным образом и отображаем на оси Х.
Например, данные из лог файла во вложении по шаблону 1 (время из файла) По шаблону 2 (считаем что запись каждые 20 мс) График интерактивный, можно таскать, ресайзить и т.д. Есть интересное и полезное контекстное меню...
Замечания и предложения приветствуются. Если что непонятно, спрашивайте. Версия пока альфа, потому в файл шаблона и прочие места рецепт от борща вставлять не стоит, хоть основные исключения и обработаны.
- Attachments
-
- LogsViewerApp.rar
- (169.73 KiB) Downloaded 451 times
- STC
- Posts: 13843
- Joined: 30 Apr 2013, 23:41
- Your CAR: AZLK 2140
- SECU version: DIY SECU-3
- Location: North Korea
- Has thanked: 2160 times
- Been thanked: 4335 times
- Contact:
Re: Универсальный просмотрщик логов
На .net написан?
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
-
- Posts: 342
- Joined: 16 Jun 2015, 21:45
- Your CAR: Golf II 1.3i
- SECU version: DIY SECU-3T
- Has thanked: 11 times
- Been thanked: 114 times
Re: Универсальный просмотрщик логов
Немного обновил программу. Теперь это вполне удобный и универсальный инструмент.
Что добавлено:
-возможность быстро переоткрывать одним кликом последний лог (полезно при смене шаблона)
-в меню about можно получить сводку по активному шаблону
-добавились пункты Axis Y view и Curve view позволяющие быстро управлять видимостью осей и кривых. Изменения автоматически сохраняются в активный шаблон
В шаблонах:
-возможность включить сетку
-возможность выбрать столбец Х
-выбор числа пропущенных строк (прореживание файла)
-признак видимости кривой
-возможность отображать скорость изменения параметра dValue/dT . Также задается время dT в мс, если точки по Х в формате DateTime, либо в строчках, если автонумерация, либо по разнице по Х если столбец не в DateTime. Трансформация в этом случае тоже работает и можно привести результат к осмысленной размерности
-исправлены мелкие неточности
Из глюков, а скорее особенность zedgraph - при смене активного шаблона, где ось Х была в формате времени, на шаблон, где ось Х не в формате времени, если текущий масштаб был не default (контекстное меню), возможно некорректное отображение формата оси. Лечится просто - либо закрыть а потом открыть программу после смены шаблона, либо через контекстное установить масштаб default и сделать reopen.
При открытии больших логов, возможно, несколько секунд придется подождать.
Чтобы корректно понимались шаблоны старого образца нужно открыть старый шаблон, а потом сохранить его. При этом кривых видно не будет (их параметр видимости будет false), но через меню Curve View можно будет задать видимость нужных кривых, либо в самом конструкторе шаблонов.
При первом запуске нужно установить путь к активному шаблону и открыть лог через open.
Примерный вид: Вопросы по использованию, по логике работы и о замеченных глюках - пишем тут.
Что добавлено:
-возможность быстро переоткрывать одним кликом последний лог (полезно при смене шаблона)
-в меню about можно получить сводку по активному шаблону
-добавились пункты Axis Y view и Curve view позволяющие быстро управлять видимостью осей и кривых. Изменения автоматически сохраняются в активный шаблон
В шаблонах:
-возможность включить сетку
-возможность выбрать столбец Х
-выбор числа пропущенных строк (прореживание файла)
-признак видимости кривой
-возможность отображать скорость изменения параметра dValue/dT . Также задается время dT в мс, если точки по Х в формате DateTime, либо в строчках, если автонумерация, либо по разнице по Х если столбец не в DateTime. Трансформация в этом случае тоже работает и можно привести результат к осмысленной размерности
-исправлены мелкие неточности
Из глюков, а скорее особенность zedgraph - при смене активного шаблона, где ось Х была в формате времени, на шаблон, где ось Х не в формате времени, если текущий масштаб был не default (контекстное меню), возможно некорректное отображение формата оси. Лечится просто - либо закрыть а потом открыть программу после смены шаблона, либо через контекстное установить масштаб default и сделать reopen.
При открытии больших логов, возможно, несколько секунд придется подождать.
Чтобы корректно понимались шаблоны старого образца нужно открыть старый шаблон, а потом сохранить его. При этом кривых видно не будет (их параметр видимости будет false), но через меню Curve View можно будет задать видимость нужных кривых, либо в самом конструкторе шаблонов.
При первом запуске нужно установить путь к активному шаблону и открыть лог через open.
Примерный вид: Вопросы по использованию, по логике работы и о замеченных глюках - пишем тут.
- Attachments
-
- LogsViewerApp_1_1_0_0.rar
- (173.09 KiB) Downloaded 425 times
- STC
- Posts: 13843
- Joined: 30 Apr 2013, 23:41
- Your CAR: AZLK 2140
- SECU version: DIY SECU-3
- Location: North Korea
- Has thanked: 2160 times
- Been thanked: 4335 times
- Contact:
Re: Универсальный просмотрщик логов
Круто
Author of the SECU-3™ project http://SECU-3.org. An open source engine control unit / Ignition control system, (C) 2007.
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
Клуб проекта в Facebook https://www.facebook.com/groups/secu3club
Клуб проекта ВКонтакте https://vk.com/secu3club (вступаем!)
-
- Posts: 4657
- Joined: 18 Sep 2013, 01:58
- Your CAR: ВАЗ-21099 1,5л.
- SECU version: official SECU-3i TBZ
- Location: Украина, Павлоград
- Has thanked: 624 times
- Been thanked: 1020 times
- Contact:
Re: Универсальный просмотрщик логов
Еще не пользовался, но есть пожелания для маленьких экранов - подписи осей сделать рядом с осью, чтобы полезная область была больше. Спасибо за прошу.
60-2/SECU-3iTBZ-v4.9/бенз-газ/ДПДЗ/ДТВ/УДК/ГБО-4/ВЗ.
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
Отчёт ГБО-4 на карбюратор с SECU-3i - http://secu-3.org/forum/viewtopic.php?f=19&t=1549
Продаю бортовой компьютер - viewtopic.php?p=47182#p47182
-
- Posts: 342
- Joined: 16 Jun 2015, 21:45
- Your CAR: Golf II 1.3i
- SECU version: DIY SECU-3T
- Has thanked: 11 times
- Been thanked: 114 times
Re: Универсальный просмотрщик логов
Тут тоже есть нюансы - в зависимости от длины названия, текст может налезать на градуировку оси, если отображать на графике то может залазить на кривые, отображать прямо на конце оси - подвинет левое или верхнее поле... Если чего, есть возможность через шаблон вообще убрать подпись. Размер шрифта надписей настраивается (в шаблон пока не вводил дабы не загромождать его), его можно сделать поменьше. Но самая главная проблема, непонятно как смещать подписи осей, стандартных методов zedgraph не предоставляет, а лезть в его исходники.... ))) ну Вы понимаете ))
Плюс учитывая возможность гибко масштабировать сам график и окно программы - не думаю что это большая проблема...
Плюс учитывая возможность гибко масштабировать сам график и окно программы - не думаю что это большая проблема...
-
- Posts: 342
- Joined: 16 Jun 2015, 21:45
- Your CAR: Golf II 1.3i
- SECU version: DIY SECU-3T
- Has thanked: 11 times
- Been thanked: 114 times
Re: Универсальный просмотрщик логов
Теперь несколько оптимизированная версия ))
Замечание по скорости открытия лога - версия 1.1.0.0 открывала файл на около 6000 записей порядка 6 секунд. Методом Copy/Paste я увеличил размер лога до 60000 записей - 13.6 Мбайт. Открывала она его 2мин 05 сек (на моем компьютере). Мне показалось что это слишком много, решил пройтись по коду студийным профайлером, в итоге нашел несколько временеемких строчек, которые затесались в цикл обработки строк, где им не место. Переместив их куда положено, получил следующие результаты: 6000 записей - менее секунды, практически сразу, 60000 - 6 секунд. Разница впечатляющая ))
После открытия версии работают с одинаковой скоростью. О скорости, на моем компе при 60000 записях (при периоде записи 100мс это 100 мин лога) и 5 кривых, график можно вполне комфортно рассматривать. Легкие подтормаживания есть, но не критичные. Если увеличить лог еще в 2 раза (120000), время открытия около 10-11 сек, но рассматривать график уже неудобно из-за тормозов.
Замечание по скорости открытия лога - версия 1.1.0.0 открывала файл на около 6000 записей порядка 6 секунд. Методом Copy/Paste я увеличил размер лога до 60000 записей - 13.6 Мбайт. Открывала она его 2мин 05 сек (на моем компьютере). Мне показалось что это слишком много, решил пройтись по коду студийным профайлером, в итоге нашел несколько временеемких строчек, которые затесались в цикл обработки строк, где им не место. Переместив их куда положено, получил следующие результаты: 6000 записей - менее секунды, практически сразу, 60000 - 6 секунд. Разница впечатляющая ))
После открытия версии работают с одинаковой скоростью. О скорости, на моем компе при 60000 записях (при периоде записи 100мс это 100 мин лога) и 5 кривых, график можно вполне комфортно рассматривать. Легкие подтормаживания есть, но не критичные. Если увеличить лог еще в 2 раза (120000), время открытия около 10-11 сек, но рассматривать график уже неудобно из-за тормозов.
- Attachments
-
- LogsViewerApp_1_1_0_2.rar
- (173.1 KiB) Downloaded 504 times
-
- Posts: 342
- Joined: 16 Jun 2015, 21:45
- Your CAR: Golf II 1.3i
- SECU version: DIY SECU-3T
- Has thanked: 11 times
- Been thanked: 114 times
Re: Универсальный просмотрщик логов
Эта программа - инструмент для удобного просмотра логов. Принимать решение по настройке придется самому, на основе их анализа. В поиске оптимальных кривых главное критерии, которые надо изложить и осознать в явном виде, а автоматизация - дело второе.maksim wrote: Эта программа может решить этот вопрос?