Version 1.8.0
Graphical Data Acquisition and Control Software
for Microcontrollers

Thank you for using this software!

MakerPlot is a derivative work of StampPlot Pro. As such, a number of things have changed, for the better we hope!

V1.8.0 – January, 2019

    Load speed has been significantly increased, especially on laptops, by allowing the user to limit the number of COMM PORT number that are searched to find available ports.

    In first run, this screen will be presented to the user:

This allows the user to select the maximum port numbers to search. As it mentions, if you are a typical users where you may only have a couple devices, 15 is usually more than enough. The maximum is 255.

This setting may be changed at any time through the Configuration
à Port tab.

The instruction, !PMAX value, max also be used.

  • Data Builder for Serial Data Formatting
    The Data Builder allows capture of incoming serial data and parsing of string and fields for use in MakerPlot processing. It may be opened from the View menu or using the Blue hammer on the toolbar.
  • The Settings define operation of the Data Builder.
    • Enable Data Builder enables capture and processing of the data. It also selects and option under “Configuration”à”Data” to use the Builder.
    • Halt will stop current processing, but not return string processing back to MakerPlot’s normal processing.
    • Process Code with MakerPlot allows passing the final code at the bottom to MakerPlot for normal data processing.
    • Save Config to Macro enables saving the configuration when MakerPlot macro is built.
      Exiting MakerPlot ALWAYS saves the current configuration to Windows registry for loading next run.


  • Incoming Data can show the contents of the Queue for processing. The current numbers of characters is displayed along with a way to clear it. Should the queue exceed 10,000, it will automatically clear.
  • Define Data String will allow the user to define how a string is structured either with a beginning character and the length or be defining the end character or the delimiter between strings. Values may be strings, decimal ASCII characters or HEX ASCII characters.

    The resultant string is shown based on the parameters.

    The replacement fields allow replacement of characters or string in the data to strip out or replace unwanted characters. NOTE: All ASCII characters < decimal 31 are removed automatically.

    The resultant string is shown.
  • Parse Fields allows parsing of the data in the string. The parse character or string may be entered and resultant data for fields %f0 to %f33 are shown. In the Final Data MakerPlot Processing area shows 3 text fields.  The first is the code template where the data fields may be used in MakerPlot instructions and data formats for processing. %f0 to %f33 are replaced at the time of processing with the data from the fields listed above it.

    Analog, digital, message string may be defined using data, all instructions and macro values, such as (RTIME) for real time, may be used. The following is the contents of the example text block which may be used a simple guide.

%f0 to %f33 in the template will be replaced with the values for those fields. Processed code will be shown. Check box at top to have it processed by MakerPlot.


To plot channels of analog data, separated by commas - must start with a value.


Digital, start with %, no commas:


For messages, write text, cannot start with a number.

The value is %f10


Advanced MakerPlot features may be used such as:

Showing a value in status bar at top:

!STAT The value is %f6 at (PTIME)


If a field contains a value, do operation. Additional operations can be separated by (CR)

!IFTH %f0,==,$GPR,%f1,%f2(CR)!STAT Time is (RTIME)



Manually plotting a channel:

!ACHN 0,%f2,(RED)


Performing math (note spaces):

!ACHN 1,[[%f2 + %f3] / 2],(GREEN)


Manually logging data with time:

!LOGD (PTIME),%f11, %f20


Drawing shapes with data:

!FREC %f0,%f1,%f2,%f4,(RED)


And most any other MakerPlot instruction or feature!


Note: The operations of the Configuration--> Color

& Scales tab are also available for analog data plotted here as well as any macro processing.

V1.7.0 – April 22, 2015

·        Corrected interface/macro build problem where computers using “,” as decimal separator could not build properly.


·         Fixed some color issues with drawing and improved (ORANGE) color.


·         Added a new form window to more simply add legend to your plot.
This window simply creates constant drawings for labeling information – it is not reloaded when the plot opens. Data may be entered in the “Constant Drawing” section of the configuration macro code.

Accessed via the Configuration Window, Scales + Color Tab



V1.6.1 – October 4, 2014

