add yunhorn_xsy_c_v1 of worker

This commit is contained in:
kk 2019-02-20 15:57:31 +08:00
parent b8b5e16eb1
commit a5fed18d8b
3 changed files with 56 additions and 0 deletions

View File

@ -70,6 +70,7 @@
},
"devices_list": [
["EC13C2D9-6A93-4894-BB5B-89BDAA786D8A", "port3", "yunhorn_kgl_c8_v1", "1"],
["15394892-E8B0-4FF2-BC35-1BF380BD1B68", "port2", "yunhorn_xsy_c_v1", "1"],
["52A79B3D-D9D9-48AF-AEB4-7D456BA22B31", "port1", "yunhorn_db_c_v1", "1"],
["607E11C4-8986-4F8E-807E-FFA655A6F677", "port1", "yunhorn_sb_c_v1", "1"],
["066BB944-AFA2-4E5D-86FA-61D9080A97BB", "port2", "yunhorn_kq_c_v1", "1"],
@ -106,6 +107,13 @@
}
},
"rs485devices": {
"15394892-E8B0-4FF2-BC35-1BF380BD1B68": {
"version": "yunhorn_xsy_c_v1",
"num": "1",
"command": [
[8, 3, 0, 1, 0, 2, 149, 82]
]
},
"EC13C2D9-6A93-4894-BB5B-89BDAA786D8A": {
"version": "yunhorn_kgl_c8_v1",
"num": "1",

View File

@ -68,6 +68,8 @@ func run_port_device(port *serial.Port, the_same_port_devices [][]string) {
yunhorn_kgl_c8_v1(port, i[0], conf.RS485DEVICES[i[0]].COMMAND, conf.RS485DEVICES[i[0]].NUM)
case "yunhorn_kgl_c16_v1":
yunhorn_kgl_c16_v1(port, i[0], conf.RS485DEVICES[i[0]].COMMAND, conf.RS485DEVICES[i[0]].NUM)
case "yunhorn_xsy_c_v1":
yunhorn_xsy_c_v1(port, i[0], conf.RS485DEVICES[i[0]].COMMAND, conf.RS485DEVICES[i[0]].NUM)
}
}
}

View File

@ -60,6 +60,52 @@ func yunhorn_sb_c_v1(s *serial.Port, device_id string, command [][]byte, num str
}
}
func yunhorn_xsy_c_v1(s *serial.Port, device_id string, command [][]byte, num string) {
_, err = s.Write([]byte(command[0]))
check(err)
if conf.DEBUG {
log.Printf("命令:\t%x", []byte(command[0]))
}
buf := make([]byte, 128)
b_buf := make([]byte, 0)
var nn int
for {
n, err := s.Read(buf)
nn = n + nn
b_buf = append(b_buf, buf[:n]...)
if err != nil {
break
}
}
if nn != 9 {
return
}
data_buf := b_buf[3 : nn-4]
DEVICEDATAS.RLock()
var olddata = DEVICEDATAS.DATA["yunhorn_xsy_c_v1_"+num]
DEVICEDATAS.RUnlock()
var device Device
device.Lock()
device.ID = device_id
device.VERSION = "yunhorn_xsy_c_v1"
device.ONLINE = true
device.DATA = make(map[string]interface{})
device.DATA["data"] = binary.BigEndian.Uint16(data_buf)
device.Unlock()
DEVICEDATAS.Lock()
DEVICEDATAS.DATA["yunhorn_xsy_c_v1_"+num] = device
DEVICEDATAS.Unlock()
if device.DATA["data"] != olddata.DATA["data"] {
send_data(1005, device)
}
if conf.DEBUG {
log.Println(device)
}
}
func yunhorn_db_c_v1(s *serial.Port, device_id string, command [][]byte, num string) {
_, err = s.Write([]byte(command[0]))
check(err)