zhangzengfei
2024-06-13 df794921a35a231eba9ee61eafb68d5c1cbc7043
完善A2梯控的电梯运行状态显示
1个文件已修改
67 ■■■■■ 已修改文件
service/nvcs.go 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/nvcs.go
@@ -4,7 +4,6 @@
    "bytes"
    "encoding/json"
    "fmt"
    "github.com/gin-gonic/gin"
    "io/ioutil"
    "net"
    "net/http"
@@ -13,7 +12,9 @@
    "gat1400Exchange/config"
    "gat1400Exchange/models"
    "gat1400Exchange/pkg/logger"
    "gat1400Exchange/util"
    "github.com/gin-gonic/gin"
    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)
@@ -166,14 +167,54 @@
type A2ElevatorData struct {
    Id    string `json:"id"`
    State struct {
        Floor  string `json:"Floor"`
        Status string `json:"Status"`
        TFloor int64  `json:"TFloor"`
        Floor  string  `json:"Floor"`
        Status string  `json:"Status"`
        TFloor int64   `json:"TFloor"`
        Speed  float64 `json:"Speed"`
    } `json:"State"`
}
type A2ElevatorConfig struct {
    FloorData []string `json:"floordata"`
}
var A2TopFloor string
var A2BottomFloor string
func GetA2ElevatorConfig() {
    url := "http://192.168.10.253/cgi-bin/liftnum.cgi"
    payload := []byte("{\"display\":1}")
    header := map[string]string{
        "Cookie": "eyJuYW1lIjoiYWRtaW4iLCAicGFzZCI6ImFkbWluMTIzIn0=",
    }
    rsp, err := util.HttpPost(url, header, payload)
    if err != nil {
        logger.Warn("Get A2 floor data failure,%s", err.Error())
        return
    }
    var configData A2ElevatorConfig
    err = json.Unmarshal(rsp, &configData)
    if err != nil {
        logger.Warn("Unmarshal A2 floor data failure,%s", err.Error())
        return
    }
    if len(configData.FloorData) > 0 {
        A2BottomFloor, A2TopFloor = configData.FloorData[0], configData.FloorData[len(configData.FloorData[0])-1]
    }
    logger.Info("A2 floor config total:%d, bottomFloor:%s, topFloor:%s", len(configData.FloorData), A2BottomFloor, A2TopFloor)
}
func NVCSA2WebServer() {
    // 先获取总楼层数, 记录最高层
    GetA2ElevatorConfig()
    var runState string
    r := gin.Default()
    r.POST("/", func(c *gin.Context) {
        var req A2ElevatorData
        err := c.BindJSON(&req)
@@ -184,9 +225,23 @@
        logger.Debug("Received A2 report data %+v", req)
        // 记录电梯运行状态, 只记录上行和下行
        if req.State.Speed > 0 {
            runState = "上"
        } else if req.State.Speed < 0 {
            runState = "下"
        }
        // 已到最下层
        if req.State.Floor == A2BottomFloor {
            runState = "上"
        }
        if req.State.Floor == A2TopFloor {
            runState = "下"
        }
        if config.NVCSConf.OSD != "" {
            floorText := req.State.Floor
            floorText = floorText + " " + config.NVCSConf.OSD
            floorText := fmt.Sprintf("%s%s %s", req.State.Floor, runState, config.NVCSConf.OSD)
            // 调用hik api 将文字添加到osd的左下角
            AddFloorToOSD(floorText)