·         Corrected issues with setting oLabel boxes to transparent value of 7 and macro building correctly.


V1.6.0 Additions and updates since 1.5.0 - Internet Controls

  • August 2014
    Increased Internet communications abilities through the addition of new controls which may be easily added to existing interfaces:

TCP Server, TCP Client and UDP Control

  • Added a new section on Internet use including network principles, new controls and examples for the Ethernet and WiFi Shields: 
  • Two new interfaces for exploring, monitoring and control.
  • New Arduino code for WiFi Shield and Ethernet Shield.

Adds a new Timer Control to allow multiple timers – operates in one-shot or repeats for continuous timing. Sets a flag that may be read as well.







  • Modified logging/ macros/plotting with logs to be more consistent file format for end of line characters.
  • Added the macro value of objxxx to read control objects by their index numbers, such as:
    !DBUG object 5 is (obj5) and has a value of ((obj5))
    !FORP 1,50,!DBUG object & is (obj&) and has a value of ((obj&))


V1.5.95 – 6/2/2014

       Corrected bug on plotting binary data.

V1.5.9 – 4/29/2014

       Corrected bug where a modal window warning will crash the program for non-registered users when the 3-minute connection limit and 15-minute registration annoyance are displayed at once (or attempted by MakerPlot).

       In Logging Menu, modified the Plot from Data Log routine so that if the file is not in MakerPlot format (data time, etc), the file will be processed as raw data. This allows plotting data from a text file or processing control or other instructions. MakerPlot syntax rules apply, such as ending with ASCII 13 or 10, and binary values having % in front.

       Guide version 1.5.1 - In Creating and Configuring Controls on the Interface, corrected meter2_obj to mp_meter_obj for meter creation. The meter2 control was an old version left in for backwards compatibility but not totally compatible with the current software.

V1.5.8 – 4/27/2014

·         Corrected occasional bug that crashes with modal warning.

·         Corrected problem where !PORT in initialization was not setting port (needs to be after !NEWP)


V1.5.5 – 3/23/2014

·         Corrected serial routines causing stalling, mostly noted using the Arduino Uno R3 boards.

V1.5.3 – 2/22/2014

·         Corrected a problem where using log scale and values < 1 plotted erroneously.

·         Corrected code to close aux serial ports when loading plot/interface select screens.

V1.5.2 – 2/16/2014

·         Correctly configured installer so as not to have multiple copies showing on add/remove programs. Effective for version1.5.0 and up.

·         Corrected a few BAUD select bugs in various interfaces.

·         Corrected a bug when selecting colors for the controls 2 image button, image0 property.


V1.5.0 Bug Fixes/Manual Corrections – 2/10/2014

Version 1.5 marks a major release update fixes several issues and adding new features a such as multiple serial ports.
The PDF version distributed with MakerPlot has links for changes in the guide.


  • Momentary Image Button pops back up when changed with code.
    When activating a Controls 2 image button set up for momentary control, it will pop back up as if clicked manually.
    ‘ button will show pressed then released.
    !POBJ myBut=1
  • Bug Fix on opening text box object for editing
    Text boxes and text scroll boxes now open properly in the Object Editor when Shift-Right-Clicked.  Drop boxes, due to development software limitations, probably will never support this action.
  • Updated the documentation’s instructions and values for the following:


Disables the Message Window from opening automatically.

Added the following MakerPlot Values missed:
(DATE)  month/day/year
(M0)- Month
(DD)- Day of month
(YY)- Year

(HH)- Hours
(MM)- Minutes
(SS)- Seconds

