IntelliPort

IntelliPort
IntelliPort

Introduction

IntelliPort is a free (as in “free speech” and also as in “free beer”) serial port / socket logger. Running in the Microsoft Windows environment, its use is governed by GNU General Public License v3.0. IntelliPort is written in C++ and uses pure Win32 API and STL which ensures a higher execution speed and smaller program size. By optimizing as many routines as possible without losing user friendliness, IntelliPort is trying to reduce the world carbon dioxide emissions. When using less CPU power, the PC can throttle down and reduce power consumption, resulting in a greener environment. I hope you enjoy IntelliPort as much as I enjoy coding it!

IntelliPort is a program that you can use to connect to other computers, using either your null modem cable or Ethernet connection. IntelliPort records the messages passed to and from the computer on the other end of your connection. Therefore, it can serve as a valuable troubleshooting tool when setting up and using your modem. To make sure that your modem is connected properly or to view your modem’s settings, you can send commands through IntelliPort and check the results. IntelliPort has scroll functionality that allows you to look at received text that has scrolled off the screen. You can use IntelliPort to transfer large files from a computer onto your portable computer using a serial port rather than going through the process of setting up your portable computer on a network. IntelliPort is designed to be an easy-to-use tool and is not meant to replace other full-feature tools available on the market. You can use IntelliPort to perform the specific tasks described above, but do not attempt to use IntelliPort for more complex communication needs.

Getting started

Install IntelliPort using the installer

  • Download the installer
  • Run the executable binary and follow the installation flow

The installer will likely require Administrative privileges in order to install IntelliPort (and later, to update IntelliPort or install or update plugins, or anything else that requires writing to the installation directory). If you do not have Administrative privileges, you either need to tell the installer to use a location where you do have write permission (though that may still ask for Administrator privileges), or you may choose not use the installer and instead run a portable edition from a directory where you have write permission.

Install IntelliPort from zip

These instructions will allow you to run a portable or mini-portable (also called “minimalist”), without requiring administrative privileges.

  • Create a new folder somewhere that you have write-permission
  • Unzip the content into the new folder
  • Run IntelliPort from the new folder

The portable zip edition of IntelliPort can be removed by deleting the directory they came in. If you manually set up file associations or context-menu entries in the OS, it is your responsibility to remove them yourself.

Working with Files

A “file” is the basic unit of what is edited in IntelliPort, but that term actually covers multiple related concepts. Primarily, the “file” is the series of bytes stored on a disk or other storage medium and accessed through your computer’s filesystem; and pedantically, if the document you are editing has never been saved to the filesystem, it’s not technically a file, though common usage applies that term to unsaved documents as well. The “document” refers to the text being edited, whether it’s a new, unsaved document, or whether it’s a document that’s been previously saved as a file on the filesystem. And finally, in IntelliPort, each document is presented in a Tab in one of the two Views of the IntelliPort user interface, which are the graphical containers which IntelliPort uses to manipulate files and other documents, though many users think of the user interface element as the “file” as well.

The main button contains many of the normal file-operation actions found in most applications. IntelliPort also includes other custom actions which are useful to understand.

  • New: Creates a new document, and displays that empty document in a Tab in the active View.
  • Open: Opens an existing file from the filesystem, and displays that document in a Tab in the active View.
  • Save: Saves the current document to the filesystem using the same filename.
    If the document does not currently have a file associated with it, this action will be grayed out and the menu entry cannot be used. Use Save As instead.
  • Save As: Saves the current document to the filesystem, prompting for the new filename to use.
    If the document had previously been saved to a file, this will create as new copy of the file, and IntelliPort will continue working with the document associated with the new file, leaving the old file with the contents that were last saved.
  • Close: Closes the active document, prompting to save if it has been modified since it was opened or created.
  • The Print action will pull up a Windows-standard print dialog, from which you can choose your printer and send your text to the selected printer.
    Normally, it will print the whole document, but you can use the print dialog to choose only certain pages; if you have an active selection in the editor, only the selected text will be printed.
  • Exit: Closes the IntelliPort application.

