Const Port v1.4

Lately things have gotten really busy with the Eclipse and family visiting so it's taken me a little while to get this version ready to go.

I've added a couple new big features that I hope people are going to like. The first and foremost feature is configuration files. I've set up a nice system to allow you to change many of the features of Const Port through configuration files found in the Resources/Configuration folder.

There are 3 files currently. GlobalConfig.json, PlatformConfig.json, and RegularExpressions.rgx. All three can be opened and edited by a text editor of your choice. The .json files are parsed using the JSMN (pronounced "Jasmine") library which can be found here. The .rgx file is parsed using a simple custom syntax parser. There's a brief explanation of the file format in the file itself but overall it's a really straightforward way of allowing you to input regular expressions without having to escape them in JSON strings.

There's a large variety of things you can change about the application and I'm adding more options all the time. I would like to make as many things modifiable as possible. Later on I might decide to scale back and get rid of some of the unneeded options or put them in a separate file so they don't confuse people. However, for now I'm just going to keep throwing out new options and see what sticks. So if you have any options you'd like to see added just let me know.

Be warned: One side effect of having so many options is that I haven't tested all the options. I'm sure it's easy to crash the application by putting large numbers or weird combinations of options. Once we have a more solid list of options I will start bounds checking the inputs and confirming that the options are valid. For now however, just be nice with your inputs and you should be fine.

With the addition of options it's now entirely possible to change the color scheme of Const Port to whatever you like. The UI is rendered using a combination of various grays, blacks, and whites. However you can change these to whatever colors you like using a variety of JSON color formats.

The second major addition that was made was regular expression support. (Hence the RegularExpressions.rgx file) I've decided to try and use the C++ library Boost.Regex to allow me to add support for various features that will use regular expressions in the future. The main features right now are hard coded as configuration options in the GlobalConfig.json file. Each of these regular expressions is checked against each line that comes in (after we receive the new line character(s)) and if a match is found we produce some change. These have replaced the hard-coded line coloring methods and opened the line colors up for use with whatever input you'd like to color. You can only define 1 regular expression per color right now and they have to be the Highligh1-Highlight5 colors but this will change in the future to allow you to completely customize the look and feel of your input.

There's a few more features but I think I've gone on long enough. Here's your download link:

The debug version is the same as the regular but with the Console Window enabled so you can see all the debug output of the application. This is useful for debug purposes, especially if the application isn't running on your platform or crashes unexpectadly.

As always the source code can be downloaded from BitBucket:

Screenshots:

screenshot1_4-0.png
screenshot1_4-1.png
This one is just Sublime Text but it's an example of the GlobalConfig.json file

This one is just Sublime Text but it's an example of the GlobalConfig.json file

Changelog:

  • 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

Const Port v1.3

It's time for another release of Const Port! Version 1.3 adds some cool new features and fixes a host of small bugs. As before you can download the compiled x64 Windows version:

or download the source code from the BitBucket Repository and compile it yourself:

Screenshots:

Changelog:

  • 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

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

Sublime Text Build Tool Tutorial

So I've been busy at work doing things so I kind of have fallen off the game development wagon for the last couple months.

However, during that time I have been messing around with Sublime Text's customization options a lot. I've made some custom syntax types, custom themes, and a ton of custom plugins to add some of the features I feel like are missing from Sublime Text 3. 

So with all this time spent learning Sublime Text's systems I figured it would be a good time to make a few short tutorials about Sublime Text for those that want to make their own modifications.

The first tutorial will be about how to make your own sublime text build system. We will be walking through making the build system I use for the DirectX project I've been working on over the last year. The build tool basically just runs a build.bat file (on windows) which really does most of the heavy lifting but there are a lot of auxiliary options that can make the whole building process sublime.

So make sure you check out the new Sublime Text section on the tutorials page.

Sparse Chunk Storage

We've got a system set up now so we can store the chunks in a hash table. This, along with a lot of other modifications, allows us to add chunks easily while maintaining a quick look up of the chunk from it's position information. Also we've added the ability to raycast "into" the rooms so it's easier to edit