Added the following to the program and documentation:
Day of the week values
(wDAY) - Day of the week, such as “Saturday”
(awDAY) - Abbreviated week day, such as “Sat”
(nwDAY) - Number for the week day, such as “7” for Saturday



  • oImage$ to prevent resizing
    To prevent the resizing of images, such as logo’s, that may lose resolution when resized, use $ in the name of the image object (oImage objects only), such as img_logo$. A command to prevent resizing elements globally on the interface is under consideration.
  • GREG for registry entries has a default value
    Missing in the documentation was the default value to use when reading a registry entry.
    ‘ Get the registry entry for the myPlot_myText key, use Hello if no value exists.
    POBJ mytext=(GREG.myPlot_mytext,Hello)

    GREG is used to read values set by !SREG.
    ‘ Store the current value of myText in the registry using the key myText
    !SREG myText,(MyPlot_myText)

    Note that !SSET mySaveName and !GSET mySaveName are used to save/recall the entire interface at once to/from the registry.
  • Fixed a bug in Macro Builder that was adding unwanted characters when opening files.
  • When building a macro, the oTimers have been moved to the end of the Object Code so that objects they access will have been created.

V1.50 Additions/Enhancements

·         Increased use of wildcard for controls.

Use of wildcards has been implemented for the Active-X Controls 2, such as using
Met*.Alarm=0 to turn off alarming for all meters controls beginning with Met.



  • Ability to use nulls in analog data list for specific channels.
    Plotting select channels using by leaving nulls (nothing) in comma-separated values (CSVs). Analog CSVs may now start with a comma (null for 1st value or AIN0 value). This allows only specific channels to be plotted based on a value’s location in the comma-list. MakerPlot values and data are updated and accessible. The CSV string may start with a null value as well.



Would plot 10 for the 3rd channel of analog data (channel 2 or AIN2). No other channels will be plotted. The Values Window values for channel 2 and the MakerPlot values of (AIN2), (AINMAX2), etc will be updated and accessible.


Would plot channels 0 and 2, again updating values.


30 would be plotted and used as channel 2. In this list, 50 is considered at channel 11. As only channels 0-9 are plotted automatically it will not be plotted but the value/min/max/avg of channel 11 will be accessible in the Values Window and as (AIN11), (AINMIN11), etc.

·         Use of !ACHN for non-plotting channels.
!ACHN is used to manually plot/store data on a specific channel in a specific color. This instruction has been extended to allow channel values up to 99 so that data may be stored and accessed in the Values Window or as MakerPlot values, such as (AINAVE50). The color is still required though channels above 9 are not plotted.
ACHN channel,value,color
!ACHN 50,100,0

  • (DATA) and (DATAxx) to Return Incoming Analog/Message Strings and Values
    When analog data (single or multiple comma separated values) or text messages are received, the raw data (of any type) may be accessed as a (DATA) for the entire string or (DATA0), (DATA1), etc, for individual values based on comma separation or the parse character delimiter defined in Options or using !PCHR instruction. Unused values return nulls.
    ? (DATA)

    Would return “10,20,30,40
    ? (DATA2)
    Would return “30”

    ‘ Set parse character to space instead of comma
    Hello world! My data is 1 2 3 4 5
    ? (DATA)

    Would return entire string
    ? (DATA2)
    Would return “My”

  • Debug/Immediate Window Changes
    • Use of ? in the Debug/Immediate Window for !DBUG
      When manually entering text in the Debug/Immediate Window, ? may be used in place of !DBUG to show information in window.
      ? the value of channel 0 is (AIN0)
      ? (RTIME)
    • Added a filter text box on the Debug/Immediate
      If this text box is not empty (indicated by being green), only data containing the filter string will be displayed. Error messages are not filtered; data from the device in Terminal Mode is filtered.


  • Add Your Error Message Using !ERRR
    Add your own error message to the main window’s bottom status bar and the DEBUG Window.
    !ERRR Value exceeded!(CR)!BELL

  • Alphanumeric Text lists for oDrop & oList Controls
    The oDrop controls now accepts text as well as values for populating from a list:
    !POBJ drpCOMMs.LIST=OFF,1,2,3,4

    For clarification on using list and drop boxes:
    !POBJ lst_1=1,2,3,4                  Will set the control to the 1st value (add it if necessary first)
    !POBJ lst_1.Add=1,2,3,4           Will set the control to the entire string including commas
    !POBJ lst_1.LIST=1,2,3,4          Add each comma-separated value as individual list entries

    Having comma separated values can be beneficial at times.  For instance, different data could be pulled out of the user selected entry, such as if a list called drp_Speed contains
    “Speed slow               ,50”. If the user only sees and selects “Slow Speed”, the other value (50) can be pulled using:
    ‘ Manually parse the values
    !SPLT (drp_speed)
    ‘ Send the 2nd value to the controller (0 based list)
    !SEND (PARSE1)


  • New File/folder handling
    The following have been implemented to make logging and other actions more versatile:

