| | |
| | | |
| | | // 存储数据到缓存中 |
| | | func (c *simpleCache) store(data elevatorRunData) { |
| | | var floorChanged = true |
| | | |
| | | // 取RFID楼层 |
| | | if config.RFIDConf.ReadFloor && gRFIDFloor != data.Floor { |
| | | if data.RunState == RunStop { |
| | | logger.Warn("A floor error has occurred rfid epc %s, nvcs floor %s", gRFIDFloor, data.Floor) |
| | |
| | | lastData := c.data.Back() |
| | | |
| | | // 如果楼层相同,并且数据在1秒内,则忽略 |
| | | if lastData != nil && lastData.Value.(elevatorRunData).Timestamp == data.Timestamp { |
| | | if lastData != nil { |
| | | if lastData.Value.(elevatorRunData).Floor == data.Floor { |
| | | return |
| | | floorChanged = false |
| | | if lastData.Value.(elevatorRunData).Timestamp == data.Timestamp { |
| | | return |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 数据库保存一份 |
| | | go func() { |
| | | var d = models.Positions{ |
| | | DeviceId: data.Device, |
| | | Pos: data.Floor, |
| | | RunDir: data.RunState, |
| | | CreateTime: time.Now().Unix(), |
| | | TimeString: time.Now().Format("2006-01-02 15:04:05"), |
| | | } |
| | | c.data.PushBack(data) |
| | | |
| | | err := d.Save() |
| | | if err != nil { |
| | | logger.Warn("Device position update error:%s", err.Error()) |
| | | } |
| | | }() |
| | | if !floorChanged { |
| | | return |
| | | } |
| | | |
| | | // 数据库保存一份 |
| | | var d = models.Positions{ |
| | | DeviceId: data.Device, |
| | | Pos: data.Floor, |
| | | RunDir: data.RunState, |
| | | CreateTime: time.Now().Unix(), |
| | | TimeString: time.Now().Format("2006-01-02 15:04:05"), |
| | | } |
| | | |
| | | err := d.Save() |
| | | if err != nil { |
| | | logger.Warn("Device position update error:%s", err.Error()) |
| | | } |
| | | |
| | | // 写OSD |
| | | var runStateStr string |
| | |
| | | floorText := fmt.Sprintf("%s%s %s", data.Floor, runStateStr, config.NVCSConf.OSD) |
| | | |
| | | // 调用hik api 将文字添加到osd的左下角 |
| | | go addFloorToOSD(floorText) |
| | | addFloorToOSD(floorText) |
| | | } |
| | | |
| | | c.data.PushBack(data) |
| | | } |
| | | |
| | | // 删除过期数据 |
| | |
| | | } |
| | | } |
| | | |
| | | if overlayText.DisplayText == osdText { |
| | | return |
| | | } |
| | | |
| | | overlayText.DisplayText = osdText |
| | | body, _ := xml.Marshal(overlayText) |
| | | _, err := hikISAPIRequest(cameraWebUser, cameraWebPassword, "PUT", overlay7Url, string(body)) |