Skip to content

jpnurmi/libserialport.dart

Repository files navigation

Dart FFI bindings to libserialport

pub CI license: LGPL3+

TIP: See also flutter_libserialport for automatic building and deploying of libserialport.

This Dart package is based on libserialport, which is a minimal C-library created by the sigrok project, and released under the LGPL3+ license.

Supported platforms:

  • Linux
  • macOS
  • Windows
  • Android

This package uses dart:ffi to call libserialport's C APIs, which implies that libserialport must be bundled to or deployed with the host application. It can be tedious to build and deploy libserialport on all target platforms, but in case you are building a Flutter app instead of a pure Dart app, there is a ready-made drop-in solution called flutter_libserialport that utilizes Flutter's build system to build and deploy libserialport on all supported platforms:

Usage

import 'package:libserialport/libserialport.dart';

final name = SerialPort.availablePorts.first;
final port = SerialPort(name);
if (!port.openReadWrite()) {
  print(SerialPort.lastError);
  exit(-1);
}

port.write(/* ... */);

final reader = SerialPortReader(port);
reader.stream.listen((data) {
  print('received: $data');
});

To use this package, add libserialport as a dependency in your pubspec.yaml file.