The Clipboard menu features typical editing commands which any Windows user should be familiar with:

  • Cut: will remove any selected text from the document and place it on the Windows clipboard.
  • Copy: will put a copy of any selected text on the Windows clipboard; document content is unaltered.
  • Paste: if the Windows clipboard contains text, this will insert a copy of that text at the point of the caret; if text is selected when this command is executed, the selected text will be replaced by the text from the clipboard; if the clipboard does not contain text, nothing will happen.
  • Delete: will remove any selected text from the document.
  • Select All: selects all text in the document into a stream selection.
IntelliPort-Configure
IntelliPort-Configure

The HyperTerminal menu features the application’s most important functions:

  • Configure: allows either serial port or TCP/UDP socket configuration for IntelliPort.
  • Connect: creates the remote connection using the current configuration.
  • Disconnect: closes the remote connection.
  • Send Text: sends text to remote connection.

Create and Submit your Pull Request

As noted in the Contributing Rules for IntelliPort, all Pull Requests need to be attached to a issue on GitHub. So the first step is to create an issue which requests that the functionality be improved (if it was already there) or added (if it was not yet there); in your issue, be sure to explain that you have the functionality definition ready, and will be submitting a Pull Request. The second step is to use the GitHub interface to create the Pull Request from your fork into the main repository. The final step is to wait for and respond to feedback from the developers as needed, until such time as your PR is accepted or rejected.

Software Content Register

Release Name: IntelliPort
Description: IntelliPort is an alternative Windows version to the famous Microsoft HyperTerminal!
Outgoing License: GNU General Public License v3.0
Type of content: static/dynamic libraries, source code, binary
Release location: https://www.codeproject.com/Articles/799126/IntelliPort

CEnumerateSerial
Description: One of the posts that keeps reappearing in the programming newsgroups is how to enumerate all the serial ports installed. The code uses a number of different methods to enumerate the ports.
Version: 1.43
Home Page: https://www.naughter.com/enumser.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

genUp4win
Desciption: This library is a generic updater for Windows.
Version: 2.03
Home Page: https://github.com/mihaimoga/genUp4win
License: MIT
Format: source code, binary

CHLinkCtrl
Description: This class allows you to create a static control on a window or dialog which behaves similar to a hyperlink as seen on a web page. When the mouse moves over the text the cursor becomes a hand and when you click on the text the hyperlink is executed.
Version: 1.43
Home Page: https://www.naughter.com/hlinkctrl.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

CRingBuffer
Description: A fast ring buffer designed for receiving texual data in a Winsock server application.
Version: unspecified
Home Page: https://www.codeproject.com/Articles/2269/Fast-Ring-Buffer-for-Incoming-Winsock-Textual-Data
License: Code Project Open License
Format: source code, binary

CSerialPort2
Description: CSerialPort2 is a freeware C++ class to support access to the Win32 APIs dealing with serial ports.
Version: 1.43
Home Page: https://www.naughter.com/serialport.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

CVersionInfo
Description: This simple little class encapsulates the SDK calls which access version info from Win32 files. Most executables and DLL’s have a VS_VERSION_INFO resource associated with them and this class provides a simple C++ class to programmatically access this information.
Version: 1.13
Home Page: https://www.naughter.com/versioninfo.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

CWSocket
Description: This is a simple C++/MFC encapsulation of an SDK socket. The CWSocket class can be using in other projects to provide a simple encapsulation of a socket.
Version: 1.48
Home Page: https://www.naughter.com/w3mfc.html
License: Custom (PJ Naughter’s license)
Format: source code, binary

PJ Naughter’s license: You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) when your product is released in binary form. You are allowed to modify the source code in any way you want except you cannot modify the copyright details at the top of each module. If you want to distribute source code with your application, then you are only allowed to distribute versions released by the author. This is to maintain a single distribution point for the source code.

