serialport 1.0.0

Simple crossplatform work with serailport

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:


Build Status Build status codecov Dub Downloads License

Docs generated by adrdox.

Library provides simple work with serial port for Linux, Windows and MacOS.

Simple usage

auto com = new SerialPortBlk("/dev/ttyUSB0", 19200);

// setting parameters example
com.config = SPConfig(9600, DataBits.data8, Parity.none,
com.stopBits = StopBits.two;
// set 9600 baudrate, 8 data bits, no parity and one stop bit

auto cnt = com.write(someDataArray);
// cnt must be equal someDataArray.length

// res1 is slice of bufferForReading with readed data
auto res1 =;

SerialPortNonBlk provides non-blocking read (immediatlly return data in system serial port buffer) and write (return writed bytes count at the first onset).

Warning: unix systems allow only standard speeds [0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400]

Example: monitor

If you want use read/write loops in fibers you can use SerialPortFR class.

//                                                      vibe.core.sleep for example
auto com = new SerialPortFR("/dev/ttyUSB0", "9600:8N1", sleepDelegate);

//                            write timeout
com.writeLoop(someDataArray, 500.dur!"usecs");

//                                          read timeout    frame end gap
auto res2 = com.readLoop(bufferForReading, 500.dur!"msecs", 20.dur!"msecs");

At expiration of write timeout throws TimeoutException.

At expiration of read timeout throws TimeoutException if no bytes readed. If readed bytes count != 0 wait frame end gap and if no new bytes return readed.

Reading and writing loops algorithms use Fiber.yield if available, or Thread.yield otherwise. If you want redefine this behavior, you can set void delegate() yieldFunc field of SerialPort through ctor or directly.


For linux and OSX tested

  • ldc
  • ldc-beta
  • ldc-1.8.0
  • dmd
  • dmd-nightly
  • dmd-2.079.1
  • dmd-2.078.3

For windows tested fox x86 and x64

  • dmd beta
  • dmd stable
  • ldc beta
  • ldc stable

See .travis.yml .appveyor.yml


  1. Windows not full tested (not real test with virtual com ports) by CI because

  2. OSX has strange limitation see first, second

  • Oleg Butko (deviator)
2.2.3 2020-Jul-27
2.2.2 2019-Oct-25
2.2.1 2019-Oct-24
2.2.0 2018-Oct-25
2.1.7 2018-Jul-19
Show all 41 versions
Download Stats:
  • 2 downloads today

  • 4 downloads this week

  • 17 downloads this month

  • 3048 downloads total

Short URL: