From bc0b7e914a378b2c40f9d2ec2470b61a19c18288 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 11 八月 2023 17:05:02 +0800 Subject: [PATCH] 修改上报的数据结构, 添加plc查询接口 --- collector/device.go | 41 ++++++++++++++++++++++++++++++++++++----- 1 files changed, 36 insertions(+), 5 deletions(-) diff --git a/collector/device.go b/collector/device.go index 9812adc..9de3d33 100644 --- a/collector/device.go +++ b/collector/device.go @@ -10,7 +10,8 @@ ) func getDeviceList() ([]msg.PLCDevice, error) { - responseBody, err := util.HttpPost(config.Options.ApsDeviceWebApi, nil) + token, _ := util.CreateToken() + responseBody, err := util.HttpPost(config.Options.DeviceListWebApi, nil, token) if err != nil { logger.Warn("get device list from aps error:%s", err.Error()) return nil, err @@ -32,16 +33,16 @@ func HandleDeviceUpdate(message []byte) error { var device msg.PLCDevice + logger.Debug("receive device update msg: %s", string(message)) + err := json.Unmarshal(message, &device) if err != nil { logger.Error("unmarshal device update msg error:%s", err.Error()) return err } - if task, ok := mapTask.Load(device.DeviceID); ok { - // 瀛樺湪鐨勪换鍔�, 鍏堝仠姝㈡帀, 鐒跺悗閲嶆柊寮�鍚竴涓� - task.(collectorProc).cancel() - } + // 鍏堝仠鎺夋鍦ㄦ墽琛岀殑浠诲姟 + stopTask(&device) // 鍒ゆ柇鏄惁鏄噸鏂板惎鍔ㄧ殑鐘舵��, 鍚姩涓�涓柊鐨勪换鍔� if device.Status == 0 { @@ -50,3 +51,33 @@ return nil } + +func HandleDeviceReadRequest(device *msg.PLCDevice) *msg.PLCResponse { + procCache, ok := tasksStore.Load(device.DeviceID) + if ok { + if procCache.(*collectorProc).device.DeviceIP == device.DeviceIP { + return plc4xRequest(procCache.(*collectorProc)) + } + } + + plcConnection, err := NewModbusConnection(device.DeviceIP) + if err != nil { + logger.Warn("error connecting to PLC: %s, ip: %s", device.DeviceName, device.DeviceIP) + + // 涓婃姤璁惧绂荤嚎 + return &msg.PLCResponse{ + DeviceID: device.DeviceID, + DeviceName: device.DeviceName, + DeviceIP: device.DeviceIP, + Online: false, + } + } + + proc := collectorProc{ + device: device, + cancel: nil, + plcConn: &plcConnection, + } + + return plc4xRequest(&proc) +} -- Gitblit v1.8.0