zhangzengfei
2024-06-13 15dc6df83a839f5913997e4e2a252a0714dc2978
osd 添加上下行
2个文件已修改
56 ■■■■■ 已修改文件
service/nvcs.go 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/osd.go 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/nvcs.go
@@ -65,6 +65,7 @@
    logger.Info("UDP server listening on port %s...", port)
    var runState string
    // 无限循环等待接收数据
    for {
        // 创建一个缓冲区来存储接收的数据
@@ -94,18 +95,24 @@
            continue
        }
        // 设置osd  格式 "1F 固 枪"
        if config.NVCSConf.OSD != "" {
            floorText := data.Elevator[0].Status.FloorName
            //if data.Elevator[0].Status.RunDir == RunStop {
            //    floorText = floorText + "停"
            //} else if data.Elevator[0].Status.RunDir == RunUp {
            //    floorText = floorText + "上"
            //} else {
            //    floorText = floorText + "下"
            //}
        // 记录电梯运行状态, 只记录上行和下行
        if data.Elevator[0].Status.RunDir == RunUp {
            runState = "上"
        } else if data.Elevator[0].Status.RunDir == RunDown {
            runState = "下"
        }
            floorText = floorText + " " + config.NVCSConf.OSD
        // 已到最下层
        if data.Elevator[0].Status.Floor == 0 {
            runState = "上"
        }
        if data.Elevator[0].Status.Floor == data.Elevator[0].Status.TotalFloors {
            runState = "下"
        }
        // 设置osd  格式 "1F上 固 枪"
        if config.NVCSConf.OSD != "" {
            floorText := fmt.Sprintf("%s%s %s", data.Elevator[0].Status.FloorName, runState, config.NVCSConf.OSD)
            // 调用hik api 将文字添加到osd的左下角
            AddFloorToOSD(floorText)
service/osd.go
@@ -16,6 +16,8 @@
    CameraWebPassword     = "a1234567"
)
var overlayText TextOverlay
type TextOverlay struct {
    Id               int64  `xml:"id"`
    Enabled          bool   `xml:"enabled"`
@@ -28,22 +30,25 @@
func AddFloorToOSD(osdText string) {
    overlay7Url := CameraWebAddr + HikISAPIOverlaySetUrl
    rsp, err := ISAPIRequest(CameraWebUser, CameraWebPassword, "GET", overlay7Url, "")
    if err != nil {
        logger.Warn("Get osd info failure")
        return
    }
    var overlayText TextOverlay
    err = xml.Unmarshal(rsp, &overlayText)
    if err != nil {
        logger.Warn("%s", err.Error())
        return
    // 获取左下角第一个字符的位置
    if overlayText.DisplayText == "" {
        rsp, err := ISAPIRequest(CameraWebUser, CameraWebPassword, "GET", overlay7Url, "")
        if err != nil {
            logger.Warn("Get osd info failure")
            return
        }
        err = xml.Unmarshal(rsp, &overlayText)
        if err != nil {
            logger.Warn("%s", err.Error())
            return
        }
    }
    overlayText.DisplayText = osdText
    body, _ := xml.Marshal(overlayText)
    _, err = ISAPIRequest(CameraWebUser, CameraWebPassword, "PUT", overlay7Url, string(body))
    _, err := ISAPIRequest(CameraWebUser, CameraWebPassword, "PUT", overlay7Url, string(body))
    if err != nil {
        logger.Warn("Camera osd set failure!!")
        return