继电器、读卡器,都用统一的modbus协议

This commit is contained in:
2024-12-12 10:30:21 +08:00
parent 25cb34f6f5
commit df9dbb0926
15 changed files with 142 additions and 127 deletions

View File

@@ -8,12 +8,12 @@ import (
)
// RelayMaster 继电器中间件
func RelayMaster(r *relay.Device) leaf.HandlerFunc {
func RelayMaster(r relay.Relay) leaf.HandlerFunc {
return func(c *leaf.Context) {
pm := leaf.Value[*schema.PlayModal](c, PayloadJSONKey)
if r != nil && pm.Power {
r.On(1)
defer r.Off(1)
r.On(0)
defer r.Off(0)
zap.S().Infoln("开启电源")
defer zap.S().Infoln("关闭电源")

View File

@@ -31,10 +31,10 @@ func PushCard(ctx context.Context) leaf.HandlerFunc {
g := (game.G).(game.ConfigPush)
// 开始初始化读卡器
reader, err := card_reader.NewReader(g.ReadURL)
reader, err := card_reader.NewReader(g.ReadAddr)
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
zap.S().Errorf("读卡器串口文件不存在: %s", g.ReadURL)
zap.S().Errorf("读卡器串口文件不存在: %s", g.ReadAddr)
os.Exit(1)
}
zap.S().Panicf("读卡器串口连接失败 [%T]: %q", err, err)
@@ -48,7 +48,7 @@ func PushCard(ctx context.Context) leaf.HandlerFunc {
devices := make([]*card_pusher.Device, 0)
for i, group := range g.PushGroups {
// 对读卡器初始化配置
reader.SetUnitID(uint8(i + 1))
reader.SetSlave(uint8(i + 1))
err = reader.Init()
if err != nil {
zap.S().Panicln("读卡器初始配置失败", err)
@@ -114,7 +114,7 @@ func PushCard(ctx context.Context) leaf.HandlerFunc {
if body.num != 0 {
// 若卡片就位,读取卡片信息
if devices[body.num-1].GetOutOk() == 1 {
reader.SetUnitID(uint8(body.num))
reader.SetSlave(uint8(body.num))
if info := reader.GetCardInfo(); info != nil {
body.CardId = info.ID
}

View File

@@ -20,10 +20,10 @@ import (
func WaitCard(ctx context.Context) leaf.HandlerFunc {
g := (game.G).(game.ConfigWait)
reader, err := card_reader.NewReader(g.URL)
reader, err := card_reader.NewReader(g.Addr)
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
zap.S().Errorf("读卡器串口文件不存在: %s", g.URL)
zap.S().Errorf("读卡器串口文件不存在: %s", g.Addr)
os.Exit(1)
}
zap.S().Panicf("读卡器串口连接失败 [%T]: %q", err, err)

View File

@@ -177,12 +177,12 @@ func relayAction(c *leaf.Context, item schema.WaitItemModel, root schema.TimeMod
defer cancel()
}
device, err := relay.New(item.Data, nil)
r, err := relay.New(item.Data)
if err != nil {
zap.S().Errorln("继电器初始化异常: ", err)
return
}
defer device.Close()
defer r.Close()
select {
case <-c.Done():
@@ -191,9 +191,9 @@ func relayAction(c *leaf.Context, item schema.WaitItemModel, root schema.TimeMod
zap.S().Infoln("待机继电器供电")
defer zap.S().Infoln("待机继电器断电")
device.On(1)
r.On(0)
<-c.Done()
device.Off(1)
r.Off(0)
}
}
}

View File

@@ -10,6 +10,7 @@ import (
"game-driver/internal/schema"
"game-driver/leaf"
"game-driver/logger"
"game-driver/pkg/relay"
"game-driver/pkg/tts"
"game-driver/pkg/utils"
"github.com/eclipse/paho.golang/autopaho"
@@ -108,13 +109,11 @@ func Run() {
tts.DefaultTTS = tts.New(ctx, config.C.Aliyun)
// 构建继电器对象
//r, err := relay.New(config.C.Relay, func(msg string) {
// zap.S().Infoln("串口返回: ", msg)
//})
//if err != nil {
// zap.S().Panicln("串口连接异常: ", err)
//}
//defer r.Close()
r, err := relay.New(config.C.Relay)
if err != nil {
zap.S().Panicln("串口连接异常: ", err)
}
defer r.Close()
// 构建全局设备变量
device := common.DefaultDevice(ctx, publishTopic)