Documentation ¶
Index ¶
- Constants
- Variables
- func CheckCode(data string) string
- func DecConvertToX(n, num int) (string, error)
- func HexStringToBytes(data string) []byte
- type Client
- type ClientProvider
- type Dlt645ClientProvider
- func (sf *Dlt645ClientProvider) Close() error
- func (sf *Dlt645ClientProvider) Connect() error
- func (sf Dlt645ClientProvider) Debug(format string, v ...interface{})
- func (sf Dlt645ClientProvider) Error(format string, v ...interface{})
- func (sf *Dlt645ClientProvider) IsConnected() bool
- func (sf *Dlt645ClientProvider) LogMode(enable bool)
- func (sf *Dlt645ClientProvider) Send(slaveID byte, request ProtocolDataUnit) (ProtocolDataUnit, error)
- func (sf *Dlt645ClientProvider) SendPdu(slaveID byte, pduRequest []byte) ([]byte, error)
- func (dlt *Dlt645ClientProvider) SendRawFrame(request string) (response float64, err error)
- func (sf *Dlt645ClientProvider) SetAutoReconnect(cnt byte)
- func (sf *Dlt645ClientProvider) SetLogProvider(p LogProvider)
- type Dlt645ConfigClient
- type ExceptionError
- type LogProvider
- type ProtocolDataUnit
Constants ¶
const ( AddressBroadCast = 0 AddressMin = 1 )
proto address limit
const ( // Bits ReadBitsQuantityMin = 1 // 0x0001 ReadBitsQuantityMax = 2000 // 0x07d0 WriteBitsQuantityMin = 1 // 1 WriteBitsQuantityMax = 1968 // 0x07b0 // 16 Bits ReadRegQuantityMin = 1 // 1 ReadRegQuantityMax = 125 // 0x007d WriteRegQuantityMin = 1 // 1 WriteRegQuantityMax = 123 // 0x007b ReadWriteOnReadRegQuantityMin = 1 // 1 ReadWriteOnReadRegQuantityMax = 125 // 0x007d ReadWriteOnWriteRegQuantityMin = 1 // 1 ReadWriteOnWriteRegQuantityMax = 121 // 0x0079 )
proto register limit
const ( // Bit access FuncCodeReadDiscreteInputs = 2 FuncCodeReadCoils = 1 FuncCodeWriteSingleCoil = 5 FuncCodeWriteMultipleCoils = 15 // 16-bit access FuncCodeReadInputRegisters = 4 FuncCodeReadHoldingRegisters = 3 FuncCodeWriteSingleRegister = 6 FuncCodeWriteMultipleRegisters = 16 FuncCodeReadWriteMultipleRegisters = 23 FuncCodeMaskWriteRegister = 22 FuncCodeReadFIFOQueue = 24 FuncCodeOtherReportSlaveID = 17 )
Function Code
const ( ExceptionCodeIllegalFunction = 1 ExceptionCodeIllegalDataAddress = 2 ExceptionCodeIllegalDataValue = 3 ExceptionCodeServerDeviceFailure = 4 ExceptionCodeAcknowledge = 5 ExceptionCodeServerDeviceBusy = 6 ExceptionCodeNegativeAcknowledge = 7 ExceptionCodeMemoryParityError = 8 ExceptionCodeGatewayTargetDeviceFailedToRespond = 11 )
Exception Code
const ( // SerialDefaultTimeout Serial Default timeout SerialDefaultTimeout = 1 * time.Second // SerialDefaultAutoReconnect Serial Default auto reconnect count SerialDefaultAutoReconnect = 0 )
Variables ¶
var AddressMax byte = addressMax
AddressMax proto address max limit you can change with SetSpecialAddressMax, when your device have address upon addressMax
var ErrClosedConnection = errors.New("use of closed connection")
ErrClosedConnection 连接已关闭
var ErrConnectionFailed = errors.New("create connection failed")
Functions ¶
func DecConvertToX ¶
Types ¶
type Client ¶
type Client interface { ClientProvider // ReadCoils reads from 1 to 2000 contiguous status of coils in a // remote device and returns coil status. ReadCoils(slaveID byte, address, quantity uint16) (results []byte, err error) // ReadDiscreteInputs reads from 1 to 2000 contiguous status of // discrete inputs in a remote device and returns input status. ReadDiscreteInputs(slaveID byte, address, quantity uint16) (results []byte, err error) // WriteSingleCoil write a single output to either ON or OFF in a // remote device and returns success or failed. WriteSingleCoil(slaveID byte, address uint16, isOn bool) error // WriteMultipleCoils forces each coil in a sequence of coils to either // ON or OFF in a remote device and returns success or failed. WriteMultipleCoils(slaveID byte, address, quantity uint16, value []byte) error // ReadInputRegisters reads from 1 to 125 contiguous input registers in // a remote device and returns input registers. ReadInputRegistersBytes(slaveID byte, address, quantity uint16) (results []byte, err error) // ReadInputRegisters reads from 1 to 125 contiguous input registers in // a remote device and returns input registers. ReadInputRegisters(slaveID byte, address, quantity uint16) (results []uint16, err error) // ReadHoldingRegistersBytes reads the contents of a contiguous block of // holding registers in a remote device and returns register value. ReadHoldingRegistersBytes(slaveID byte, address, quantity uint16) (results []byte, err error) // ReadHoldingRegisters reads the contents of a contiguous block of // holding registers in a remote device and returns register value. ReadHoldingRegisters(slaveID byte, address, quantity uint16) (results []uint16, err error) // WriteSingleRegister writes a single holding register in a remote // device and returns success or failed. WriteSingleRegister(slaveID byte, address, value uint16) error // WriteMultipleRegisters writes a block of contiguous registers // (1 to 123 registers) in a remote device and returns success or failed. WriteMultipleRegisters(slaveID byte, address, quantity uint16, value []byte) error // ReadWriteMultipleRegisters performs a combination of one read // operation and one write operation. It returns read registers value. ReadWriteMultipleRegistersBytes(slaveID byte, readAddress, readQuantity, writeAddress, writeQuantity uint16, value []byte) (results []byte, err error) // ReadWriteMultipleRegisters performs a combination of one read // operation and one write operation. It returns read registers value. ReadWriteMultipleRegisters(slaveID byte, readAddress, readQuantity, writeAddress, writeQuantity uint16, value []byte) (results []uint16, err error) // MaskWriteRegister modify the contents of a specified holding // register using a combination of an AND mask, an OR mask, and the // register's current contents. The function returns success or failed. MaskWriteRegister(slaveID byte, address, andMask, orMask uint16) error //ReadFIFOQueue reads the contents of a First-In-First-Out (FIFO) queue // of register in a remote device and returns FIFO value register. ReadFIFOQueue(slaveID byte, address uint16) (results []byte, err error) }
Client interface
func NewClient ¶
func NewClient(p ClientProvider) Client
NewClient creates a new dltcon client with given backend handler.
type ClientProvider ¶
type ClientProvider interface { // Connect try to connect the remote server Connect() error // IsConnected returns a bool signifying whether // the client is connected or not. IsConnected() bool // SetAutoReconnect set auto reconnect count // if cnt == 0, disable auto reconnect // if cnt > 0 ,enable auto reconnect,but max 6 SetAutoReconnect(cnt byte) // LogMode set enable or diable log output when you has set logger LogMode(enable bool) // SetLogProvider set logger provider SetLogProvider(p LogProvider) // Close disconnect the remote server Close() error // Send request to the remote server,it implements on SendRawFrame Send(slaveID byte, request ProtocolDataUnit) (ProtocolDataUnit, error) // SendPdu send pdu request to the remote server SendPdu(slaveID byte, pduRequest []byte) (pduResponse []byte, err error) // SendRawFrame send raw frame to the remote server SendRawFrame(request string) (response float64, err error) }
ClientProvider is the interface implements underlying methods.
type Dlt645ClientProvider ¶
type Dlt645ClientProvider struct {
// contains filtered or unexported fields
}
RTUClientProvider implements ClientProvider interface.
func NewClientProvider ¶
func NewClientProvider() *Dlt645ClientProvider
NewRTUClientProvider allocates and initializes a RTUClientProvider. it will use default /dev/ttyS0 19200 8 1 N and timeout 1000
func (*Dlt645ClientProvider) Close ¶
func (sf *Dlt645ClientProvider) Close() error
Close close current connection.
func (*Dlt645ClientProvider) Connect ¶
func (sf *Dlt645ClientProvider) Connect() error
Connect try to connect the remote server
func (Dlt645ClientProvider) Debug ¶
func (sf Dlt645ClientProvider) Debug(format string, v ...interface{})
Debug Log DEBUG level message.
func (Dlt645ClientProvider) Error ¶
func (sf Dlt645ClientProvider) Error(format string, v ...interface{})
Error Log ERROR level message.
func (*Dlt645ClientProvider) IsConnected ¶
func (sf *Dlt645ClientProvider) IsConnected() bool
IsConnected returns a bool signifying whether the client is connected or not.
func (*Dlt645ClientProvider) LogMode ¶
func (sf *Dlt645ClientProvider) LogMode(enable bool)
LogMode set enable or disable log output when you has set logger
func (*Dlt645ClientProvider) Send ¶
func (sf *Dlt645ClientProvider) Send(slaveID byte, request ProtocolDataUnit) (ProtocolDataUnit, error)
Send request to the remote server,it implements on SendRawFrame
func (*Dlt645ClientProvider) SendPdu ¶
func (sf *Dlt645ClientProvider) SendPdu(slaveID byte, pduRequest []byte) ([]byte, error)
SendPdu send pdu request to the remote server
func (*Dlt645ClientProvider) SendRawFrame ¶
func (dlt *Dlt645ClientProvider) SendRawFrame(request string) (response float64, err error)
SendRawFrame send Adu frame SendRawFrame发送Adu帧。
func (*Dlt645ClientProvider) SetAutoReconnect ¶
func (sf *Dlt645ClientProvider) SetAutoReconnect(cnt byte)
SetAutoReconnect set auto reconnect count if cnt == 0, disable auto reconnect if cnt > 0 ,enable auto reconnect,but max 6
func (*Dlt645ClientProvider) SetLogProvider ¶
func (sf *Dlt645ClientProvider) SetLogProvider(p LogProvider)
SetLogProvider overwrite log provider
type Dlt645ConfigClient ¶
func (*Dlt645ConfigClient) SendMessageToSerial ¶
func (dltconfig *Dlt645ConfigClient) SendMessageToSerial(dlt Client) (response float64, err error)
type ExceptionError ¶
type ExceptionError struct {
ExceptionCode byte
}
ExceptionError implements error interface.
func (*ExceptionError) Error ¶
func (e *ExceptionError) Error() string
type LogProvider ¶
type LogProvider interface { Error(format string, v ...interface{}) Debug(format string, v ...interface{}) }
LogProvider RFC5424 log message levels only Debug and Error
type ProtocolDataUnit ¶
ProtocolDataUnit (PDU) is independent of underlying communication layers.