Added SetStopBits (linux only)
This commit is contained in:
11
serial.go
11
serial.go
@@ -23,6 +23,9 @@ type SerialPort interface {
|
|||||||
|
|
||||||
// Set data bits
|
// Set data bits
|
||||||
SetDataBits(bits int) error
|
SetDataBits(bits int) error
|
||||||
|
|
||||||
|
// Set stop bits
|
||||||
|
SetStopBits(bits StopBits) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type Parity int
|
type Parity int
|
||||||
@@ -35,6 +38,14 @@ const (
|
|||||||
PARITY_SPACE
|
PARITY_SPACE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type StopBits int
|
||||||
|
|
||||||
|
const (
|
||||||
|
STOPBITS_ONE StopBits = iota
|
||||||
|
STOPBITS_ONEPOINTFIVE
|
||||||
|
STOPBITS_TWO
|
||||||
|
)
|
||||||
|
|
||||||
// Platform independent error type for serial ports
|
// Platform independent error type for serial ports
|
||||||
type SerialPortError struct {
|
type SerialPortError struct {
|
||||||
err string
|
err string
|
||||||
|
|||||||
@@ -266,6 +266,20 @@ func (port *linuxSerialPort) SetDataBits(bits int) error {
|
|||||||
return setTermSettings(port.Handle, settings)
|
return setTermSettings(port.Handle, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (port *linuxSerialPort) SetStopBits(bits StopBits) error {
|
||||||
|
settings, err := getTermSettings(port.Handle)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch bits {
|
||||||
|
case STOPBITS_ONE:
|
||||||
|
settings.c_cflag &= ^C.tcflag_t(syscall.CSTOPB)
|
||||||
|
case STOPBITS_ONEPOINTFIVE, STOPBITS_TWO:
|
||||||
|
settings.c_cflag |= syscall.CSTOPB
|
||||||
|
}
|
||||||
|
return setTermSettings(port.Handle, settings)
|
||||||
|
}
|
||||||
|
|
||||||
func OpenPort(portName string, exclusive bool) (SerialPort, error) {
|
func OpenPort(portName string, exclusive bool) (SerialPort, error) {
|
||||||
handle, err := syscall.Open(portName, syscall.O_RDWR|syscall.O_NOCTTY|syscall.O_NDELAY, 0)
|
handle, err := syscall.Open(portName, syscall.O_RDWR|syscall.O_NOCTTY|syscall.O_NDELAY, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -36,7 +36,9 @@ func ExampleCommunication() {
|
|||||||
if err := port.SetDataBits(8); err != nil {
|
if err := port.SetDataBits(8); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if err := port.SetStopBits(serial.STOPBITS_ONE); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
n, err := port.Write([]byte("10,20,30\n\r"))
|
n, err := port.Write([]byte("10,20,30\n\r"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user