modbus

package
v1.5.5 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FuncCodeReadCoils                  = 1
	FuncCodeReadDiscreteInputs         = 2
	FuncCodeReadHoldingRegisters       = 3
	FuncCodeReadInputRegisters         = 4
	FuncCodeWriteSingleCoil            = 5
	FuncCodeWriteSingleRegister        = 6
	FuncCodeWriteMultipleCoils         = 15
	FuncCodeWriteMultipleRegisters     = 16
	FuncCodeReadWriteMultipleRegisters = 23
	FuncCodeMaskWriteRegister          = 22
	FuncCodeReadFIFOQueue              = 24
)
View Source
const (
	ParityNone = "N"
	ParityOdd  = "O"
	ParityEven = "E" // default
)
View Source
const (
	BaudRate300    = 300
	BaudRate600    = 600
	BaudRate1200   = 1200
	BaudRate2400   = 2400
	BaudRate4800   = 4800
	BaudRate9600   = 9600 // default
	BaudRate14400  = 14400
	BaudRate19200  = 19200
	BaudRate38400  = 38400
	BaudRate56000  = 56000
	BaudRate57600  = 57600
	BaudRate115200 = 115200
	BaudRate128000 = 128000
	BaudRate153600 = 153600
	BaudRate230400 = 230400
	BaudRate256000 = 256000
	BaudRate460800 = 460800
	BaudRate921600 = 921600
)
View Source
const (
	DataBits5 = 5
	DataBits6 = 6
	DataBits7 = 7
	DataBits8 = 8 // default
)
View Source
const (
	StopBits1 = 1 // default
	StopBits2 = 2
)

Variables

View Source
var (
	ErrIllegalFunction    = errors.New("illegal function")
	ErrIllegalDataAddress = errors.New("illegal data address")
)

Functions

func DefaultSerialConfig

func DefaultSerialConfig() serial.Config

func FuncCodeText

func FuncCodeText(code int) string

FuncCodeText returns the text representation of a Modbus function code.

Types

type Context

type Context struct {
	ProtocolMessage *ProtocolMessage

	Coils            *coilStorage
	DiscreteInputs   *coilStorage
	HoldingRegisters *registerStorage
	InputRegisters   *registerStorage
	// contains filtered or unexported fields
}

func (*Context) GetBoolSlice

func (c *Context) GetBoolSlice() []bool

func (*Context) GetUint16Slice

func (c *Context) GetUint16Slice() []uint16

func (*Context) Response

func (c *Context) Response(values interface{}, err error) error

type HandlerFunc

type HandlerFunc func(c *Context)

type Packager

type Packager interface {
	Encode(message ProtocolMessage) (bs []byte, err error)
	Decode(bs []byte) (message ProtocolMessage, err error)
}

type ProtocolMessage

type ProtocolMessage struct {
	TransactionIdentifier uint16 `json:"transactionIdentifier"` // tcp: transaction identifier
	ProtocolIdentifier    uint16 `json:"protocolIdentifier"`    // tcp: protocol identifier
	Length                uint16 `json:"length"`                // tcp: length of the following data
	UnitIdentifier        byte   `json:"unitIdentifier"`        // tcp: unit identifier
	SlaveId               byte   `json:"slaveId"`               // slave address
	FunctionCode          byte   `json:"functionCode"`          // function code
	Address               uint16 `json:"address"`               // start address
	Quantity              uint16 `json:"quantity"`              // quantity
	ValueLength           byte   `json:"valueLength"`           // value length
	Values                []byte `json:"values"`                // value bytes
	ErrorCode             byte   `json:"errorCode"`             // error code
	// contains filtered or unexported fields
}

type RTUServerHandler

type RTUServerHandler struct {
	// contains filtered or unexported fields
}

func NewRTUServerHandler

func NewRTUServerHandler(config *serial.Config) *RTUServerHandler

func (*RTUServerHandler) CheckSum

func (r *RTUServerHandler) CheckSum(bs []byte) bool

func (*RTUServerHandler) Close

func (r *RTUServerHandler) Close() error

func (*RTUServerHandler) Connect

func (r *RTUServerHandler) Connect() error

func (*RTUServerHandler) Decode

func (r *RTUServerHandler) Decode(bs []byte) (message ProtocolMessage, err error)

func (*RTUServerHandler) Encode

func (r *RTUServerHandler) Encode(message ProtocolMessage) (bs []byte, err error)

func (*RTUServerHandler) HandleFunc

func (r *RTUServerHandler) HandleFunc(handler func(message *ProtocolMessage))

func (*RTUServerHandler) Listen

func (r *RTUServerHandler) Listen() error

func (*RTUServerHandler) Read

func (r *RTUServerHandler) Read(p []byte) (n int, err error)

func (*RTUServerHandler) Send

func (r *RTUServerHandler) Send(message *ProtocolMessage) error

func (*RTUServerHandler) Write

func (r *RTUServerHandler) Write(p []byte) (n int, err error)

type ServerHandler

type ServerHandler interface {
	Listen() error
	Close() error
	HandleFunc(func(message *ProtocolMessage))
	Send(message *ProtocolMessage) error
}

type Slave

type Slave struct {
	// contains filtered or unexported fields
}

func NewSlave

func NewSlave(handler ServerHandler) *Slave

func (*Slave) Close

func (s *Slave) Close() error

func (*Slave) HandleFuncCode

func (s *Slave) HandleFuncCode(code int, f HandlerFunc)

func (*Slave) Listen

func (s *Slave) Listen() error

type Transporter

type Transporter interface {
	io.ReadWriter
	Connect() error
	Close() error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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