sungrow/vendor/github.com/goburrow/serial/serial.go

65 lines
1.4 KiB
Go
Raw Normal View History

2021-01-10 14:43:46 +11:00
/*
Package serial provides a cross-platform serial reader and writer.
*/
package serial
import (
"errors"
"io"
"time"
)
var (
// ErrTimeout is occurred when timing out.
ErrTimeout = errors.New("serial: timeout")
)
// Config is common configuration for serial port.
type Config struct {
// Device path (/dev/ttyS0)
Address string
// Baud rate (default 19200)
BaudRate int
// Data bits: 5, 6, 7 or 8 (default 8)
DataBits int
// Stop bits: 1 or 2 (default 1)
StopBits int
// Parity: N - None, E - Even, O - Odd (default E)
// (The use of no parity requires 2 stop bits.)
Parity string
// Read (Write) timeout.
Timeout time.Duration
// Configuration related to RS485
RS485 RS485Config
}
// platform independent RS485 config. Thie structure is ignored unless Enable is true.
type RS485Config struct {
// Enable RS485 support
Enabled bool
// Delay RTS prior to send
DelayRtsBeforeSend time.Duration
// Delay RTS after send
DelayRtsAfterSend time.Duration
// Set RTS high during send
RtsHighDuringSend bool
// Set RTS high after send
RtsHighAfterSend bool
// Rx during Tx
RxDuringTx bool
}
// Port is the interface for controlling serial port.
type Port interface {
io.ReadWriteCloser
// Connect connects to the serial port.
Open(*Config) error
}
// Open opens a serial port.
func Open(c *Config) (p Port, err error) {
p = New()
err = p.Open(c)
return
}