2010-06-18 12 views
11

Estoy trabajando en un sistema integrado y utiliza un puerto serie para todos sus fines de registro.Necesita una buena herramienta de registro de puertos en serie

¿Hay alguna herramienta que permita filtrar líneas en diferentes ventanas (o eliminarlas por completo) para poder separar la salida de los distintos subsistemas de registro y eliminar los mensajes no deseados que aparecen varias veces por segundo ?

Preferiría una solución de código abierto, pero podría ser un producto cerrado muy recomendable.

+0

hice esto: – Jeroen3

Respuesta

11

Nunca he pensado en hacer tal cosa, pero aquí hay un producto que podría hacer el truco: Eltima Serial Port Splitter. Afirma ser capaz de tomar un puerto COM y convertirlo en múltiples puertos virtuales para conectarse a muchas aplicaciones. Es posible que pueda tomar cada aplicación y solo mirar un tipo de salida.

En lo personal, me acaba de escribir un guión python con PySerial y algo así como PyQTwxPython o bibliotecas (GUI) para filtrar los datos a diferentes ventanas. Es un lenguaje fácil de aprender y una herramienta útil para el desarrollo de sistemas integrados para cosas como esta.

+5

https://github.com/Jeroen6/MultiTerminal 1 para el pitón + + PySerial (PyQt | wxPython | Tkinter | PyGtk | ncurses | ..) vía – redShadow

3

Yo haría lo siguiente:

Uso Python.

Escribir un programa Python para leer los datos en serie desde el dispositivo, y traducirla en elemento del registro de módulo de registro de Python.

  • Si los mensajes de registro del dispositivo tienen algún tipo de identificador de origen, que traduce a un nombre Python "logger" de acuerdo a sus necesidades, utilizando la función getLogger(). Puede definir nombres de registradores de cualquier forma que necesite, p. para definir la fuente o categoría del registro.
  • Si los mensajes de registro de su dispositivo tienen una indicación de gravedad, se debe traducir al parámetro lvl al método log() del registrador. De lo contrario, simplemente use uno de los métodos de registro como info().

Utilice el Python logging module's config file feature para filtrar los datos como desee en una situación particular.

  • Puede filtrar elementos de registro específicos por gravedad y nombre de registrador.
  • You can log to multiple destinations: Puede filtrar e imprimir ciertos elementos de registro en la pantalla y, al mismo tiempo, filtrar e imprimir ciertos elementos de registro en uno o más archivos. Puede mezclarlos en cualquier combinación que desee. Es muy flexible.
  • Puede tener varios archivos de configuración de registro, para diferentes propósitos de registro, y simplemente especificar cuál desea usar a través de la línea de comando cada vez que ejecuta su programa.

He utilizado el módulo de registro de Python con archivos de configuración para configurar mi filtrado, y es realmente genial.

1

SmarTerm le permite conectarse a muchos puertos serie diferentes en una interfaz con pestañas. También tiene un lenguaje de scripting de Visual Basic que le permite escribir scripts para diferentes necesidades. Escribí bastantes guiones para actualizar el software incorporado y también automatizar el guardado de registros en múltiples pestañas.

alt text

1

personalmente me gustaría utilizar el método de Python descrito anteriormente, pero de otra forma (relativamente fácil) de hacerlo sería utilizar sed.

Construya un par de filtros diferentes para mostrar exactamente lo que desea de la secuencia, y luego canalice en tail -f de su archivo de dispositivo en serie.

0

Utilice screen con grep y tail.

0

Mi primera opción es ejecutar siempre PortMon (originalmente de SysInternals). Tiene una opción de filtro donde se puede escribir en las cadenas de incluir, excluir o destacar:

alt text

he utilizado durante años en Windows NT/2000/XP con gran éxito.

Con suerte, está ejecutando un sistema operativo Windows de 32 bits, porque si está ejecutando 64 bits, tendrá que ir con algo así como el producto de Eltima.

0

Siempre existe el venerable analizador de protocolos.

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

Sólo se puede obtener un color en la pantalla, pero es una solución de registro de puerto serie independiente de la plataforma.

+1

Parece que esta es la forma costosa de obtener 3 vistas diferentes filtradas de la misma secuencia de datos, ¿no necesitarían 3 analizadores de protocolo? –

4

Puede usar el divisor de Eltima con Advanced Serial Data Logger, este software tiene varios plug-ins de filtros que pueden filtrar los mensajes innecesarios.

0

Probar Powershell. Obviamente, se necesita añadir el filtrado, pero esto debe empezar

$port= new-Object System.IO.Ports.SerialPort COM3,9600,None,8,one 
$port.Open() 
While ($TRUE) { 
$port.ReadLine() 
} 
Cuestiones relacionadas