Sapia Large Logo Sapia Incorporated                       
Modbus Software Components for Developers

Win32 DLL Image  SMRL Modbus/RTU Master Dynamic Link Library

SMRL is a simple yet powerful dynamic link library that provides a fast, convenient way to communicate with Modbus/RTU slave devices connected to your PC's serial port. In no time at all, your C, C++, Visual Basic 6.0, VB.NET or other application will be talking Modbus/RTU.  Any application that can link to and call dll’s can use SMRL.

Designed to be lean, mean and fast, SMRL does not require MFC nor COM libraries.  Simple Win32 console applications to full Windows MFC and VB.NET applications can use SMRL.  SMRL is also thread safe.  Each process and/or thread receives its own data area for configuring its own comm. port.   SMRL is ideal for those developers that want to create their own high powered, modularized, multi-threaded applications.

A powerful set of API functions are provided for configuring SMRL and for talking to slave devices at run-time.  Talking to a Modbus/RTU slave is as simple as calling a function with the necessary arguments.  SMRL automatically builds the command, appends a CRC, sends the command out the serial port, and receives and validates the response.  Your program just reads and writes simple 16-bit data values.  The example fragments below show just how easy it is to read the first ten holding registers from slave device 5.  Complete examples for VB 6.0, VC++6.0 and VB.NET are provided with the SMRL demo program.

Visual Basic


Dim nHrData(10) As Integer                ' holding register data

Dim e As Integer                          ' last error number


' Read first ten holding registers from slave 5

e = SmrlMbReadHoldingRegs(5, 0, 10, nHrData(0))



Visual C++


short nStatus;                            // return status

short nReg[ 10 ];                         // holding register buffer


// Read first ten holding registers from slave 5

nStatus = SmrlMbReadHoldingRegs( 5, 0, 10, &nReg[ 0 ] );


Supported Modbus Commands (decimal) 01 – Read Coil Status   (0x references)
02 – Read Input Status   (1x references)
03 – Read Holding Register(s)   (4x references)
04 – Read Input Register(s)   (3x references)
05 – Force Single Coil   (0x references)
06 – Preset Single Register   (4x references)
07 – Read Exception Status
15 – Force Multiple Coils   (0x references)
16 – Preset Multiple Registers   (4x references)
17 – Report Slave ID

Download SMRL Demo here

The SMRL Demo is a complete operating DLL that has a 60-minute time limit.  After 60 minutes, communication functions will be disabled.  Re-starting the application will initiate another 60-minute demonstration period.


Model Description Price*

Modbus/RTU DLL, Single Development Site License (on CD-ROM)


Modbus/RTU DLL, Single Development Site License (on-line delivery)


* Quantity 1 (US$).  For larger quantities, contact Sapia.   Michigan residents please add 6% sales tax.

By purchasing a single development site license you may install SMRL and develop your application with it on a single PC and distribute it with your compiled application program royalty free an unlimited number of times.  Please see the EULA included with the demo for complete licensing information.