Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jacobsa/go-serial

A Go library for dealing with serial ports.
https://github.com/jacobsa/go-serial

Last synced: 8 days ago
JSON representation

A Go library for dealing with serial ports.

Awesome Lists containing this project

README

        

go-serial
=========

This is a package that allows you to read from and write to serial ports in Go.

OS support
----------

Currently this package works only on OS X, Linux and Windows. It could probably be ported
to other Unix-like platforms simply by updating a few constants; get in touch if
you are interested in helping and have hardware to test with.

Installation
------------

Simply use `go get`:

go get github.com/jacobsa/go-serial/serial

To update later:

go get -u github.com/jacobsa/go-serial/serial

Use
---

Set up a `serial.OpenOptions` struct, then call `serial.Open`. For example:

````go
import "fmt"
import "log"
import "github.com/jacobsa/go-serial/serial"

...

// Set up options.
options := serial.OpenOptions{
PortName: "/dev/tty.usbserial-A8008HlV",
BaudRate: 19200,
DataBits: 8,
StopBits: 1,
MinimumReadSize: 4,
}

// Open the port.
port, err := serial.Open(options)
if err != nil {
log.Fatalf("serial.Open: %v", err)
}

// Make sure to close it later.
defer port.Close()

// Write 4 bytes to the port.
b := []byte{0x00, 0x01, 0x02, 0x03}
n, err := port.Write(b)
if err != nil {
log.Fatalf("port.Write: %v", err)
}

fmt.Println("Wrote", n, "bytes.")
````

See the documentation for the `OpenOptions` struct in `serial.go` for more
information on the supported options.