serialcomm

package
v0.10.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 24, 2025 License: BSD-3-Clause Imports: 12 Imported by: 0

README


This package provides a simple interface for serial communication in Go. It supports creating connections to serial ports and handling incoming data.

Installation

go get github.com/exonlabs/go-utils/pkg/comm/serialcomm

Usage

Connection URI

serial@<port>:<baud>:<mode>

  • port: Serial port name (e.g., /dev/ttyS0 or COM1)
  • baud: Baud rate (e.g., 4800,9600,19200,115200...)
  • mode: Data bits, parity, and stop bits in the format {8|7}{N|E|O|M|S}{1|2}
Usage Example

https://github.com/exonlabs/go-utils/tree/master/examples/comm

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseUri

func ParseUri(uri string) (string, *serial.Mode, error)

ParseUri parses a serial URI.

The expected URI format is `serial@<port>:<baud>:<mode>`

<port>  serial port name (e.g., /dev/ttyS0 or COM1)
<baud>  Baud rate (e.g., 4800,9600,19200,115200...)
<mode>  bytesize, parity and stopbits
        {8|7}{N|E|O|M|S}{1|2}

example:
   - serial@/dev/ttyS0:9600:8N1          (linux)
   - serial@COM1:9600:8N1                (windows)

Returns the serial params and any error encountered.

Types

type Connection

type Connection struct {

	// Log is the logger instance for communication data logging.
	Log *logging.Logger

	// PollConfig defines the read polling.
	PollConfig *comm.PollingConfig
	// contains filtered or unexported fields
}

Connection represents a serial connection with event support and logging.

func NewConnection

func NewConnection(uri string, log *logging.Logger, opts dictx.Dict) (*Connection, error)

NewConnection creates and initializes a new Connection for the given URI.

The parsed options are:

func (*Connection) Cancel

func (c *Connection) Cancel()

Cancel cancels any ongoing operations on the connection.

func (*Connection) CancelRecv

func (c *Connection) CancelRecv()

Cancel interrupts the ongoing receiving operation for this Connection.

func (*Connection) CancelSend

func (c *Connection) CancelSend()

Cancel interrupts the ongoing sending operation for this Connection.

func (*Connection) Close

func (c *Connection) Close()

Close shuts down the connection and cleaning up resources.

func (*Connection) IsOpened

func (c *Connection) IsOpened() bool

IsOpened indicates whether the connection is currently open and active.

func (*Connection) Open

func (c *Connection) Open(timeout float64) error

Open opens the serial port.

func (*Connection) Parent

func (c *Connection) Parent() comm.Listener

Parent returns the parent Listener if any is associated with the Connection.

func (*Connection) Recv

func (c *Connection) Recv(timeout float64) ([]byte, error)

Recv waits for incoming data over the connection until a timeout or interrupt event occurs. Setting timeout=0 will wait indefinitely.

func (*Connection) RecvFrom

func (c *Connection) RecvFrom(timeout float64) ([]byte, any, error)

RecvFrom waits for incoming data from addr over the connection until a timeout or interrupt event occurs.

Setting timeout 0 or negative value will wait indefinitely.

func (*Connection) Send

func (c *Connection) Send(data []byte, timeout float64) error

Send transmits data over the connection, with a specified timeout.

func (*Connection) SendTo

func (c *Connection) SendTo(data []byte, _ any, timeout float64) error

SendTo transmits data to addr over the connection, with a specified timeout.

Setting timeout 0 or negative value will wait indefinitely.

func (*Connection) SerialPort

func (c *Connection) SerialPort() serial.Port

SerialPort returns the underlying serial port object

func (*Connection) SetMode

func (c *Connection) SetMode(mode string) error

Mode sets new mode for the serial port. mode has the format `<baud>:<mode>` as defined for the URI.

func (*Connection) String

func (c *Connection) String() string

String returns a string representation of the Connection.

func (*Connection) Type

func (c *Connection) Type() string

Type returns the type of the connection as inferred from the Uri.

func (*Connection) Uri

func (c *Connection) Uri() string

Uri returns the URI of the connection

type Listener

type Listener struct {

	// ConnectionHandler defines the function to handle incoming connections.
	ConnectionHandler func(comm.Connection)

	// Log is the logger instance for communication data logging.
	Log *logging.Logger

	// PollConfig defines the read polling.
	PollConfig *comm.PollingConfig
	// contains filtered or unexported fields
}

Listener represents a serial listener that handles incoming connections

func NewListener

func NewListener(uri string, log *logging.Logger, opts dictx.Dict) (*Listener, error)

NewListener creates a new Listener.

The parsed options are:

func (*Listener) IsActive

func (l *Listener) IsActive() bool

IsActive checks if the listener is currently active.

func (*Listener) SerialPort

func (l *Listener) SerialPort() serial.Port

SerialPort returns the underlying serial port object

func (*Listener) SetConnHandler

func (l *Listener) SetConnHandler(handler func(comm.Connection))

SetConnHandler sets a callback function to handle connections.

func (*Listener) Start

func (l *Listener) Start() error

Start begins listening for connections, calling the connectionHandler for each established connection.

func (*Listener) Stop

func (l *Listener) Stop()

Stop gracefully shuts down the listener.

func (*Listener) String

func (l *Listener) String() string

String returns a string representation of the Listener.

func (*Listener) Type

func (l *Listener) Type() string

Type returns the type of the listener as inferred from the Uri.

func (*Listener) Uri

func (l *Listener) Uri() string

Uri returns the URI of the listener

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL