Const Port » Forums » Offiicial Update Thread
Taylor Robbins
14 posts
1 project

I love making game engines (physics, rendering, math, etc.). I've worked a lot in C, C++, and C#. C++ is garbage, C# is ok, C is pretty good

#12352 Offiicial Update Thread
2 months, 3 weeks ago Edited by Taylor Robbins on July 30, 2017, 6:41 p.m.

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
Or you can download the Source Code from BitBucket:

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:



  • 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)

  • -Professor Sil
    Taylor Robbins
    14 posts
    1 project

    I love making game engines (physics, rendering, math, etc.). I've worked a lot in C, C++, and C#. C++ is garbage, C# is ok, C is pretty good

    #12682 Offiicial Update Thread
    1 month, 3 weeks ago

    Version 1.3 has been released! See the initial post in this thread for changes

    -Professor Sil