|
|
|
|
@ -141,6 +141,12 @@ type DeviceStatus struct {
|
|
|
|
|
|
|
|
|
|
// 实时监控数据
|
|
|
|
|
func getDeviceStatus2(rpc towgo.JsonRpcConnection) {
|
|
|
|
|
// 临时演示模式:原串口读取实现已保留在 getDeviceStatus2Real。
|
|
|
|
|
// getDeviceStatus2Real(rpc)
|
|
|
|
|
rpc.WriteResult(buildDemoDeviceStatus2())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func getDeviceStatus2Real(rpc towgo.JsonRpcConnection) {
|
|
|
|
|
cuid, _ := getDeviceId(rpc)
|
|
|
|
|
|
|
|
|
|
read, err := m9z.DeviceStatusRead(cuid)
|
|
|
|
|
@ -193,6 +199,53 @@ func getDeviceStatus2(rpc towgo.JsonRpcConnection) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func buildDemoDeviceStatus2() *DeviceStatus {
|
|
|
|
|
const loopCount = 10
|
|
|
|
|
d := &DeviceStatus{
|
|
|
|
|
ScanDeviceCount: loopCount,
|
|
|
|
|
Loops: make([]DeviceStatusLoop, loopCount),
|
|
|
|
|
}
|
|
|
|
|
d.Mode = 0
|
|
|
|
|
d.DeviceTime = time.Now().UTC()
|
|
|
|
|
for i := 0; i < loopCount; i++ {
|
|
|
|
|
relayOpen := i%2 == 0
|
|
|
|
|
pwm := uint8(35 + i*5)
|
|
|
|
|
d.Relays[i] = relayOpen
|
|
|
|
|
d.PWMOutputs[i] = pwm
|
|
|
|
|
|
|
|
|
|
loop := DeviceStatusLoop{
|
|
|
|
|
Loop: m9z.Loop{
|
|
|
|
|
Index: i,
|
|
|
|
|
Name: fmt.Sprintf("#%d", i+1),
|
|
|
|
|
IsOpen: relayOpen,
|
|
|
|
|
Pwm: int(pwm),
|
|
|
|
|
},
|
|
|
|
|
V: float32(218 + i*3),
|
|
|
|
|
A: float32(0.32 + float64(i)*0.08),
|
|
|
|
|
}
|
|
|
|
|
kw := float64(loop.V*loop.A) / 1000
|
|
|
|
|
loop.Kw = float32(math.Round(kw*1000) / 1000)
|
|
|
|
|
|
|
|
|
|
switch i {
|
|
|
|
|
case 0:
|
|
|
|
|
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x01, "01 00")
|
|
|
|
|
case 1:
|
|
|
|
|
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x02, "02 00")
|
|
|
|
|
case 6:
|
|
|
|
|
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x04, "04 03")
|
|
|
|
|
case 8:
|
|
|
|
|
loop.Faults = m9z.BuildLoopFaults(uint(i+1), 0x03, "03 00")
|
|
|
|
|
}
|
|
|
|
|
loop.HasFault = len(loop.Faults) > 0
|
|
|
|
|
loop.FaultMsg = joinLoopFaultMessages(loop.Faults)
|
|
|
|
|
loop.FaultCode = joinLoopFaultCodes(loop.Faults)
|
|
|
|
|
d.Loops[i] = loop
|
|
|
|
|
}
|
|
|
|
|
d.Optocoupler[0] = true
|
|
|
|
|
d.Optocoupler[3] = true
|
|
|
|
|
return d
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func joinLoopFaultMessages(faults []m9z.LoopFault) string {
|
|
|
|
|
messages := make([]string, 0, len(faults))
|
|
|
|
|
for _, fault := range faults {
|
|
|
|
|
|