!MDIR folderName

Creates a folder in the MakerPlot Documents root directory. No other location can be used. Creating a folder that already exists does not cause issues.

‘ place headers in file on first create
!IFTH (FILE.(DPATH)test.txt),==,0,!LOGF (DPATH)test.txt,TIME, VALUE

Return 1 if either the file exists or, for a folder, the folder exists and has at least one file in it. If no file or populated folder, 0 is returned.

!LOGF Path\Filename,Data,Data
!LOGF myData.txt,(RTIME),(AIN0),(AIN1)
!LOGF (DOCPATH)myData2.csv,1,2,3



Creates and appends to the named file in the defined path, such as (DPATH) for data directory. This instruction creates (if needed), opens, writes and closes the named file.

This operation does not automatically use time data as first value. Also, as the file is opened/closed each use, it is slower then logging normally using !NAMD and automatic logging or using !LOGD for manual logging to the standard data file.

Use is restricted to the MakerPlot documents folder.

!DELF Path\Filename
!DELF (DPATH)Test.txt

Deletes the named file. Use is restricted to the MakerPlot documents folders.



  • Hiding background during interface construction & showing again.
    The !HIDE and !SHOW instructions will hide and show the background of the interface. This allows the user to not see the control-by-control placement. Hiding times out after 30 seconds in the event of a problem.

    The Macro Builder has a new check box to add this automatically to a build. If added manually, add after !NEWP.

  • Added an On-Line Release Notes Entry to Help Menu
    This Menu choice will open the on-line, up-to-date release note information for MakerPlot to check on bug fixes or new releases more easily.
  • Auxiliary Serial Port Objects
    Three auxiliary Serial Port Objects allow collecting data from multiple sources at once. Each port has its own event code for when data arrives or if the port has an error. Use standard MakerPlot instructions to define what occurs. The arriving data may be accessed with (DATA) for the entire string or (DATA0) to (DATA99) for each comma-separated value (may use other delimiters as well). Once placed in the queue, such as analog data, processing is performed normally based on data structure.

    Indicators have been added to Aux Receive (AR) and Aux Transmit (AT). These will be gray=none connected, green=at least 1 connected, red = receiving data, Yellow = Error.

    On errors, customized error events may be written. Use (ERR) to access the error event name. Each port acts independently.

·         Added a 2nd page for Interface Selection with a multi-Serial Port Standard Interface and future pre-made interfaces.


Version 1.3.4 – February 1, 2014

·         Corrected a problem with data hangs & glitches using interactive controls.

Version 1.3.3 – January 11, 2014

·         Corrected a bug that was causing a controller reset every few seconds with low data rates and DTR enabled.

Version 1.3.2 – December 30, 2013

·         Corrected issues with binary data.

·         Improved speed when manually logging data (!LOGD).

Version 1.3.1 – December 23, 2013

·         Corrected small serial issue most apparent when doing interactive control.

Version 1.3.0 – December 20, 2013

·         Replaces the Serial Communications (MSCOMM32) control with a much better control.

o    COM port values up to 255.

o    Much more stable communications.

o    Should lift limitation on available USB drivers for 64-bit machines (Prolific and others).

·         Updated the MakerPlot Guide

Version 1.2.5 update – July 31st, 2013

·         MakerPlot installer released with Verisign © Certification.


Version 1.2.2 update – July 21st, 2013

·         Corrected bugs which in which image button controls were not updating color properly nor being able to change the label through the popup menu for Controls.

Version 1.2.0 update – June 1st, 2013

·         Corrected a bug which was not allowing drag-drop placement of Controls 2 meters.

Version 1.1.5 update – May 22nd, 2013

