Realterm: Serial Terminal

Latest News


  • V3 Beta version under development. See changelog for details
  • Signed Exe's and installer now for Win 7, 8, 8.1
  • New ActiveX wrapper for Internet Explorer / Javascript embeddig
  • Extensive I2C bus support
  • now Code Signed Monitor  New Releases

  • Who Uses it? / What For?   Hell its free, drop us a line saying what you do with Realterm!

  • Donate : Donations pay for tools, code signing certificates, and more Realterm for you .

Realterm is a terminal program specially designed for capturing, controlling and debugging binary and other difficult data streams. It is far better for debugging comms than Hyperterminal. It has no support for dialing modems, BBS etc - that is what hyperterminal does.


  • Send Chars & Files
  • Echo to Network
  • Monitoring RS232
  • Command Line
  • ActiveX/COM
    • Examples
    • Hiding Controls & Display
    • I2C Bus, SPI, 1-Wire
    • HexCSV2Dec Utility
    • PIC Programmer
    • Linux
    • Translations
    • Links
    • Books
    • Who Uses it? / What For?
    • ChangeLog
    • Old Version Documentation
    • Contact Us

        • Text or Binary views of data
        • binary viewed as hex, 8 bit, 16 bit, little/big endian, signed, unsigned, special fonts
        • colorised: rx and tx data aredifferent colors
        • ansi terminal or plain text orbinary modes
        • protocol analyser / "portspying" mode
        • fixed frame sizes/line lengths
        • sync patterns with masks andxors
        • data inversion
        • full remote control throughactive X/ Windows Scripting
        • extensive command-line control for batch files
        • can be used for serial I/Ocomponent of other programs via activeX. Full support forminimize,hide,iconize, tooltray
        • special ascii+hex font to seehidden control chars
        • capture to file, settablecapture size or capture duration
        • timestamping capture files forsimple data logging
        • view and change control lines(cts,rts, dcd etc)
        • easy to send binary sequences
        • serial (comports) or telnet viatcp
        • arbitary baud rates
        • reset / power buttons for PicProgrammer
        • hideable to run in invisible or on tool-tray
        • can dump files to serial port
        • Drives I2C and SPI chips via BL233



        Help & Hints:

        Press F1 to bring up the help screen. Amongst other things you get a list of the actual commandline parameters that version supports.

        Tool Tips are the primary source of help and explanation when using Realterm. Take the time to move the mouse over every control, and read the hints that pop up. If you doubleclick on the status bar at the bottom it will toggle to a longer hint string. 

        The Popup hints are also displayed (and don't timeout) on the status bar. Double click the status bar to show them the full screen width.

        ENTER send CR, <ctrl>+ENTER sends LF, <shift>+ENTER sends CRLF

        Installing Realterm


        Monitor New File Releases

        back to contents

        Display Formatting

        Reaterm displays data in meaningful forms

        • ASCII is plain text. Hex Fontlets you see non-ascii values
        • ANSI is terminal emulation
        • data can be inverted (pagerIC's do this)
        • Data can be in 1 or 2 bytebinary views
        • 2 byte data can have either byte order

        Terminal Colors

        Colors can be set from the commandline (V2.0.0.64+), or on the Misc tab.
        Colors are set by a sting of color chars below. The sequence is: Kbd,Port,SendStr,SpyTX,SpyRX,Background
        Default is 'RYLRYK'

            'R':  clRed;
            'G':  clGreen;
            'B':  clBlue;
            'C':  clAqua;
            'Y':  clYellow;
            'M':  clFuchsia;
            'K':  clBlack;
            'W':  clWhite;
            'T':  clTeal;
            'P':  clPurple;
            'L':  clLime; (bright green)
            'O':  clOlive;
            'N':  clMaroon;

        Tray Icon & Popup Menu

        Right mouse click on the main window or on the Tray Icon will bring up the popup menu. You can doubleclick the tray icon to hide/show Realterm (ie make it disappear from the taskbar)

        The Tray Icon and main icon changes to show a red dot when it is capturing. The dot rotates as data bytes are actually being received. The dot is Green for normal chars, Red when capturing, 

        Yellow when Data Triggers or Binary Sync Matches occur.

        Bigger Display:

        Small tablets, high resolutions screens etc, can make the default screen difficult to use. There are several ways to change the size of Realterm


        The whole UI can be scaled. See Misc tab, and right click menu, or command line.

        FullScreen Mode:

        For small tablets, the app can be run in fullscreen mode. See Misc tab, and right click menu, or command line.

        Hiding Controls / Fullscreen

        If you don't want the control panel visible, or you want a bigger screen, then you can Hide Controls either from the popup menu, or the commandline or activeX interfaces. This is ideal for making a shortcut that sets up Realterm for your field staff or users, then hides all the controls, to make it less confusing.

        Show / Hiding Everything

        The popup menu (and ActiveX and Commandline) have a Show option that will completely hide Realterm. Unlike minimising, it disappears from the taskbar. Only the Tray Icon is left.

        If you want it to be totally hidden the activeX interface lets you hide even the Tray Icon. This is ideal if (like us) you have 16 Realterms running in the background at once, all the time.

        mechanism uses the window name, and this disappears when the window is hidden.

        Setting Rows and Columns

        To force the number of columns across the terminal window, set Bytes and check "Single"

        You can set the display rows from the commandline to launch it the size you want.

        The example shown will be a 40x16 window.

        back to contents

        Frame Sync

        Binary data is arranged in frames. These frames are either

        (of course Text is arranged as lines ending with LF or CR)

        A count of sync matches is shown on the Binary Sync Chars panel. When a sync match occurs, the tray icon square changes to yellow for a few seconds.

        Fixed size frames are self evident. You will notice that theterminal resizes to always have a whole number of frames across, unless "Single" is checked.

        Unfortunately frames will randomly begin somewhere on the line.GULP swallows a character each time it is pressed. Press it until the frames correctly start at the beginning of a line.

        Delimited frames start a new line when they detect the sync sequence. A sync sequence can be any number of bytes long

        Here sync is detected when 2 bytes match 0xA55A, or moreaccurately, when 0xA55A XOR 0x0000 AND 0xFFFF > 0. ["SyncIs"should be set to "Number"]. If you are syncing off ASCIIchars, then select "Synch is: ASCII" and put the chars in the top editbox.

        You can have as many bytes as you want in the sync word.

        The XOR term allows you to invert some or all data bits. ($00 is normal $FF is inverted). If you don't need the XOR and AND fields, just leave them empty to get the defaults.

        The AND term lets you ignore some of the bits. For example youcould use this to use bit 7 as a sync bit, by setting the AND term to $80 $80. (Note hex numbers are preceded by $)

        back to contents

        Baud Rates & Ports

        Baudrates depend on the exact hardware port. Realterm accepts anything. Some ports complain about invalid baud rates, others just ignore them, some coerce to the nearest rate.

        Most PC ports accept non-standard values that the chips divider is capable of generating.

        Realterm can connect to both SERIAL ports (real uarts, as well as USB, and network virtual uarts) or TCP/Telnet ports.

        Virtual Comports and USB Devices

        USB serial ports appear at some port number. Look under "my computer->properties->hardware->ports" to find where they are. Unfortunately the same device will often appear at different comport numbers when it is on different USB hub ports.

        The currently present devices and associated ports are also listed in the registry at  HKLM\HARDWARE\DEVICEMAP\SERIALCOMM. You can use these device names directly in the port selection eg  "\VCP0" or "\Serial0"

        For example when you plug in an I2C2PC adaptor it will normally appear as \VCP0, regardless of the comport# that it is assigned, or which usb hub port it is connected to.

        On Win9X there don't seem to be any special names for devices, and this won't help you.

        Scanning for Ports, Startup Delay, and Bluetooth

        Version onwards

        Realterm now uses the registry to find ports rather than trying to open them all. Note if you get a registry key error when starting, this is because you do not have any serial ports installed. Install one.

        Versions Before

        Realterm will scan for ports at startup if an explicit port is not given on the commandline. This can cause long delays where Bluetooth is running. The SCANPORTS commandline option restricts scanning.

        When starting normally, Realterm will try to open the first existent port that it finds. (V2.0.0.57+)

        When started as an ActiveX automation server, it does not open the port until explicitly requested.

        What Baud Rates does Realterm support?

        Realterm will pass any requested baud rate through to Windows. Many other applications have a list of baud rates, but Realterm does not, it will request anything.

        Mostly, if a baud rate is not accepted, there is no error or warning - it just does not work. Whether a baud rate will be work depends on two things Reaterm has no control over:

        Microsoft says this : "For all other cases, as long as the requested baud rate is within 1 percent of the nearest baud rate that can be found with an integer divisor, the baud rate request will succeed"

        The most basic PC uart has a maximum baud rate of 115,200. Any frequency of 115,200 / N, can usually be requested. More modern PC's and laptops, usually have a higher maximum baud rate of 230,400, or 460,800, or 921,600. Actual serial ports usually have a maxiumum that is a multiple of 115,200. Once you have found the maximum, any baud rate of <Max Baud Rate>/N should work.

        USB-Serial adaptors usually have higher clock rates, and support a wider range of different rates. FTDI's usb-serial adaptors have high maximum rates, and many possible rates. See FTDI info:

        If the actual PC baud rate is within 3% of your actual device baud rate, it will usually work OK. If you are using RS232 connections, modern drivers will usually work at 230kbd for short cable lengths, but are less likely to work at 460kbd, or 921kbd

        Baud Rate Multiplier and 16C95X Uarts

        The16C95X family of advanced uarts are able to support very high baud rates. They have 64byte FIFO's, which is a give away that they are in your serial card. When trying to get very high baud rates, there is an option in the hardware configuration of the uart to enable the "baud rate multiplier". This will result in higher than requested baud rates. ie the actual baud rate = requested rate * multiplier
        There is a hidden control to scale Realterms baud rate. This makes it easier to select the rate you want. Double click on the the word "Baud" to show/hide the hidden multiplier selector. Note that this does not change the multiplier itself, which must be set in the hardware control panel.


        Enables hardware direction control by the RTS line.

        Note that some specialist serial cards and USB-Serial adaptors can handle this in hardware, and don't require this to be set. They may also get around the limitations that windows imposes on this, as described by Stephen Boyd below:

        “For all versions of Windows > NT AsyncPro handles the toggling of RTS via the RTS_CONTROL_TOGGLE flag and the Windows SetCommState function. I have found other people complaining about a "significant lag" when using this flag to control RS485 devices from non-ASyncPro programs. This seems to be a problem with Windows in general and not AsyncPro in particular. Here is a quote from a user in a different forum:
        "I tested the RTS_CONTROL_TOGGLE mode with RS485 devices, and I noticed that Windows has a significant delay between the end of transmission and the control of the RTS line, so this mode does not work properly with a RS485 equipment that replies "too fast" for Windows, due to a conflict between the RS422 amplifiers simultaneously active on the RS485 line. Your best bet might be to get an actual RS485 card for your windows system that handles the RTS toggle in hardware.”

        TCP/IP: Telnet and Raw modes: Missing FF's

        The TCP connections default to using Telnet protocol. However if you are connecting to a socket with raw data, you might notice that some characters (eg 0xFF) are missing or doubled up. You need to change between Telnet and Raw modes. This is not a bug!

        The telnet connection lets two copies of Realterm talk to each other on the same machine. Just set the first to "server:telnet" and the second to "". This is very useful for testing and experimentation.

        back to contents

        Hex Font

        Our Hex fonts are included. The Installer should install the fonts for you automatically. You can also go to the windows font installer in Control Panel to install it.

        The hex font contains all 8 bit values. The non-ascii values <32 are shown as either HEX or CONTROL chars, depending on the font you select. (There are 3 different fonts in the .FNT file)


        This is very useful for seeing control codes, invalid hidden codes and errors, in serial comms. It's equally useful in a programmers editor.

        (Note that you won't see them in ANSI mode, as the control codes will be processed)

        You can now get just the fonts from the downloads page. If you can convert these fonts for use with Linux or another OS, please do! If you would like to add a larger size to the font, please do.

        back to contents

        Pins & Status

        Handshake Pins and comms status can be monitored.

        Handshake outputs can be controlled directly (and from the command-line, and via activeX)

        The error cause is displayed when you hover the mouse over the error light.

        Pin states can be set manually. Set means data flow is enabled. Note that if CTS/RTS or DTR/DSR handshaking is enabled, then you cannot control that pin from the buttons.

        back to contents


        Incoming data can be captured to file. The capture can automatically stop after a certain time or number of chars. Realterm can be hidden, and capture controlled from the tray icon , popupmenu, and automation interfaces. Combine capture with filesend to make simple datalogging applications

        This provides a very easy way to (say) collect serial data, and graph it live using Matlab.

        It can either capture "direct" or via the terminal window. When you use DIRECT capture, the terminal window is turned off, and the echo port operation will cease. This means less processor load, screen draws etc. This is best for embedded type uses.

        If you want to capture what you are seeing in the terminal, don't use Direct Capture.

        Char Count and CPS (chars per sec) are displayed during capture.
        The Tray Icon and main icon changes to show a red dot when it is capturing. The dot rotates as data bytes are actually being received.

        Capture As HEX

        Sometimes it is easier to look at binary data when it is saved as hex. So each received char is converted to two hex chars and saved to file. This option only works with Direct Capture. For best speed don't do this: capture normally, and use a binary/hex editor to examine the file


        Timestamping is very useful for data logging, or where you want to know when an occaisional string arrived. This is most useful for comma separated (CSV) type text data. Timestamp is triggered by CR or LF. 

        Unix timestamps are the number of seconds from 1/1/1970.

        Matlab timestamps are floating point days since 0 Jan 0. Matlab timestamps are given to the PC's clock resolution, this should be 10ms for NT and later and 55ms for Win98 and earlier. Using Matlab timestamps should give you finer resolution than 1 second.

        UnixHex is provided for convenience when all the data being captured is in hex. In this case the whole file including timestamps can be converted to decimal by the HEXCSV2DEC utility that is bundled with Realterm

        Timestamping also slows down file capture somewhat, so it is probably not ideal for very fast and dense data streams.

        Diagnostic Files: Trace and Log

        RealTerm can also write LOG and TRACE files to help debugging difficult serial problems. These are completely separate from the Capture function and provided by the Turbo Async comport component. These are a reports from a dignostic queue. You can CLEAR the queue or DUMP it to a file. The Log buffer is 10000 long and Trace buffer 1000 long (V2.0.0.69). Select hex if you need to see non-printing chars. For more information see the  Turbo Async Reference Guide , Chapter 2, "Debugging Facilities" (pg 33)

        back to contents

        Sending Char Sequences

        Read the popup Hints carefully. They give lots of information especially in the Send tab!

        Often you want to send special chars strings or strings repeatedly, or send them quickly.

        Both ascii and binary strings can be sent. Sent chars aren't echoed to the terminal.

        (V2) If half-duplex is set, then sent strings will be shown on the terminal. This also applies to strings/chars sent via the ActiveX interface.

        When Sending ASCII, you can optionally end the line with CR and/or LF. You can also strip spaces from sent data. This is useful for the I2CChip adaptor. While it ignores spaces, they take time, and buffer space, and won't be used in the final application. (but they make it much easier to read!)

        Loading Canned Strings, Loading SendString drop-downs

        From the ActiveX interface you can prepopulate the Send dropdowns with strings by using the “AddCannedString” function.

        The SendStr commandline option loads strings into the dropdowns. If you want to preload lots of strings, or long strings, then use an INIFILE. 

        Sending ASCII with special/non-printable values

        When you press "SendASCII " any valid backslash sequences are converted to special values in the style of Python.

        If Literal is checked, then the string is sent raw. Note that the special chars must be lower case


        LF (0x0A)














        hex value


        decimal (NOT octal like python)


        \ (backslash)

        Sending Non-printable binary chars

        You can do this in several ways.

        CRC and Checksum

        You can add a variety of CRC's and Checksums to the end of the send string. See the drop down list.

        Modbus binary packets end with a 16bit CRC. This can be appended to each string sent.

        Sending Files

        You can dump a file directly to the port. This has no "protocol" and just sends everything. (versions before 1.14 swallowed ^Z / 0x1A).

        Padding File Dump with Delays

        Two delay settings are provided to add delays after each char, and at the end of each line. (EOL is denoted by CR at present). This affects file dump, but not sending char sequences above.

        Sending Repeatedly

        You can set the number of repeats, and the delay after sending the file, .

        These are particularly useful from the commandline for data logging, when combined with capture.

        For example you can make a simple, one line file that commands a multimeter to read a voltage. Set repeats to 0, so it will loop for ever, and delay to 1000ms, and Capture. Now the data will be read to file every 1 second.

        Data Logging

        Using Capture and SendFile from the commandline, you can log data and control intruments directly from the commandline, without extra software.

        realterm.exe senddly=10000 sendrep=0 sendfile=commands.txt capture=results.txt

        This will send "commands.txt" endlessly, with a 10sec pause between sends, and capture the replies to "results.txt". This is all you need to do to turn (say) and RS232 multimeter into a datalogger.

        (V2.0.0.46) The TIMESTAMP option can be used to prepend a timestamp to each line. This is most useful for CSV type text data. See capture section

        back to contents

        I2C & SPI Bus

        I2C, SPI, 1-Wire and other Serial buses can be read using the I2CChip products "I2C2PC" and the "BL233B" IC. Realterm cannot read I2C without these external devices. It cannot use printer ports, the PC's SMBUS interface etc.

        The I2CChip Host adaptor  provides a USB/RS232 interface to 3 I2C buses. Realterm is an easy way to use it. Using the ActiveX interface you can easily send strings from excel or other apps. Using the Echo port provides a way to make hardware devices that can be controlled over the internet.

        Common commands you want to send to play with the adaptor are provided by the controls. Using this you can quickly try out an I2C adaptor or 1-wire device.

        The main I2C tab has controls to select one of the serial buses.

        Refer to the datasheet for the BL233B  chip used, where its commands are detailed.

        Note that you can use it with SPI, Dallas 1-wire, and other serial IC's, as well as I2C

        The I2C-2 tab has controls to support a number of common IC's. The MAX127 12Bit Precision ADC  and PCA9545 Bus Switch/multiplexor are available as standard modules fromI2CChip

        The I2C Misc tab has support for non-I2C devices:

        Echo Port: Redirect Ports across Network

        The main port can be passed through or echoed to the Echo Port. This is partcularly useful when the echoport is a TCP port. This allows a real serial port to be aliased across the network. (the echo port can be a real comm port too)

        Lets say the remote (unattended) machine ( has a datalogger connected to COM1. It runs Realterm at startup with a command line like this:

        realterm -port=1 -baud=9600 -echo=server:9876 -caption=Mirror_Multimeter_To_Internet

        ie realterm connects to the datalogger on COM1 at 9600 bd, and presents a telnet server on port 9876 (or any other suitable number).

        On the local (attended) machine run a copy of Realterm like this:

        realterm -port=

        This makes a telnet connection to the remote machine. Now you can sit at your desk, and control and monitor the remote serial device.

        Note that as Realterm has a full ActiveX interface, you can use Windows remote DCOM to start,stop and control the remote Realterm, as well as the local copy.

        When there is a connection, chars are echoed. When the connection is broken, or the buffers are full for some reason, it simply stops attempting to echo chars. When the connection is broken, the server end just waits for another connection. At the client end, the port need to be manully restarted.

        If you are using the activeX interface you can check the open property to see if the link is up, and use it to re-establish a dropped link.

        The Monitor checkbox lets the terminal window display both sides of the conversation (ie both the data received through the ain port, and the echo port)

        Signalling Winsock Connection state to Comport

        When a telnet/winsock connection is being echoed to a physical comport, we can use one of the comports handshake output lines (DTR,RTS) to signal a remote system whether winsock is connected. You must make sure that this doesn't interfere with the operation of the handshake lines. (ie use DTR for signalling if you are using RTS/CTS handshaking for flow control)

        back to contents

        Monitor RX and TX data: Protocol Analyser

        Realterm has two ways to monitor serial communications, and let you see the RXD and TXD data interleaved in the same terminal window:

        Spy mode allows you to monitor the communications between a program running on your PC and the com device, by installing a device driver to intercept the port messages,
        Spy mode must be activated before opening the comport, and the comport must be closed before spy mode can be released. Spy button is on the port tab.

        Note that you cannot currently capture the spy mode. However you can copy and paste from the terminal window.

        Monitor Mode

        Monitor mode is useful to monitor communications between external devices by connecting to the RS232 cable.

        The Echo port can be used to give you a second receiver. The data is put into the terminal screen, in a different color. Now you can see both sides of the conversation.

        The interleaving on screen, only shows you when the data arrived at Realterms handlers. The indeterminate delays in Windows mean that you can't rely on the sequence being exactly as it happened. Obviously with slow data, or decent gaps between send and receive, it will work better than with very fast data streams.

        Special Monitor Cable

        You need a special adaptor with 2 plugs for the PC's 2 serial ports. Only connect RXD and GND on those plugs at the PC end.

        Monitor and Echoing

        You can select both Echo and Monitor. Now Realterm echos as normal, but the terminal window displays the data from both directions.

        back to contents

        Command Line Parameters

        Realterm doesn't save its settings. Instead it is set up from either the command line, for basic setups, or using its extensive ActiveX interface. It is also possible to send commands to a running instance of Realterm from the commandline.

        For complicated settings, a file of parameters can be loaded using INIFILE, and settings generated and saved from the "Write INI" button on the Misc tab. (V3.0.0.18+)

        These examples show the command-line params you can use. Generally they set the corresponding widgets. For radiobuttons and checkboxes, a number selects the state. For booleans (eg visible) use either 1 or 0. (n.b. No "/" or "-" before parameters)

        Check the Help (F1) to see a list of the commandline parameters which has been automatically generated. It may be more complete than the one below...

        BAUD, BD


        Set the baud rate. Non standard baudrates are fine

        PORT, PT

        Port or IP

        sets the port.

        PORTQUIT, PQ

        Port or IP

        Sets the port, exits if port does not exist or can't open



        Sets DataBits,Parity,StopBits. eg DATA=7E1 DataBits is 8-5, Parity is None,Even,Odd,Mark,Space, StopBits 1-2



        terminal frame size. Interacts with COLS. Use one or other

        CAPFILE, CF


        name of the capture file to use

        CAPCOUNT, CC


        Length of capture in bytes (either CAPCOUNT or CAPSECS)

        CAPSECS, CS



        Time of capture in SECS. (-ve values makes it quit as soon as idle or until timeout).

        If using SENDQUIT, then waits this time after send finishes, before stopping capture. See SENDQUIT. (V3.0.0.17+)

        CAPTURE, CP




        Capture starts immediately. Stops at count OR secs. Can use CAPTURE=filename

        Capture=0 is off; Capture=1 is ON; Capture=2 is APPEND

        CAPQUIT, CQ


        Capture (as above), but program quits when capture ends. If you manually stop capture, then Autoquit is cancelled. Can use CAPQUIT=filename

        CAPHEX, CX

        Capture as Hex ie turns all chars to a 2 char hex value.


        Capture Direct checkbox


        Delim char

        Set timestamp delimiter eg TSDELIMITER=%



        During capture, Prepends a timestamp to each line. Only works in text files with EOL

        VISIBLE, VS


        starts hidden, only tray-icon is visible

        DISPLAY, DS


        sets the display format (ascii, hex,int etc). eg DISPLAY=5

        BIGEND, BE


        set big-endian checkbox

        FLOW, FW

        0,1,2,3, X, 0-3+4+8

        Sets hardware flow control mode. FLOW=X to enable XON/XOFF mode or Flow=N+8 for RX-XOn, +4 for TX XON or use flow twice FLOW=1 FLOW=X



        sets RTS pin



        sets DTR pin



        Starts with port closed (default is open)



        Selects the opening tabsheet by name



        Sets the echo port, and enables echoing



        Set the baud rate for echo port.



        Sets Echoport DataBits,Parity,StopBits. (not working properly yet)



        Sets HALF Duplex



        Sets window caption (can't accept spaces, use underscores). See caution below if using with FIRST

        SENDFILE, SF


        Sends the file immediately. (capture started before sending starts)




        Hide Controls and expand terminal window to full screen.

        (depreciated V3) Show controls.



        Monitor Echo port RX onto terminal



        Sets delay (in ms) after each character when sending files and strings



        Sets delay (in ms) after each line when sending files and strings



        Set number of rows in terminal window.



        Set number of cols. (n.b. FRAMESIZE interacts with this, use COLS last)



        set delay (in ms) after file is sent, until next send begins. If Send Delay is set, SENDREP will be set to 0.



        set number of times file will be sent. 0 sends for ever. Should follow after SENDDLY

        SENDQUIT, SQ


        quit when sendfile ends.If you manually stop send, then Autoquit is cancelled. Can use SENDQUIT=filename

        SENDSTR, SS


        Loads "string" into the Send String comboboxes. Can be called more than once to load more strings. Does not send the string unless sent to a running instance using FIRST (see below)



        as SENDSTR above



        send CR after string (sets for following strings)



        send LF after string





        Should be first param . Sends subsequent commands to running (FIRST) instance of Realterm with the same Caption / Window Title

        If only parameter, stops more than one instance running. Brings FIRST instance of realterm to front, and quits. Note this finds running instance by the window title (CAPTION) see details below.



        sets Newline Mode checkbox



        Spy mode. Port you are spying on must be closed when starting. Be sure to specify the port on the command line with port=X  when using this.




        (obsolete) realterm scans for actual comports by trying to open them all.This can cause problems with Bluetooth serial devices, because it takes a while before the OS can say that a port is not there. This option can be used to suppress scanning


        set the I2C Address. Should be hex string eg "0x40"


        Same as F1 key


        Only used by installer for post-install special messages and behaviour.



        Enable Scrollback. =0 disables; =N Sets SCROLLBACK lines=N



        Terminal colors are set by a sting of color chars. The sequence is: Kbd,Port,SendStr,SpyTX,SpyRX,Background
        Default is 'RYLRYK'   see Terminal Colors



        Sets format string for HexCSV formatting. (when implemented) will set the capture formatting sting to the same.



        Sets winsock to raw or telnet



        As above for Echo port



        Load commandline parameters from a file. One param per line.

        INIFILE is loaded after commandline has been processed. INIFILE can also be passed to a running instance by FIRST.

        MSGBOX Message Brings up a message box to prompt the user after startup. (eg to plug-in or check something) (V3.0.0.21+)
        SCALE % Scale the whole application (so you can make it bigger on high pixel screens) (V3.0.0.23+)



        Register / remove ActiveX COM Server. Done by installer, but you may need to do this when changing versions etc.

         Hints: Parameters that put a string into a drop down (eg SendStr, SendNum, HexCSV), can be called multiple times to push more than a single value into the drop down.

        eg realterm.exe hexcsv=uv hexcsv=st hexcsv=ab

        Do then Quit

        If you are doing batch file automation, you will often want Realterm to do something (e.g. send a file), then quit.

        Realterm has SENDQUIT, CAPQUIT, and PORTQUIT commands.

        CAPQUIT can capture either CAPSECS seconds of data, or CAPCOUNT characters, then quit.

        SENDQUIT sends files then quit. When capturing Realterm will  continue the capture after the file send for up to 1 second if chars are still coming in.

        realterm port=\vcp0 flow=2 capture=infile.txt sendquit=outfile.txt

        If the return data is going to take longer to complete, then you can use CAPSECS with SENDQUIT to force the time after sending ends, until capture stops. If CAPSECS is -ve, then it will keep capturing until the input goes idle, to a max of capsecs.

        So below, the capture will remain open, until the flow stops, (for a max of 5 seconds):

        realterm port=\vcp0 flow=2 capture=infile.txt capsecs=-5 sendquit=outfile.txt

        And here capture will remain open for 20 seconds regardless:

        realterm port=\vcp0 flow=2 capture=infile.txt capsecs=20 sendquit=outfile.txt

        When you are calling Realterm within a batch file, you will normally want the batch file to pause until Realterm exits. You must use the batch command START with the /WAIT parameter for this to happen.

        start "Reading I2C EEProm" /wait realterm.exe port=\vcp0 flow=2 capture=infile.srec sendquit=CmdFile.i2c

        When you look at the examples, you will see that I tend to set environment variables for the names of the files, ports, and Realterm itself. So it looks more like this...

        start "Reading I2C EEProm" /wait %RT% port=%ComPort% flow=2 capture=%TempFileName%.srec sendquit=%CmdFileName%

        PORTQUIT: Waiting for USB Ports

        When testing USB devices via batch file, there are two problems that arise.

         PORTQUIT quits the program with an error code, if the port is not able to be opened. This allows your batch file to retry until the port is open or timeout. See examples

        Controlling a Running Instance

        When you begin a line with the FIRST parameter, the parameters will be sent to the existing (first) running instance, which has the same CAPTION / Window Title , and the second instance will terminate. This allows you to pass many of the above parameters (not all will do anything), and some special ones below. Note that Windows Scripting/ActiveX is a better way to do complicated tasks. ( has fix for quoted string bugs)



        Quits Realterm



        same as Quit



        Start/stop capture. 1 starts capture; 0 stops; filename starts and sets filename



        start/stop send file


        "string "

        send string. (only when sent to a running instance)



        send CR after string (sets for following strings)



        send LF after string


        "numeric string "

        send numeric string as binary (only when sent to a running instance)



        The caption (window title) is used to find the running instance see caveat below if you use this to change it.










        When you change the caption of the first instance, subsequently the control instance must be given the same caption.

        realterm.exe first caption="New Realterm"   //now the running instance has a new title

        realterm.exe caption="New Realterm" first DisplayAs=5   //so now we also have to change the controller instance to be able to find it next time.

        Note that if you try to send commandlines to a running instance that is invisible , it will not work. The FIRST mechanism uses the window name, and this disappears when the window is hidden.

        The best idea is to create a special shortcut for each setup you want to use, and set the params in its properties. If you need other parameters added, contact us.

        back to contents

        ActiveX/COM Interface

        RealTerm is an out-of-process server. The active interface is more extensive than the command line. Use a property browser (eg from excel or delphi) to see what it can do. (must be registered first run: REALTERM /REGSERVER)

        You can launch Realterm from another application, eg matlab ,excel , VB,OpenOffice , delphi. Alternatively use windows scripting, and write a simple .SCP file to launch and control it. You could even launch it from a web page to use as telnet client!

        Registering the COM interface

        This should be done automatically when you run the installer. Sometimes this fails, or perhaps you don't have the right permissions under XP or Vista.

        If you get EOleError messages, you need to run the command window (CMD) as administrator.
        In Windows 7, search for CMD in the start menu. ctrl+right-mouse on CMD.EXE, and you get an administrator command window.

        Why not the microsoft comms ocx

        It has many problems. The best thing about using RealTerm is that you can see exactly what is happening when you want. Save yourself time and headaches. If you don't want people to see RealTerm, you can completely hide it.

        Opening Ports and Errors

        (<V3.20)Trying to open a port that is non-existent or has some other problem, results in an error, and Realterm exits.

        (V3.21+) Errors are trapped, and Realterm does not exit. After opening the port, check the PortOpen property to see if it succeeded. The LastErrorMessage property is a multiline string you can examine or display. On the Misc tab, the Show Last Error button allows you to display it manually to help with debugging.

        Sending Strings, Chars and 0x00

        Windows has one big problem for users of binary data. Strings are null-terminated . ie they end with 0x00. Amazing as it seems, you can't pass a string containing char 0 (0x00) through the activeX interface.

        Putstring can send any 8 bit chars except 0. If you need to send char 0 to an application use the Putchar function.

        (v3+) Putstring(String,SendAs) has optional SendAs parameter so you can send ASCII Escaped strings (SendAs=1) or Numeric strings (SendAs=2), the same as the send tab. All of these will send "123 <linefeed>"


        RT.PutString('123\n', 1);

        RT.PutString('49 50 51 10', 2);

        From Matlab   From Excel

        Getting Data

        With the ActiveX interface you can get data in several ways:

        Note that the capture file interface is mature, thoroughly tested and reliable.

        Browsing the COM interface

        Many  languages include a browsing tool to examine the properties and methods of the COM interface. Many properties and methods have help comments that you can see. Use the browser tool.
        One free tool to do this is ActiveX/COM Inspector from Oakland Software
        Browsing the interface will show you how it actually is , as this page may be out of date.
        Some languages might want the type library (.tlb). If you need it, it is part of the source package in the installer.

        Properties & Methods @ V3.0.0.23

        Open Realterm using a property editor/browser. Or open the typelibrary (.tlb) or the realterm_tlb.pas file, which are in the source directory.

            property TimerPeriod: Integer dispid 1;
            property EnableTimerCallbacks: WordBool dispid 2;
            property CaptureFile: WideString dispid 3;
            property Capture: EnumCaptureMode dispid 4;
            property baud: Integer dispid 5;
            property Port: WideString dispid 6;
            property PortOpen: WordBool dispid 7;
            property CaptureCountForCallback: Integer dispid 8;
            property EnableCaptureCallbacks: WordBool dispid 9;
            procedure Close; dispid 10;
            procedure StartCapture; dispid 11;
            procedure StartCaptureAppend; dispid 12;
            procedure StopCapture; dispid 13;
            property FrameSize: Integer dispid 14;
            property DisplayAs: Integer dispid 15;
            property CharCount: Integer dispid 16;
            property CPS: Integer dispid 17;
            property WindowState: EnumWindowState dispid 18;
            property Caption: WideString dispid 19;
            property Visible: WordBool dispid 20;
            property CaptureEnd: Integer dispid 21;
            property CaptureEndUnits: EnumUnits dispid 23;
            procedure PutString(const S: WideString; SendAs: EnumPutStringAs); dispid 22;
            function SelectTabSheet(const TabCaption: WideString): WordBool; dispid 25;
            function DiskFree(Drive: Integer): Double; dispid 24;
            property CaptureTimeLeft: Integer readonly dispid 26;
            procedure PutChar(C: Byte); dispid 27;
            property TrayIconActive: WordBool dispid 28;
            function DiskSize(Drive: Integer): Double; dispid 29;
            property BigEndian: WordBool dispid 30;
            property EchoPort: WideString dispid 31;
            property EchoPortOpen: WordBool dispid 32;
            property HalfDuplex: WordBool dispid 33;
            property HideControls: WordBool dispid 34;
            property Parity: WideString dispid 35;
            property DataBits: Integer dispid 36;
            property StopBits: Integer dispid 37;
            property EchoBaud: Integer dispid 38;
            property EchoParity: WideString dispid 39;
            property EchoDataBits: Integer dispid 40;
            property EchoStopBits: Integer dispid 41;
            property FlowControl: Integer dispid 42;
            property EchoFlowControl: Integer dispid 43;
            property CharDelay: Integer dispid 44;
            property LineDelay: Integer dispid 45;
            property Rows: Integer dispid 46;
            property SendFileDelay: Integer dispid 47;
            property SendFileRepeats: Integer dispid 48;
            property SendFile: WideString dispid 49;
            property Send: WordBool dispid 50;
            procedure ClearTerminal; dispid 51;
            property MonitorOn: WordBool dispid 52;
            property LinefeedIsNewline: WordBool dispid 53;
            procedure NewlineTerminal; dispid 54;
            property RTS: WordBool dispid 55;
            property DTR: WordBool dispid 56;
            property CaptureDirect: WordBool dispid 57;
            function AddCannedSendString(const SendString: WideString; ControlNum: Integer): WordBool; dispid 58;
            property Version: WideString readonly dispid 59;
            procedure TimeStamp(Style: Integer; Delimiter: Byte); dispid 201;
            procedure EnableDataTrigger(

            procedure OnTimer; dispid 1;
            procedure OnCaptureCount; dispid 2;
            procedure OnCaptureStop; dispid 3;
            function OnDataTrigger(Index: Integer; Timeout: WordBool; Data: OleVariant; Size: Integer;

             property LastErrorMessage: WideString readonly dispid 207;



        erm There are several special enumerations used, eg for putstring. If you need to explicitly use the number for these (eg some versions of Matlab), they are here:

          EnumCaptureMode = TOleEnum;
          cmOff = $00000000;
          cmOn = $00000001;
          cmAppend = $00000002;

          EnumWindowState = TOleEnum;
          wsNormal = $00000000;
          wsMinimized = $00000001;
          wsMaximized = $00000002;
          wsFullScreen = $00000003;

          EnumUnits = TOleEnum;
          Bytes = $00000000;
          Secs = $00000001;

          EnumPutStringAs = TOleEnum;
          saLiteral = $00000000;
          saASCII = $00000001;
          saNumbers = $00000002;

        Callback Events

        (V2.0.0.46+) Realterm can send events to an application. From the Events tab you can manually trigger events, to make it easier to test your software interface. The Events tab is only visible when Realterm started as an ActiveX. (But there is a "Show Events Tab" button on the misc tab)

        Events usually have an associated property to enable them. By default they are disabled, so you will need to explicitly enable them before anything happens.

        The Timer is a utility. It does nothing within Realterm, ie it only provides callbacks to your application. This exists as some languages do not have a convenient timer arrangement.

        DataTrigger is new, and a work in progress, so the interface will change in future. Note that when you are capturing a lot of data, or the data rate is high, using the a capture file is probably a better approach than Data Triggers.

        procedure OnTimer; dispid 1;
        procedure OnCaptureCount; dispid 2;
        procedure OnCaptureStop; dispid 3;
        procedure OnDataTrigger(Index: Integer; Timeout: WordBool; Data: OleVariant; Size: Integer; Reenable: WordBool); dispid 201;

        There are several properties and methods to control the events:

        property TimerPeriod: Integer
        property EnableTimerCallbacks: WordBool

        procedure EnableDataTrigger(Index: Integer); dispid 202;
        procedure DisableDataTrigger(Index: Integer);dispid 203;

        procedure DataTriggerSet(Index: Integer; const StartString: WideString;
                                     const EndString: WideString; PacketSIze: Integer; Timeout: Integer;
                                     AutoEnable: WordBool; IgnoreCase: WordBool; IncludeStrings: WordBool);

        Testing Events and Events Tab

        When Realterm has been started as an ActiveX/COM server, there will be an event tab. On this are controls to manully send the various events. This makes testing your code very much easier, as you can getting the event handler going, without having to get the actual serial data working at the same time.

        Events in Excel, IE and some others

        For some reasons events are visible to C#, Matlab and others, but not to Excel, Internet Explorer and some others. A special wrapper DLL has been created that can be used. Install Realterm_2.0.0.70_Signed_Wrapper_setup.exe or later, and it will be automatically installed.

        To see an example of web pages that use the wrapper and V2.0.0.70 from IE10, see:  and the library that calls Realterm at

        (Obviously) only Internet Explorer supports ActiveX interfaces, you cannot control Realterm from Chrome or Firefox.

        WaitForDataTrigger  was provided for programs that cannot use callbacks. See below.

        OnCaptureCount and OnCaptureStop are provided to work with capture.

        OnCaptureCount is used with the properties CharCount and CaptureCountForCallback.
        OnCaptureEvent is fired when CharCount>=CaptureCountForCallback. At the end of the event handler you should update CaptureCountForCallback to a new value. Otherwise the event will not happen again. Alternatively it is possible to clear CharCount.

        Data Trigger

        The default trigger is a LF character at the end of line. So it is ideal to capture ascii data lines eg from the I2C2PC adaptor.
        Before using Data Triggers you should enable them.
        All the methods include an index, to support multiple triggers in future. At present there is only 1 data trigger and index is ignored. Index should be set to 1.

        Data triggers can be automatically re-enabled or manually re-enabled.
        In your OnDataTrigger handler you can reenable the trigger by setting Reenable.

        DataTriggerSet is used to configure the trigger from the COM interface. The Events tab also has a button to edit these settings.
        The TrayIcon changes to Yellow when Data Triggers or Binary Sync Matches occur.


        Timeout numbers are in "ticks" (18ms)


        The Events tab will show when Realterm is started as an ActiveX/COM.
        You can manually display it using the "show Events Tab" button on the misc tab.
        Now you can edit and tests the trigger. The light will flash when a trigger is matched.


        This function is provided for convenience. It is a blocking function. This means that your application will completely stall while it waits.
        This is poor programming practice, and not recommended. But sometimes it is the only way.

        function WaitforDataTrigger(Timeout: Integer): WideString;

        Misc Notes

        Don't rely on the defaults when using ActiveX (eg baud rate). These may change with different revisions.

        This is only a snapshot when this web page was written. Always check your actual version using a browser, as new functions are always being added. If you need other parameters added, contact  us.

        back to contents

        HexCSV2DEC Utility

        This command line utility is installed with Realterm and is normally found at:
        "c:\Program Files\BEL\Realterm\HexCSV2DEC.exe"

        With no parameters it will display its help.
        It converts a file of hexadecimal data values to decimal. Unlike some other hex2dec utilitys it converts the binary format of the hex into decimal numbers. It is especially useful to convert a file of hex captured by reading I2C data with the I2C2PC and BL233, into useful decimal numbers.

        HexCSV2DEC V0.3
        (c)2008 Broadcast Equipment Ltd

        Converts HEX in CSV files to Decimal CSV files

        Command Line may have these forms:
        HexCSV2DEC <InFile> <OutFile>
        HexCSV2DEC <InFile>
        HexCSV2DEC -<option> <InFile> <OutFile>

        Uses stdin, stdout if <file> is omitted
        Only valid UPPERCASE hex substrings will be converted
        Quoted strings, and non-hex data is passed through unchanged EXCEPT
        explicit decimal/bcd strings can be passed though by preceding with "d"
         eg "d1234" will be passed through as "1234"
        Floats (numbers with a decimal point) will pass through
        Default is Big Endian, Unsigned
        Precede hex with the special explicit chars to override the default
          "s" signed big endian  eg "s8000"
          "u" unsigned big endian eg "u8000"
          "t"  signed little endian eg "t0080"
          "v" unsigned little endian eg "v0080"
          "f" IEEE Floating point big endian (4byte singles only)
          "g" IEEE Floating Point little endian
          "b" Binary (only big endian)
          "a" ASCII Chars

        The first parameter can be options -s,-u,-t,-v to set the default format
         eg HEXCSV2DEC -s <infile> <outfile>      Convert hex as signed bigendian
         Alternatively it can be a series of format chars for each hex substring
         eg HEXCSV2DEC -sufbd <infile> <outfile>      Convert hex using format string

        back to contents

        PIC Programmer

        Realterm can has buttons for RESET and POWER if you are using the BEL Dual PIC Programmer .

        Its watches the RB7 line.

        This makes it easy to control a serial PIC when you are using ICP.

        If you are using NT/2K/XP you need to install the DLPORTIO driver using its install program.

        back to contents

        Compiling Realterm

        The current source code for your version is in the installer and will be installed in the "source" subdirectory. It is easy to recompile for specific setups.

        You will need additional components. Async4.07 and Systools are on sourceforge. Other components are on the Download page.

        V3.x is compiled with Delphi XE2 and Apro 4.07

        V2.x is compiled with Delphi 7 and Apro 4.06 library (now free on Sourceforge)

        Version 1.x was compiled with Delphi 3 and used the turbopower Async 2.11 library. 


        Realterm has been tested with Wine  1.0, Opensuse 11.0, Realterm
        A cursory test with Com1, running as root, was successful. If you have tried this with a recent version, please report your result.

        back to contents



        The translation component is not currently working, however if you would like to volunteer, I keep a list for the day it is working. Translators are wanted for all languages. I am not sure if this version will work with non-european languages.

        Email if you can help:

        Who Uses it? / What For?

        If you are using Realterm in your company, please drop me a lineso I can include your company below...

        Help Spread Realterm: Put a link on your companies web page today!

        Also of Interest:



        Old Versions

        The latest version of a program isn't always the one you want. Sometimes it works differently, or isn't as stable as an older one. If installing an old version you may need to start it as Administrator the forst time.

        Old Installers

        Contact Us

        back to contents