Serial Port Data Logger Chart

admin

Serial data plotting programs. Logging of the serial port data in the python packages. Includes a terminal emulator or serial data logger. Serial Data Recorders Measure and Record ASCII Data from a Serial Port.

13 thoughts on “ [MATLAB] Real Time Serial Data Logger ” Chris Dourd on October 30.% define COM port # plotTitle = ‘Serial Data Log’;% plot title. DI-194RS Data Logger starter kit with Windaq software. Serial port data acquisition starter kit. Includes WinDaq Chart Recorder Software.

Active3 years, 10 months ago

I'm working on an embedded system and it uses one serial port for all it's logging purposes.

Is there a tool out there that allows you to filter lines into different windows (or remove them altogether) so that I can separate the output of the various logging sub-systems and remove spam messages that show up multiple times a second?

I'd prefer an open-source solution, but a highly-recommend closed product might do.

Bill KBill K
54.9k13 gold badges87 silver badges140 bronze badges

closed as off-topic by Machavity, Pang, Makyen, Paul Roub, Petter FribergMar 17 '17 at 20:35

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • 'Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.' – Machavity, Pang, Makyen, Paul Roub, Petter Friberg
If this question can be reworded to fit the rules in the help center, please edit the question.

10 Answers

I've never thought of doing such a thing, but here's one product that might do the trick: Eltima Serial Port Splitter. It claims to be able to take one COM port and turn it into multiple virtual ports to connect to many applications. You might be able to take each application and just look at one kind of output.

Personally, I would just write a python script with PySerial and something like PyQT or wxPython (GUI libraries) to filter the data to different windows. It's an easy language to learn and makes a handy tool for embedded systems development for things such as this.

Jay AtkinsonJay Atkinson
2,6861 gold badge21 silver badges39 bronze badges

I would do the following:

Use Python.

  • Use Python's logging module
  • Use 3rd-party pySerial module

Write a Python program to read the serial data from the device, and translate it into log item for Python's logging module.

  • If your device's log messages have some sort of source identifier, translate that to a Python 'logger' name according to your needs, using the getLogger() function. You can define logger names any way that you need, e.g. to define log source or category.
  • If your device's log messages have a severity indication, translate it to the lvl parameter to the logger's log() method. Otherwise just use one of the logger methods such as info().

Make use of the Python logging module's config file feature to filter the data as you want in a particular situation.

  • You can filter particular log items by severity and logger name.
  • You can log to multiple destinations: You can filter and print certain log items to screen, and at the same time filter and print certain log items to one or more files. You can mix these in any combination that you want. It's very flexible.
  • You could have several logging config files, for several different logging purposes, and simply specify which one you want to use via the command line each time you run your program.

I've used Python's logging module with config files to set up my filtering, and it's really terrific.

Craig McQueenCraig McQueen
28.4k25 gold badges102 silver badges158 bronze badges

You can use the Eltima's splitter with Advanced Serial Data Logger, this software has several filter plug-ins that can filter out unnecessary messages.

Helen DownsHelen Downs

I guess it will depend on the format your logs have. If they looks like (or you can make them look like) the syslog format, you can try the following:

Data
AlejandroAlejandro

I would personally use the Python method described above, but another (relatively easy) way to go about it would be to use sed.

Build a couple different filters to show precisely what you want from the stream, and then pipe in tail -f of your serial device file.

The Performance Life. Mark Verstegen and a team of experts and. Core Performance founder Mark Verstegen. The Performance Life 21 Workout Songs to Download Right. Core performance mark verstegen free download.

Paul McMillanPaul McMillan
16.7k7 gold badges48 silver badges68 bronze badges

SmarTerm allows you to connect to many different serial ports in a tabbed interface. It also has a Visual Basic like scripting language that allows you to write scripts for different needs. I wrote quite a few scripts for updating embedded software and also automating the saving of logs in multiple tabs.

Mark NorgrenMark Norgren
1,1345 gold badges21 silver badges28 bronze badges

Try Powershell. You obviously need to add filtering, but this should get you started

Mathias FMathias F
9,21118 gold badges70 silver badges136 bronze badges
sanmaisanmai
11.4k8 gold badges44 silver badges68 bronze badges

My first choice is to always run PortMon (originally from SysInternals). It has a filter option where you can type in strings to include, exclude, or highlight:

I have used this for years on Windows NT/2000/XP with great success.

Hopefully, you're running a 32-bit Windows OS, because if you're running 64bit, you'll have to go with something like Eltima's product.

DaveDave
9,66712 gold badges76 silver badges136 bronze badges

There's always the venerable protocol analyzer.

You might only get one color on the screen, but it's a platform independent serial port logging solution.

WildCrustaceanWildCrustacean
5,1661 gold badge26 silver badges40 bronze badges

Data Logger Water

Not the answer you're looking for? Browse other questions tagged debuggingembeddedserial-port or ask your own question.