From 7a19301f6972e0b81490e57200a634e4e3731a4c Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期四, 17 十月 2024 01:42:23 +0800 Subject: [PATCH] 完善rfid读取楼层 --- service/nvcs.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 49 insertions(+), 10 deletions(-) diff --git a/service/nvcs.go b/service/nvcs.go index d7579ce..848ebcd 100644 --- a/service/nvcs.go +++ b/service/nvcs.go @@ -2,6 +2,7 @@ import ( "bytes" + "context" "encoding/binary" "encoding/hex" "encoding/json" @@ -73,6 +74,7 @@ ) var ElevatorRunState int +var ElevatorRunFloor string var RunningCorrectTaskId string func A1CorrectFloor() { @@ -185,7 +187,28 @@ 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 { // 鍒涘缓涓�涓紦鍐插尯鏉ュ瓨鍌ㄦ帴鏀剁殑鏁版嵁 @@ -239,27 +262,38 @@ } // 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"), } @@ -364,6 +398,9 @@ iRunState = RunDown } + ElevatorRunState = iRunState + ElevatorRunFloor = req.State.Floor + //// 宸插埌鏈�涓嬪眰 //if req.State.Floor == A2BottomFloor { // runState = "涓�" @@ -430,6 +467,8 @@ } iRunState = req.Status + ElevatorRunState = req.Status + ElevatorRunFloor = fmt.Sprintf("%dF", req.Floor) logger.Debug("Received A2 report data %+v", req) // 璁板綍鐢垫杩愯鐘舵�� -- Gitblit v1.8.0