package main import ( "encoding/json" "log" "os" ) type VariableTemplate struct{ Index int `json:"index"` //变量偏移量 Name string `json:"name"` //变量名 Lable string `json:"lable"` //变量标签 Value interface{} `json:"value"` //变量值 TimeStamp string `json:"timestamp"` //变量时间戳 Type string `json:"type"` //变量类型 } type DeviceNodeInterface interface { //获取设备变量 GetDeviceRealVariables(deviceAddr string) int //设置设备变量 SetDeviceRealVariables(deviceAddr string) int } //设备模板 type DeviceNodeTemplate struct{ Index int `json:"Index"` //设备偏移量 Addr string `json:"Addr"` //设备地址 Type string `json:"Type"` //设备类型 LastCommRTC string `json:"LastCommRTC"` //最后一次通信时间戳 CommTotalCnt int `json:"CommTotalCnt"` //通信总次数 CommSuccessCnt int `json:"CommSuccessCnt"` //通信成功次数 CommStatus string `json:"CommStatus"` //通信状态 VariableMap []VariableTemplate `json:"-"` //变量列表 } //接口模板 type DeviceInterfaceTemplate struct{ InterfaceID int `json:"InterfaceID"` //通信接口 PollPeriod int `json:"PollPeriod"` //采集周期 OfflinePeriod int `json:"OfflinePeriod"` //离线超时周期 DeviceNodeCnt int `json:"DeviceNodeCnt"` //设备数量 DeviceNodeMap []DeviceNodeInterface `json:"DeviceNodeMap"` //节点表 DeviceNodeAddrMap []string `json:"DeviceAddrMap"` //节点地址 DeviceNodeTypeMap []string `json:"DeviceTypeMap"` //节点类型 } //配置参数 type DeviceInterfaceParamTemplate struct{ InterfaceID int `json:"InterfaceID"` //通信接口 PollPeriod int `json:"PollPeriod"` //采集周期 OfflinePeriod int `json:"OfflinePeriod"` //离线超时周期 DeviceNodeCnt int `json:"DeviceNodeCnt"` //设备数量 DeviceNodeAddrMap []string `json:"DeviceAddrMap"` //节点地址 DeviceNodeTypeMap []string `json:"DeviceTypeMap"` //节点类型 } //配置参数 type DeviceInterfaceParamMapTemplate struct { DeviceInterfaceParam [MaxDeviceInterfaceManage]DeviceInterfaceParamTemplate } const ( MaxDeviceInterfaceManage int = 2 InterFaceID0 int = 0 InterFaceID1 int = 1 InterFaceID2 int = 2 InterFaceID3 int = 3 InterFaceID4 int = 4 InterFaceID5 int = 5 InterFaceID6 int = 6 InterFaceID7 int = 7 MaxDeviceNodeCnt int = 50 ) var DeviceInterfaceMap [MaxDeviceInterfaceManage]*DeviceInterfaceTemplate var DeviceInterfaceParamMap DeviceInterfaceParamMapTemplate func DeviceNodeManageInit(){ if ReadDeviceInterfaceManageFromJson() == true{ log.Println("read interface json ok") for k,v := range DeviceInterfaceParamMap.DeviceInterfaceParam{ //创建接口实例 DeviceInterfaceMap[k] = NewDeviceInterface(k, v.PollPeriod, v.OfflinePeriod, v.DeviceNodeCnt) DeviceInterfaceMap[k].DeviceNodeAddrMap = v.DeviceNodeAddrMap DeviceInterfaceMap[k].DeviceNodeTypeMap = v.DeviceNodeTypeMap //创建设备实例 for i:=0;i