zhangzengfei
2024-05-18 90ebf117a7e1ccf630361fe0f66289563b1eeb25
service/nvcs.go
@@ -7,6 +7,7 @@
   "io/ioutil"
   "net"
   "strings"
   "time"
   "gat1400Exchange/config"
   "gat1400Exchange/models"
@@ -36,7 +37,7 @@
}
// 对接网络视频字符叠加器,接收udp发送的楼层信息, 更新device地址
func NVCSServer() {
func NVCSA1UDPServer() {
   // 指定监听的端口
   port := config.ServeConf.Port
@@ -75,12 +76,12 @@
      decodedBytes, err := ioutil.ReadAll(reader)
      var data ElevatorData
      // Unmarshal JSON into the struct
      err = json.Unmarshal(decodedBytes, &data)
      if err != nil {
         logger.Warn("ElevatorData unmarshal error:%s", err.Error())
         continue
      }
      logger.Debug("Received %d bytes from %s, %+v", numBytes, clientAddr, data)
      if len(data.Elevator) == 0 {
         continue
@@ -91,24 +92,31 @@
      }
      elevator := data.Elevator[0]
      elevator.Name = strings.Trim(elevator.Name, " ")
      if elevator.Name == "" {
         continue
      // 程序部署在设备端, 字符叠加器上报的名称允许为空. 在云端, 名称必须与摄像机相同
      if config.ServeConf.Role != "agent" {
         elevator.Name = strings.Trim(elevator.Name, " ")
         if elevator.Name == "" {
            continue
         }
      }
      var d = models.Device{
         Id:    elevator.Name,
         Floor: elevator.Status.FloorName,
         Ip:    elevator.IP,
      var d = models.Positions{
         DeviceId:   elevator.Name,
         Pos:        elevator.Status.FloorName,
         CreateTime: time.Now().Unix(),
         TimeString: time.Now().Format("2006-01-02 15:04:05"),
      }
      err = d.Upsert()
      err = d.Save()
      if err != nil {
         logger.Warn("Device db update error:%s", err.Error())
         logger.Warn("Device position update error:%s", err.Error())
      }
   }
}
      deviceAliveCache.Add(elevator.Name, true)
      logger.Debug("Received %d bytes from %s, %+v", numBytes, clientAddr, data)
func StartNVCSServer() {
   if config.NVCSConf.Model == "A1" {
      go NVCSA1UDPServer()
   }
}