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)
|
}
|
}
|
}
|