History

  • Version 1.3 (20th July, 2014): Initial release.
  • Version 1.5 (28th July, 2014): Fixed several bugs regarding logging functions for serial port and UDP socket.
  • Version 1.6 (30th August, 2015): Fix for Microsoft Windows 10 64bit.
  • Version 1.7 (3rd April, 2019): Performance and security fixes.
  • Version 1.8 (15th June, 2019):
    • Added Romanian translation;
    • Added PJ Naughter’s CInstanceChecker class.
  • Version 1.9 (27th July, 2019): Bugfix for serial port name: please see the article mentioned in the comments.
  • Moved source code from CodeProject to GitLab (7th December, 2019).
  • Version 1.10 (25th March, 2020): Changed font size for main and input dialogs.
  • Version 1.11 (9th May, 2020): Added French translation, thanks to Stefan Gaftoniuc.
  • Version 1.12 (6th June, 2020): Added Italian translation, thanks to InterLingua.
  • Version 1.13 (13th June, 2020): Added German translation, thanks to InterLingua.
  • Version 1.14 (20th June, 2020): Added Spanish translation, thanks to InterLingua.
  • Version 1.15 (19th July, 2020): Added Russian translation, thanks to InterLingua.
  • Version 1.16 (31st July, 2020): Added Greek translation, thanks to InterLingua.
  • Version 1.17 (12th September, 2020): Made improvements and squashed bugs so #IntelliPort is even better for you:
    • Updated PJ Naughter’s CSerialPort library to the latest version available;
    • Updated PJ Naughter’s CWSocket library to the latest version available.
  • Version 1.18 (25th September, 2020): Overwrote CEditCtrl 64K limit.
  • Version 1.19 (7th January, 2022): Updated About dialog with new e-mail address.
  • Version 1.20 (14th January, 2022): Updated PJ Naughter’s CVersionInfo library to the latest version available.
  • Version 1.21 (4th February, 2022): Changed external website address.
  • Version 1.22 (11th February, 2022): Fixed critical bug regarding File Open/SaveAs in French, Italian, German, Spanish, Russian, Greek translations.
  • Version 1.23 (28th April, 2022): Added LICENSE to installation folder.
  • Version 1.24 (12th May, 2022): Converted all line endings to Windows format (CR LF).
  • Version 1.25 (19th May, 2022): Updated PJ Naughter’s CEnumerateSerial library to the latest version available.
  • Version 1.26 (24th May, 2022): Fixed minor bug.
  • Version 1.27 (September 9th, 2022): Added Contributors hyperlink to AboutBox dialog.
  • December 23rd, 2022: Moved source code from GitLab to GitHub.
  • Version 1.28 (January 20th, 2023): Removed PJ Naughter’s Single Instance class.
  • Version 1.29 (January 23rd, 2023): Updated PJ Naughter’s CVersionInfo library to the latest version available. Updated the code to use C++ uniform initialization for all variable declarations.
  • Replaced NULL throughout the codebase with nullptr.
    Replaced BOOL throughout the codebase with bool.
    This means that the minimum requirement for the application is now Microsoft Visual C++ 2010.
  • Version 1.30 (April 2nd, 2023): Implemented error handling for socket and serial port connections.
  • Version 1.31 (April 13th, 2023): Rework thread synchronization and removed all Sleep calls.
  • Version 1.32 (May 27th, 2023): Updated About dialog with GPLv3 notice.
  • Version 1.33 (June 13th, 2023): Made persistent the application’s settings (requested by wvd_vegt).
  • Version 1.34 (June 22nd, 2023): Updated PJ Naughter’s CEnumerateSerial library to the latest version available.
  • Version 1.35 (July 22nd, 2023): Replaced old CHyperlinkStatic class with PJ Naughter’s CHLinkCtrl library.
  • Version 1.36 (September 29th, 2023):
    • Switched to Visual Studio Enterprise 2022 (some changes were made in the source code);
    • Changed article’s download link. Updated the About dialog (email & website).
  • Version 1.37 (January 3rd, 2024):
    • Added social media links: Twitter, LinkedIn, Facebook, and Instagram;
    • Added shortcuts to GitHub repository’s Issues, Discussions, and Wiki.
  • Version 1.38 (January 27th, 2024): Added ReleaseNotes.html and SoftwareContentRegister.html to GitHub repo.
  • Version 1.39 (February 21st, 2024): Switched MFC application’ theme back to native Windows.
  • Version 1.40.1 (September 26th, 2024):
    • Improved loading/saving/sending/receiving text in UTF8 format.
    • Implemented User Manual option into Help menu.
    • Implemented Check for updates… option into Help menu.