Code Monkey home page Code Monkey logo

fullserialmonitor's Introduction

Introduction

This is a Serial monitor I developing with every feature I ever saw on various other monitors or found useful to have. Fully developed in Javascript with Node and Electron. I made it after using many serial monitors and not finding any of them complete, always missing some feature, so I decided to make my own serial monitor that would have all the features needed for a serial monitor.

Included features

  • Every basic feature:

    • COM port selection
    • BaudRate selection with wide range of options
    • Optional autoscroll
    • Optional timestamp
    • Data sending with line ending options and optional hotkey, either Enter or Ctrl + Enter
    • Dark and Light theme
    • Multilanguage support, for now English and Brazillian Portuguese are built in, however anyone can make a translation and add it to the languages folder, (and help with adding them to program if they're kind hearted).
    • Received data clean button
  • Log file for the received data, with the option to choose whether to overwrite or append to the file

  • Graph for the data received on the serial port:

    graph with data
  • Parsers:

    • ESP Exception Decoder: automatic .elf file detection and processor architecture detection
    exception output
    • JSON parser for JSON payloads sent on the serial port
    json output
    • Custom parsers that can be added by the user, also written in JS, activated on custom trigger substrings.
    parser registry

    a deeper explanation on how to use the custom parser feature can be found later on in this readme file

    • Parser entries history similar to the packet history in MQTT Explorer by Thomas Nordquist
    parser history
    • Parser entries with customized colors to help differientiate entries according to the parser similar to MQTT FX by SoftBlade
    exception color json color
  • Text finder on the whole page from electron-find from TheoXiong

    text finder
  • Optional connection status change display

  • Optional disconnection on Boot message from ESP series microcontrollers

  • Standalone ESP Exception Decoder

Planned features to be added on future versions

  • Other useful built in parsers, like ModBus - RTU
  • RTT port connection
  • X, Y, Z MODEM upload for files
  • Increase parser output history usability
  • More customization options for the built in parsers
  • Useful features suggested by the users

Installation process

The installation process is very simple, you simply download the most recent version on the releases page. A Windows version is already built in a zip file, but if you use another platform for now your best option is to build the version yourself. Note: For now I don't have access to linux or Mac computer to test builds for those platforms.

With the .zip file, simply unzip it and put the resulting folder somewhere you'll be able to find it. Only thing to be careful is to not put it somewhere where special admnistrative access is needed to access the files, as that will cause some problems with the program.

How to use the Logging feature

To use the logging feature you can configure it on the config menu, at first it will look like the following:

log file empty

The Log file can be configured into 3 modes:

  • None: No log file will be created and no data logging.
  • Overwrite: Data received on the serial terminal will overwrite any existing file from the previous session. So if you close the program and open it again, once the serial port is connected the previous log will be discarded.
  • Append: All data received on the serial terminal will be appended to the log file, so the log persists between closing and opening the program.

The "Add Timestamp" switch can be checked to add the timestamp to the log file. To select where the log file will be created, simply click on the "Browse..." button and select the folder. An important note is that the folder must have at least one file, it cannot be empty, when you're selecting it through the Browse button, that is due to a limitation of the file browser system. A workaround for using an empty folder is to simply write the path of the folder into the text input, make sure that it ends in a '' or '/' character. In the future this quirk will be fixed.

Once it is all configured, when you connect to the serial port a file called "log.txt" will be created on the folder you selected, and the data received will be treated according to the mode configured.

How to use the built-in ESP Exception Decoder

If you want to use the built in ESP Exception Decoder for the serial port terminal you can just select the .elf file for the current code you're running on your ESP through the browse button:

esp exception decoder section

Which will then open a file explorer for you to select the file. Alternatively you can simply click the "Auto detect" button if you're using the Arduino IDE, which normally puts all it's compilation files in the Temp folder, so the program can find them by getting the most recently compiled. When a line starting with "Backtrace" is received on the serial port, the parser does the decoding automatically and outputs it in the lower half:

exception decoder output

How to use the standalone ESP Exception Decoder

Beyond the built into the terminal Decoder, the program also includes a standalone ESP Exception decoder, you can open it via the tools menu:

standalone exception decoder button

Upon opening the window it will look like this:

empty standalone exception decoder

So just fill in your backtrace and the path to your .elf file:

standalone exception decoder filled in

If you use the Arduino IDE, you can simply click the "Auto Detect" button for it to find the most recently compiled sketch

Once it is all filled in, just click the "Decode" button and the decoded backtrace will appear in the Output div:

standalone exception decoder decoded

How to use the Custom Parsers feature

To use the custom parsers feature, you must first create a .js file with a parser function following the pattern specified in the example file. With the created file, go to the config menu on the custom parsers section:

empty parser div

Click on the "+" button to add a new custom parser

parser registry

Then fill all the fields:

parser registry

Where each field is the following:

  • Name: name of the parser, for easier use on the part of the user
  • Script: path for the script file, can be written manually or found through the browse function
  • Function: name of the function use to parse the data, it is important to be careful that the function name must always be unique.
  • Trigger: substring that must be in the line for it to get sent to the parser, for example in the JSON parser the trigger is "{" and for the exception decoder it's "Backtrace"
  • Color: identification color used on the parser entry in the output history div

Note: all the parsing is done only when the line is fully sent, so it happens when a \n character is received, ending the line.

When the parser is configured the results will start appearing on the output history div for every line that contains the string you filled in the trigger field. It should look something like this:

parser output entry history

How to use the Parser output history feature

As the parsers put out results, they get added to the history div as a button with the time of entry, the payload used in the parser and the color assigned to that parser.

output history

In the right corner you can see there is a "Filters" button

filter example

On this dropdown you can check the parsers you actively want to see, in this case the JSON parser is unchecked so only the exception decoder gets show:

filtered history example

When you click on the parser output entry, the output div gets filled with the parser result for that entry.

How to use the Graph Feature

To use the graph feature, you must first open the window by going to the tools button and then clicking the Grapher button

grapher button

Once you open the window, at least on you first time opening it will look like this:

empty graph window

When you open the config menu it should look something like this:

empty graph tracking config

Click on the "+" button to add a new graph tracking

empty graph tracking item

Then fill all the fields:

filled graph tracking item

Where each field is the following:

  • Name: name of the series, for labeling the series on the graph
  • Trigger: substring at the start of the line used to identify the graph data on the serial port, it will be removed from the line data and the numerical value right after it will be sent to the graph.
  • Color: the color that will be used to display the series

So for example with the graph tracking configured in the example the text received on the terminal will be the following: value15 Where 15 is the value that get added to the graph series and the string "value" is discarted. As with the custom parsers, a new line('\n') character is needed at the end of the data for it to be parsed.

When data starts to come in the serial port, the graph will be filled:

graph window with values

Note that on the top of the screen there is a label for each of the series currently being tracked, in this case there are two series, by clicking on the label you can hide any series you want and then click again to show them once more:

graph window with test invisible

You can set the axis ranges on the config menu:

graph config ranges

If you do not want to manually set the values you can simply check the auto detect slider, that way the graph will set the ranges based on the minimum and maximum values present in the series'.

Finally you can configure how many data points in the X axis you wish to have in the graph. For example, In case you only want 100 points to be shown, you can configure it in the menu:

graph max points

Once that happens, only the most recent 100 points will be shown in the graph, all points beyond that will be discarded. If you do not want any data to be discarded, simply set the value to 0, then all data will be kept in the graph until you manually delete them with the delete button in the corner of the screen.

How to use the Payload sequencer feature

The program includes a feature to program a sequence of packets to be sent via the serial port, to use it you can open it via the tools menu:

payload sequencer button

Upon opening the window for the first time, it will look like this:

empty payload sequencer

To add a packet to the sequence simply click the "Add Packet" button, with that an empty field will be created at the end of the sequence:

empty payload sequencer item

Where each field is the following:

  • Packet: is the field where you will type in the actual data you want to send
  • Delay: is the field where you will put the delay until that packet is sent. It starts counting from the time it send the previous packet, so for the first packet it start counting from the moment you click the "send sequence" button.

payload sequencer window

After you've saved the sequence, you can start sending the sequence, if "Continuous sequence" is checked the sequence will repeat continously, if not it will run the whole sequence and then stop.

Note: the line ending for each of the packets will be the line ending configured at the top of the terminal

fullserialmonitor's People

Contributors

benjamimkrug avatar epac-tom avatar rhysmorgan134 avatar

Stargazers

Wilhelm Zeuschner avatar Michæl avatar  avatar chance avatar Kris avatar Jakob Pearson avatar Jonathan Beri avatar Geoffrey Hunter avatar Ava Chaney avatar Tim Salihu avatar  avatar Grant Rolls avatar Markus avatar  avatar Jarne avatar Jeremy Bowler avatar Ben Guiles avatar Vusal Tagiyev avatar Auke Blankwaard avatar Richard Matthews avatar Alvin avatar Josef avatar  avatar Kevin avatar James avatar Adailton Júnior avatar  avatar  avatar  avatar Tom Szymkowiak avatar  avatar Scott Winder avatar Jonathan Carlson avatar Arun Shivaram avatar Antonin Verdier avatar Hans Harmon avatar Jewel Mahanta avatar aniket_puru avatar  avatar  avatar Ajmal VA avatar Donal Johny avatar  avatar Ankur avatar  avatar  avatar  avatar HL avatar Mark Leyden avatar Henry Goldwire avatar Mickeyy avatar Reda Chouk avatar Omar Elmasri avatar Vojtech Vladyka avatar Jonas STIRNEMANN avatar Eben Olson avatar  avatar Swen Wenzel avatar Embedded Hackster avatar  avatar ruptim avatar  avatar Atkin Engineering avatar Oscar Love avatar  avatar Marco Cutecchia avatar Arend-Jan van Hilten avatar  avatar  avatar Mohd Ramza Anuar avatar Jesse Merritt avatar  avatar Daniel Scott avatar Jeff Karney avatar Allen avatar Kevin Kearney avatar Hayk Darbinyan avatar Sam Foster avatar  avatar  avatar

Watchers

Jeff Karney avatar  avatar Atkin Engineering avatar  avatar  avatar

fullserialmonitor's Issues

intelligent auto

hi could do with some help installing intelligent auto on pi 4

error: invalid comversation from int to libusb hot plug flag [-fpermissive]
#define libusb hotplug no flags 0

Feature Ideas/Request

Looks like a good program, a few things that are deal breakers for me at the moment, and one of the many causes of using a number of different terminals, in no particular order:

  • No way to view/send data in formats other than ASCII. The main one for me is viewing in hex, either instead of ASCII or alongside. Realterm is my go to for this, despite it's UI
  • Display area doesn't offer wrap option
  • Display/log doesn't create new line without usual CR/LF. I work with devices that stream out data in hex, either fixed length or known start/end bytes. With out the display mode I can't use this, but with that added, it would currently result in one long line in the UI and log.

I like the idea of the custom parsers, especially converting binary data to something more readable, but not sure if that would work currently, given the trigger is input as, presumably, ASCII?

Error - Error on writing

Running 1.0.2 I loaded up the tool to have a play with but have found a error that requires killing the program from task manager.

Open the program, select and connect to a port. Open the sequence, added a packet, selected Send Sequence, I don't see anything in either window - not sure if I should. Then select Disconnect in the main window. I then get a Error window, Error on writing. Selecting ok just keeps popping up the same error.
I have to kill it with task manager to close it.

Cannot Log

Following the instructions on the readme To select where the log file will be created, simply click on the "Browse..." button and select the folder.
When going into options the Browse button loads a file dialog that is named Select Folder to Upload and the Ok button is labelled Upload but I'm expecting to select a folder to save logs to.

If I continue to select a folder, I get the Error dialog, Folder completly empty, must have at least one file.
I've tried to recreate the issue but cannot get the same message.

Regardless of that message, it doesn't want to save the folder location as it leave the folder field empty and when I try to connect it warns that Folder for the Log file does not exist.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.