| | |
| | | |
| | | import ( |
| | | "bytes" |
| | | "context" |
| | | "encoding/binary" |
| | | "encoding/hex" |
| | | "encoding/json" |
| | |
| | | ) |
| | | |
| | | var ElevatorRunState int |
| | | var ElevatorRunFloor string |
| | | var RunningCorrectTaskId string |
| | | |
| | | func A1CorrectFloor() { |
| | |
| | | |
| | | logger.Info("UDP server listening on port %s...", port) |
| | | |
| | | rfidReader := rfid.NewReader(config.RFIDConf.DevName, 115200, 5) |
| | | if config.RFIDConf.ReadFloor { |
| | | defer rfidReader.CloseSerial() |
| | | |
| | | err := rfidReader.OpenSerial() |
| | | if err != nil { |
| | | logger.Error("open rfid. %s", err.Error()) |
| | | return |
| | | } |
| | | |
| | | ctx, _ := context.WithCancel(context.Background()) |
| | | |
| | | go func() { |
| | | err := rfidReader.ReadEPCData(ctx) |
| | | if err != nil { |
| | | logger.Error("rfid read. %s", err.Error()) |
| | | } |
| | | }() |
| | | } |
| | | |
| | | var lastFloor int |
| | | var lastSaveTime int64 |
| | | // 无限循环等待接收数据 |
| | | for { |
| | | // 创建一个缓冲区来存储接收的数据 |
| | |
| | | } |
| | | |
| | | // correct floor when elevator stopped. |
| | | if elevator.Status.RunDir == 0 { |
| | | go A1CorrectFloor() |
| | | } else { |
| | | RunningCorrectTaskId = "" |
| | | if lastFloor == elevator.Status.Floor { |
| | | continue |
| | | } |
| | | //if elevator.Status.RunDir == 0 { |
| | | // go A1CorrectFloor() |
| | | //} else { |
| | | // RunningCorrectTaskId = "" |
| | | //} |
| | | |
| | | if lastFloor == elevator.Status.Floor && (time.Now().Unix()-lastSaveTime < 2) { |
| | | continue |
| | | } |
| | | lastFloor = elevator.Status.Floor |
| | | lastSaveTime = time.Now().Unix() |
| | | |
| | | // 程序部署在设备端, 字符叠加器上报的名称允许为空. 在云端, 名称必须与摄像机相同 |
| | | if elevator.Name == "" { |
| | | elevator.Name = "1" |
| | | } |
| | | |
| | | lastFloor = elevator.Status.Floor |
| | | ElevatorRunState = elevator.Status.RunDir |
| | | ElevatorRunFloor = elevator.Status.FloorName |
| | | if config.RFIDConf.ReadFloor && rfidReader.EPCData != "" { |
| | | ElevatorRunFloor, _ = rfid.Parse2Floor(rfidReader.EPCData) |
| | | |
| | | if ElevatorRunFloor != elevator.Status.FloorName { |
| | | logger.Warn("rfid epc %s, nvcs floor %s", ElevatorRunFloor, elevator.Status.FloorName) |
| | | } |
| | | } |
| | | |
| | | go func() { |
| | | var d = models.Positions{ |
| | | DeviceId: elevator.Name, |
| | | Pos: elevator.Status.FloorName, |
| | | RunDir: elevator.Status.RunDir, |
| | | Pos: ElevatorRunFloor, |
| | | RunDir: ElevatorRunState, |
| | | CreateTime: time.Now().Unix(), |
| | | TimeString: time.Now().Format("2006-01-02 15:04:05"), |
| | | } |
| | |
| | | iRunState = RunDown |
| | | } |
| | | |
| | | ElevatorRunState = iRunState |
| | | ElevatorRunFloor = req.State.Floor |
| | | |
| | | //// 已到最下层 |
| | | //if req.State.Floor == A2BottomFloor { |
| | | // runState = "上" |
| | |
| | | } |
| | | |
| | | iRunState = req.Status |
| | | ElevatorRunState = req.Status |
| | | ElevatorRunFloor = fmt.Sprintf("%dF", req.Floor) |
| | | logger.Debug("Received A2 report data %+v", req) |
| | | |
| | | // 记录电梯运行状态 |