package nvcs import ( "context" "time" "gat1400Exchange/config" "gat1400Exchange/pkg/logger" "gat1400Exchange/rfid" ) var gRFIDFloor string func readRFID(ctx context.Context) { rfidReader := rfid.NewReader(config.RFIDConf.DevName, 115200, 5) defer rfidReader.CloseSerial() err := rfidReader.OpenSerial() if err != nil { logger.Error("open rfid. %s", err.Error()) return } go func() { err := rfidReader.ReadEPCData(ctx) if err != nil { logger.Error("rfid read. %s", err.Error()) } }() for { select { case <-ctx.Done(): return default: if rfidReader.Alive { floor, _ := rfid.Parse2Floor(rfidReader.EPCData) if floor != gRFIDFloor { gRFIDFloor = floor logger.Debug("rfid read epc floor %s", gRFIDFloor) var runState = ElevatorRunData{ Device: "rfid-reader", Timestamp: time.Now().Unix(), Floor: floor, RunState: 0, } cacheData := cache.data.Back() if cacheData != nil { runState.RunState = cacheData.Value.(ElevatorRunData).RunState } queue.put(runState) } } else { logger.Error("rfid read esp timeout!!") gRFIDFloor = "" } time.Sleep(200 * time.Millisecond) } } }