COM

Const Port v1.6

Another version of Const Port is ready. And with this version comes the first release of the OSX version of Const Port. I've done a decent amount of work trying to get the OSX version to run inside an application bundle so hopefully it will be easy to install. That being said I know there are still a lot of things to learn about distributing on OSX. I am largely a windows user I must admit so if anybody has any suggestions I'm open to all critique.

I'm going to try and keep the explanation short here since I don't have a whole ton of time today. There are a couple of major features I'd like to point out in this version. The first is the new and improved Com Menu:

ConstPort1_6-1.png

The menu layout has been redesigned to be more friendly to tall windows and a large number of available ports. It handles really small window resolutions quite nicely and it now opens on startup automatically.

Another nice feature that's been added is the input text box. Instead of echoing the characters directly to the port you can now type into an editable text box near the bottom of the screen. This allows for much nicer editing features and relieves the application of the burden of echoing characters and handling backspaces. It also allows us to record previously input lines and allow you to easily recall them using up/down arrows.

There's a lot of other small features and improvements and some major reworkings of some of the core platform functionalities as well. These have both fixed a lot of bugs and added a decent amount more. There's still a long list of things that I'd like to get fixed but I think in the interest of time I'd like to release it as it is. If you run into any bugs feel free to report them on the github, Handmade Network, or as a comment on this post and I will be sure to get them on the list if they aren't already.

Alright enough talk, here's the download links:

Changelog:

  • 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

Const Port v1.2

Const Port version 1.2 is now finished. I added a 1.1 version to the bitbucket repository but there was only a few random features added so I didn't go through a full release announcement process. 

Version 1.2 is mainly focused around adding the ability to configure the UART settings (Baud Rate, Parity, etc.) through the COM menu. There's also a lot of other smaller features and fixes added on the side. See the changelog below for a full list of features.

The updated COM menu

The updated COM menu

Changelog:

[1.2]

  • 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

[1.1]

  • 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
  • Disabled the TOPMOST option when compiled for release mode
  • Connected COM port is displayed in the window title and in the status bar

Const Port v1.0

So over the past year I've been working as a firmware developer and I've been frustrated with the lack of quality tools for tasks that I perform daily. I've toyed with the idea of making my own version of these tools but many of them are out of the scope of a one person development team.

However, I got the idea one day to make a better serial COM port reading application. I've tried using Putty, Tera Term, Real Term and many others, and they all have certain perks but each one comes with a heavy load of quirks and design problems. Most of them try hard to be an all-in-one terminal application that supports many types of text communications. Putty is a great tool if all you are doing is SSHing into a remote server, however when it comes to data stream reading it doesn't provide most of the features I would like. And some of the features I would expect of even the simplest text editor it has sacrificed at the hand of trying to be an All-In-One Application. 

So I decided to start making my own application. Since I spend most of my day reading debug output from my embedded applications it would be a huge time saver to have something that provides me with the functionality I need. And while I'm at it, it will provide a great platform for experimentation with features that I think would be fun or exciting.

I started working on it mid last week. I started by stripping the platform layer I had from my last project and some GLFW/GLEW code I had from the project before that and started creating a simple architecture. Like all of my projects recently it supports dynamically reloaded code with a clean line between application and platform layer. With OpenGL as the rendering technology we should be able to port it nicely to other platforms later, though for now it only works on windows. The whole thing is hand written, even the math functions for Matrices and Vectors are my own. The project compiles in C++ using the MSVC compiler however most of the code is written to C like standards.

After about a week of work I'm surprised how far the project has come. Much of the basic functionality came together quickly and I've even had time to add some of the nice features I've wanted to try. There's still a lot of things to be done before I can say it's releasable, however I feel like it already at a point that I can use it for real use at work.

The name is temporary, and likely to be changed in the future

The name is temporary, and likely to be changed in the future

I figure now that it is somewhat functional I will begin releasing versions for people to download if they would like. Keep in mind that the program DOES NOT support many of the features you might expect from a finished application. For example, currently you can only open a COM port at 115200, 8n1 settings since the UI doesn't have a place for configuration yet. If you'd like to change it, you have to recompile the application. However, since I am releasing the source code you are welcome to do so. You'll have to compile with GLEW and GLFW but other than that you should be able to get it working with only some minor path tweaks to the build.bat file.

So with all that said, if you'd still like to download it and check it out you can get a windows (x64) compiled version here:

Or you can find the source code on BitBucket: 

Since the application is so unfinished I can't guarantee that I'll be able to get to any bug reports any time soon. You can still log them on bitbucket if you'd like though. I also won't accept any pull requests. However if you have any feature suggestions I'm happy to hear them, you can email me at robbitay@gmail.com