zhangzengfei
2024-06-13 df794921a35a231eba9ee61eafb68d5c1cbc7043
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)