gh-5 Register data structure
Created preliminary struct for register data, create hreg slice based on registers.csv
This commit is contained in:
parent
76d7dd424d
commit
9f2d4b0c29
|
@ -21,6 +21,24 @@ type pingvinCoil struct {
|
||||||
Reserved bool `json:"reserved"`
|
Reserved bool `json:"reserved"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unit modbus data
|
||||||
|
type PingvinKL struct {
|
||||||
|
Coils []pingvinCoil
|
||||||
|
Registers []pingvinRegister
|
||||||
|
buslock *sync.Mutex
|
||||||
|
}
|
||||||
|
|
||||||
|
// single register data
|
||||||
|
type pingvinRegister struct {
|
||||||
|
Address int `json:"address"`
|
||||||
|
Symbol string `json:"symbol"`
|
||||||
|
Value_signed int16 `json:"value_signed"`
|
||||||
|
Value_unsigned uint16 `json:"value_unsigned"`
|
||||||
|
Signed bool `json:"signed"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Reserved bool `json:"reserved"`
|
||||||
|
}
|
||||||
|
|
||||||
func newCoil(address string, symbol string, description string) pingvinCoil {
|
func newCoil(address string, symbol string, description string) pingvinCoil {
|
||||||
addr, err := strconv.Atoi(address)
|
addr, err := strconv.Atoi(address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -31,10 +49,14 @@ func newCoil(address string, symbol string, description string) pingvinCoil {
|
||||||
return coil
|
return coil
|
||||||
}
|
}
|
||||||
|
|
||||||
// unit modbus data
|
func newRegister(address string, symbol string, signed bool, description string) pingvinRegister {
|
||||||
type PingvinKL struct {
|
addr, err := strconv.Atoi(address)
|
||||||
Coils []pingvinCoil
|
if err != nil {
|
||||||
buslock *sync.Mutex
|
log.Fatal("newRegister: Atio: ")
|
||||||
|
}
|
||||||
|
reserved := symbol == "Reserved" && description == "Reserved"
|
||||||
|
register := pingvinRegister{addr, symbol, 0, 0, signed, description, reserved}
|
||||||
|
return register
|
||||||
}
|
}
|
||||||
|
|
||||||
// read a CSV file containing data for coils or registers
|
// read a CSV file containing data for coils or registers
|
||||||
|
@ -70,7 +92,7 @@ func (p PingvinKL) getHandler() *modbus.RTUClientHandler {
|
||||||
return handler
|
return handler
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p PingvinKL) Update() {
|
func (p PingvinKL) updateCoils() {
|
||||||
handler := p.getHandler()
|
handler := p.getHandler()
|
||||||
p.buslock.Lock()
|
p.buslock.Lock()
|
||||||
err := handler.Connect()
|
err := handler.Connect()
|
||||||
|
@ -103,6 +125,10 @@ func (p PingvinKL) Update() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p PingvinKL) Update() {
|
||||||
|
p.updateCoils()
|
||||||
|
}
|
||||||
|
|
||||||
func (p PingvinKL) ReadCoil(n uint16) []byte {
|
func (p PingvinKL) ReadCoil(n uint16) []byte {
|
||||||
handler := p.getHandler()
|
handler := p.getHandler()
|
||||||
p.buslock.Lock()
|
p.buslock.Lock()
|
||||||
|
@ -125,9 +151,17 @@ func (p PingvinKL) ReadCoil(n uint16) []byte {
|
||||||
func New() PingvinKL {
|
func New() PingvinKL {
|
||||||
pingvin := PingvinKL{}
|
pingvin := PingvinKL{}
|
||||||
pingvin.buslock = &sync.Mutex{}
|
pingvin.buslock = &sync.Mutex{}
|
||||||
|
log.Println("Parsing coil data...")
|
||||||
coilData := readCsvLines("coils.csv")
|
coilData := readCsvLines("coils.csv")
|
||||||
for i := 0; i < len(coilData); i++ {
|
for i := 0; i < len(coilData); i++ {
|
||||||
pingvin.Coils = append(pingvin.Coils, newCoil(coilData[i][0], coilData[i][1], coilData[i][2]))
|
pingvin.Coils = append(pingvin.Coils, newCoil(coilData[i][0], coilData[i][1], coilData[i][2]))
|
||||||
}
|
}
|
||||||
|
log.Println("Parsing register data...")
|
||||||
|
registerData := readCsvLines("registers.csv")
|
||||||
|
for i := 0; i < len(registerData); i++ {
|
||||||
|
signed := registerData[i][2] == "int16"
|
||||||
|
pingvin.Registers = append(pingvin.Registers,
|
||||||
|
newRegister(registerData[i][0], registerData[i][1], signed, registerData[i][6]))
|
||||||
|
}
|
||||||
return pingvin
|
return pingvin
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue