This thread will act as an official update/changelog for Const Port.
Const Port is a custom designed application for reading and writing to serial COM ports. The current design is focused around providing a smooth and appealing way for firmware engineers to read serial output from embedded applications. The application is aimed at being simpler and more directed than alternatives like Putty and Tera Term while also being cleaner and easier to use. Everything is rendered in OpenGL giving a consistent feel across platforms as well as providing the ability to fully polish the interaction and design of the menus.
Currently Const Port is very early in development. The project should be runnable on any Windows 7+ (x64) based system but has only been tested on Windows 10. The platform layer is mostly in place but will be heavily modified for robustness. The application itself supports only the minimum functionality at the moment. Much of the interaction is still done through keyboard shortcuts. You can download a release of the application if you would like to test and experiment with it. Or you can download the source code if you'd like to compile it yourself.
You can download the latest release from http://www.siltutorials.com/blog/2017/10/14/const-port-v15
Or you can download the Source Code from BitBucket: https://bitbucket.org/stampede247/constport
Const Port is being developed by single person and largely for personal use. I do not guarantee it will work on all platforms. However, I would like to get it to a point of stability that it might be released as a fully Open Source and cross platform project that people can contribute to. If you are interested in helping with the project in it's early stages, send me an email at [email protected]. For further information about me and my projects you can visit my website: https://www.siltutorials.com/
- Redesigned the Com Menu to handle various resolutions and long lists of available ports better
- Support for opening COM25-COM256
- Ctrl+W now closes the currently open port
- Escape key closes com menu and popup messages
- Added an input text box to allow better editing features and recall functionality. (Can be disabled in the configuration settings)
- Added support for regular expression triggers that evaluate after every character received
- Added a small running indicator to the bottom left side of the screen
- Added support for pasting from clipboard
- Added support for replacing the matched line with a format string that contains the captured groups in the regular expression
- Fixed a problem where we wouldn't render/respond to operating system events when receiving large amounts of data
- Added better indications for the window not being active
- You can now send binary data to the port by typing in the hexadecimal representation and hitting ctrl+enter (or hold ctrl while pressing the send button)
- Added support for line-wrapping
- Added support for a few for trigger effects (save, new_line, and clear_screen)
- Added better support for keys being held down (repeated key events)
- Added a few temporary check boxes in the overhead menu to toggle various options
- Added support for running a python instance with stdin and stdout routed to through Const Port so you can make scripts that interpret the output of the COM port or perform other tasks when certain things happen.
- Changed the way regular expression triggers are defined the configuration options to allow support for any number of triggers each with it's own list of effects that will be applied when they match the line
- Made the settings button open the configuration file for editing with the default program chosen by the operating system.
- Added an info window with a short description of the program that can be accessed by pressing the information button
- Removed the arrow button from the main menu
- Added options to switch the RX and TX LEDs between square and circular modes
- Added more options for how the RX and TX LEDs are sized
- Added a temporary implementation of routing the recieved text to a file without showing it on the screen. This can be started and stopped with the Ctrl+F shortcut. The file will be named after the COM port and saved in the current working directory.
- Added an option to make the application automatically open the saved file for editing when "Save to File" button is pressed
- Fixed some of the formatting problems with different font sizes so the buttons and windows should work a bit better with smaller or larger font sizes
- Added the ability to choose a separate font size for the main text versus the UI text elements
- Made the application regenerate the fonts when the configuration file is reloaded with Ctrl+R
- Added the ability to disconnect from the current port without connecting to another one.
- Added configuration options to allow renaming of ports with a user defined alias
- Added better support for different naming conventions of the platform layer for available ports
- Made the COM menu tabs more dynamic in how they choose to format their text to allow for longer names and various font sizes
- Added a lot of new color options to allow the user to change the UI theme to much greater accuracy
- Added an example "Neon" color scheme
- Made the rendering of the main menu button circles dynamic to allow for greater customization
- Made the rendering of the exit button on the menus dynamic instead of using a predefined image
- Changed the way the main menu's height is chosen to support a greater variety of options for the RX and TX LEDs and font sizes
- Changed the naming convention of the configuration options to be all lower case and underscores between words
- Added a file cursor that will always show at the end of the file. Disabled the hover cursor and hover line options by default
- Added an option to turn on auto-echo of input text to free up the embedded application the responsibility of echoing the user's input
- Added JSON configuration files in the Resources/Configuration folder that contain a variety of configuration options for Const Port. Edit these at any time and then use the Ctrl+R keybinding to reload the configuration
- Added a RegularExpressions.rgx file in the Resources/Configuration folder. This file uses a custom syntax and is used in conjunction with the configuration files to allow you to easily define regular expressions without having to escape them in JSON strings.
- Replaced the hard-coded line coloring to be defined by the user using Regular Expressions
- Added an option for a regular expression that increments a generic counter. Use this to have Const Port count occurrences of some line for you
- Added an option for a regular expression that automatically adds a line break
- Fixed a bug where we weren't able to open COM ports above COM9
- Did some work to try and get Const Port to run on Windows 7. Still need to do more work on this but I've made some improvements on the required OpenGL version
- The way the buffer is sized and worked with has been completely revamped to allow dynamically sized lines. This allows us to do a lot of cool things. The first of which is Time Elapsed Banners
- Added Time Elapsed Banners which will automatically show up after 15s or more have passed between lines. The minimum time is configurable in the code but cannot be configured after build in this version. Configuration options are coming soon.
- Horizontal scrolling has been added. You can use the arrow keys left and right or Shift+Scroll Wheel. There is no horizontal scrollbar in this version
- Added a Clear button in the upper right hand corner that does the same thing as Ctrl+Shift+C
- Added an End of Buffer button below the scrollbar
- Status messages in the bottom bar can now be delivered from anywhere in the program
- Tx and Rx indicators have been added in the upper right corner allowing you to easily see when data is sent or received
- Save to File button now appears when text is selected. Currently the output file is fixed in the program's directory with a timestamp appended on the end. Ctrl+S does the same thing as pressing the button
- Line marks are displayed slightly different. Thick line marks make the line spacing between lines a little larger to make the break a little more clear
- Escape key now closes the COM menu. Enter key hits the Connect button.
- Added support for COM13-COM24.
- Added a single frame flip right after the window is created to allow for a blank window to show even if the application DLL isn't loaded or rendered correctly. Also allows for the window to show sooner
- Fixed a problem with empty lines being left with a timestamp of 0
- Reformatted the COM menu to include options for Baud Rate, Num Bits, Parity mode, and Stop Bits
- Changes to the COM menu are not applied until you press the Connect button
- Ctrl+[1-9] now open COM port 1-9 rather than just an index in the list of available COM ports
- COM settings are now grouped in a single structure that can be passed around
- Re-enabled the colorful selection for fun (4th of July?)
- Changed the way COM ports are enumerated internally
- Set the supported OpenGL version to 3.0. Modified the shaders to work accordingly
- Added simple line marks. You can click on the line number gutter to add marks. Shift+click makes the marks slightly thicker.
- Ctrl+M marks the last line received (Ctrl+Shift+M for thicker mark)
- A readout in the status menu indicates time since last line was received
- When text is selected the readout indicates how many characters are selected
- Removed max size limit on the window, lowered the minimum size limit
- Disabled the TOPMOST option when compiled for release mode
- Connected COM port is displayed in the window title and in the status bar
- View a list of available COM ports (obtained via attempts to connect to known COM port names)
- Connect to a COM port at static settings (115200 baud, 8bits, No Parity, 1 Stop Bit)
- Entire GUI is rendered in custom OpenGL code (GLFW and GLEW used for window and context creation)
- Support for a large number of lines before we start to drop below 60 FPS
- Text is rendered to Bitmap Font using STB TrueType (Temporary implementation version)
- Text selection using custom outline shader
- Timestamps saved for each line of text received (Recorded at receive of first character in the line)
- Hover over a line and hold cntrl for "Time Ago" readout (Hold Shift for formatted date-time)
- Copy selected text to clipboard (Ctrl+C)
- Currently only supports ANSI characters but handles invalid ANSI characters gracefully
- Type into the view port to send ANSI characters (No auto-echo at the moment)
- Enter sends line feed character '\n'
- Line numbers displayed on left (with hovering position in the status bar)
- Ctrl+Shift+C to clear screen
- Ctrl+A to select/deselect all
- Ctrl+O to open COM port window which shows available COM ports. Click on one to connect to it
- Carrot rendered at mouse hover position, along with hovering line is slightly different color
- Home and End go to beginning and end of buffer
- PageUp and PageDown to move a page of text (or click above or below scrollbar)
- Auto follow end of buffer ONLY if you are scrolled to the bottom already
- Should support 64 bit Windows 7-10 operating systems (Though currently testing has only been done on Windows 10)
- Scroll wheel and arrow up/down to move view
- Platform layer loads the application code from a DLL allowing run-time reloading of the application code
- Platform layer is coded in a very "Handmade Hero Way" with minimal function calls in-between the two layers
- Color of line can be determined by application by sending 0x01-0x04 invalid ANSI characters at the beginning of the line (These are not rendered on the screen and do not get copied to clipboard when selected)
- Application icon is embedded in executable (Currently not loaded into the window information though)