2010-06-18 2 views
11

Я работаю над встроенной системой и использует один последовательный порт для всех его целей ведения журнала.Нужен хороший инструмент ведения журнала последовательного порта

Есть ли там инструмент, который позволяет фильтровать линии в разные окна (или вообще удалять их), чтобы я мог отделить выходные данные от различных подсистем систем регистрации и удалить спам-сообщения, которые появляются несколько раз в секунду ?

Я бы предпочел решение с открытым исходным кодом, но очень рекомендуемый закрытый продукт может сделать.

+0

Я сделал это: https://github.com/Jeroen6/MultiTerminal – Jeroen3

ответ

11

Я никогда не думал о таком, но вот один продукт, который может сделать трюк: Eltima Serial Port Splitter. Он утверждает, что может принимать один COM-порт и превращать его в несколько виртуальных портов для подключения ко многим приложениям. Возможно, вы сможете принять каждое приложение и просто посмотреть на один вид вывода.

Лично я бы просто написать сценарий python с PySerial и что-то вроде PyQT или wxPython (библиотека GUI) для фильтрации данных в разные окна. Это простой язык для изучения и делает удобный инструмент для разработки встроенных систем для таких вещей, как это.

+5

+1 для Python + PySerial + (PyQt | WxPython | Tkinter | PyGtk | ncurses | ..) way – redShadow

3

Я хотел бы сделать следующее:

Использованием Python.

Напишите программу Python для чтения последовательных данных с устройства и перевести его в пункт журнала для модуля регистрации Python.

  • Если сообщения журнала в вашем устройстве есть какой-то идентификатор источника, перевести это на Python "logger" имя в соответствии с вашими потребностями, используя функцию getLogger(). Вы можете определить имена журналов любым способом, который вам нужен, например. для определения источника или категории журнала.
  • Если сообщения журнала вашего устройства имеют индикацию серьезности, переведите его на параметр lvl в метод log() регистратора. В противном случае просто используйте один из методов регистрации, например info().

Использовать Python logging module's config file feature для фильтрации данных, как вы хотите, в конкретной ситуации.

  • Вы можете фильтровать отдельные лог-файлы по строгости и имени регистратора.
  • You can log to multiple destinations: Вы можете фильтровать и печатать определенные элементы журнала на экране и в то же время фильтровать и печатать определенные элементы журнала в один или несколько файлов. Вы можете смешивать их в любой комбинации. Он очень гибкий.
  • У вас может быть несколько конфигурационных файлов журнала для нескольких разных целей ведения журнала и просто укажите, какой из них вы хотите использовать с помощью командной строки при каждом запуске вашей программы.

Я использовал модуль регистрации Python с конфигурационными файлами, чтобы настроить фильтрацию, и это действительно потрясающе.

1

SmarTerm позволяет подключаться ко многим различным последовательным портам в интерфейсе с вкладками. Он также имеет Visual Basic, такой как язык сценариев, который позволяет писать сценарии для разных потребностей. Я написал довольно много сценариев для обновления встроенного программного обеспечения, а также автоматизацию сохранения журналов на нескольких вкладках.

alt text

1

Я лично использую метод Python, описанный выше, но другой (относительно простой) способ идти об этом было бы использовать sed.

Создайте несколько разных фильтров, чтобы точно показать, что вы хотите от потока, а затем проведите в tail -f вашего файла последовательного устройства.

0

Мой первый выбор - всегда запускать PortMon (первоначально из SysInternals). Она имеет опцию фильтра, где вы можете ввести в строку включить, исключить или выделить:

alt text

Я использовал это в течение многих лет на Windows NT/2000/XP с большим успехом.

Надеюсь, вы используете 32-разрядную ОС Windows, потому что, если вы используете 64-разрядную версию, вам придется пойти с чем-то вроде продукта Eltima.

0

Всегда есть почтенный анализатор протоколов.

http://shop.ebay.com/?_from=R40&_trksid=p3907.m570.l1313&_nkw=RS-232+protocol+analyzer&_sacat=See-All-Categories

Вы можете получить только один цвет на экране, но это не зависит от платформы решения каротажа последовательного порта.

+1

Похоже, что это дорогой способ получить 3 разных отфильтрованных представления одного и того же потока данных - для этого не потребуется 3 анализатора протоколов? –

4

Вы можете использовать сплиттер Eltima с Advanced Serial Data Logger, это программное обеспечение имеет несколько фильтрующих плагинов, которые могут отфильтровывать ненужные сообщения.

0

Попробуйте Powershell. Вы, очевидно, нужно добавить фильтрацию, но это должно вам начать

$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one 
$port.Open() 
While ($TRUE) { 
$port.ReadLine() 
} 
Смежные вопросы