·         Modified the updating of objects using Auto Update features, such as image buttons and meters. A large number of these controls updating were causing the program to “hang” with each trying to update every 100mS. An algorithm has been applied for the update interval for each to be:
50mS + (number of controls auto-updating x 10mS).


Version 1.1.2 update – April 18th, 2013

·         Corrected a bug that was causing a timeout after 3 minutes even when registered.

Version 1.1 updates – March 10th, 2013

·         Correct problems of control sizing, macro loading and crashed on non-U.S. systems.

·         Added detection of the system’s use of commas (i.e: 5,25) as a decimal point and provides recommendation to change to a period (i.e: 5.25) for proper operation.

Distribution Change

LearnOnLine has licensed distribution rights to the software. We hope that our collaboration will mean bigger and better things. The distribution change does mean a change from the prior model.

·         This software may be evaluated for 30 days with a 3-minute connection limit, and an occasion pop-up window.

·         Following that limit, unregistered users will no long be able to connect or build & save macro files.

·         Through an agreement between SelmaWare and LearnOnLine, users having purchased a license for StampPlot Pro version 3.7 or higher can receive a free license upgrade. Please see for more details.

Name and Focus Change

The name change is a means to appeal to a larger audience – the many “Makers” out there working with microcontrollers (and us in making this software!). With the name change, a brand new guide has been written with code examples using the Arduino© Microcontroller.

If you are new to the software, welcome! We hope you find it useful in your projects.

If you are a returning user, we endeavored to make this upgrade of value to you.

Software Enhancements

We have spent much of 2012 making revisions to the software, writing example code, the guide and a new website with many videos for MakerPlot use!

As such, there have been some heavy modifications to the software to help ensure a better user experience.

·         While we have tried to maintain compatibility.

·         The vast majority of other features should work normally, but this is not guaranteed. Interfaces using V3.9x meters and buttons should still work, but the MakerPlot interfaces and newly made interfaces use a newer version of the meters and image buttons.

·         The same associations are used for macro’s - .spm.  MakerPlot will be the program used when associated spm files are opened directly with a double-click.

·         Some Specific Enhancements:

o    Faster plotting using automatic updating of meters and some other controls.

o    All 10 channels of plotted data may be changed as to color, see Configuration WindowàColor + Scales.
!ACLR channel, color

o    All 100 channels of processed analog data may have a span and offset applied before plotting, see Configuration WindowàColor + Scales for setting channels 0-9 using the configuration window.
!AMTH channel, x value,+ value - !AMTH 0,10,5 (channel 0 * 10 + 5)

o    NEW Drag and Drop controls pre-defined (though end user may change) with sounds for a variety of NEW buttons/switches.

o    NEW images and sound files for a variety of switches and controls.

o    NEW methods for setting properties of controls in the Object Editor. All properties may be read as a value, (

o    New storing of data values as ‘variables’ or for macro-passing using !SETD 0-99,value ,and read as a value (GETD0-99).

o    Data values may be assigned names or labels and used in code:
!LBLD 0-99,Name
!SETD Name,value
!DBUG (Name)

o    Values Window, Data Tab, has a selection to show all channels of analog data, 0-99.

o    Nearly universal color use of 0-15, (color) or hexadecimal RGB colors.

o    Assignable custom colors for your development.

o    Ability to scale the main plot to all channels of data, plotted channels, or a specific channel:
!ASCL ALL       !ASCL VIEW    !ASCL chanNum

o    New information and yes/no pop-up windows:
!INFO message
!MRYN message, instructions to be run if yes

o    NOTE: Digital bits are now plotted with LSB at top and MSB at bottom.

o    Many other additions to instructions and operations.

o    Full testing of all features – many, many bug fixes from prior versions.

o    New updated installer package to ease installation issues on newer systems.

o    A lot of the old “clutter” of files from prior versions has been removed.

Please read through areas of interest to you in the MakerPlot Guide.

Whether you are a new user or upgrading, we hope we have dramatically simplified the use of the software and the creation of your own interfaces to help you plot, monitor and control in the way YOU wish to!

SelmaWare Solutions, LLC & LearnOnLine, Inc
27 December, 2012