package modbusx
|
|
import (
|
"apsClient/model/common"
|
)
|
|
func ReadByRTU(c *common.RTUConfig, address uint16, quantity uint16) (data []byte, err error) {
|
cli := getModbusRTUConnection(c)
|
data, err = cli.ReadHoldingRegisters(address, quantity)
|
dealRTUErr(err, c.SerialName)
|
if err != nil {
|
cli = getModbusRTUConnection(c)
|
data, err = cli.ReadHoldingRegisters(address, quantity)
|
dealRTUErr(err, c.SerialName)
|
}
|
return
|
}
|
|
func WriteByRTU(c *common.RTUConfig, address uint16, value int) (err error) {
|
var bytesVal []byte
|
bytesVal = intToBytes(value)
|
cli := getModbusRTUConnection(c)
|
_, err = cli.WriteMultipleRegisters(address, uint16(len(bytesVal)), bytesVal)
|
dealRTUErr(err, c.SerialName)
|
if err != nil {
|
cli = getModbusRTUConnection(c)
|
_, err = cli.WriteMultipleRegisters(address, uint16(len(bytesVal)), bytesVal)
|
dealRTUErr(err, c.SerialName)
|
}
|
return err
|
}
|
|
func dealRTUErr(err error, serialName string) {
|
if err != nil {
|
unsetModbusRTUConnection(serialName) //失败则删除缓存的连接
|
}
|
}
|