golang OpcUaClient

实现功能

复制代码
package main

import (
    "fmt"
    "log"
    "opcuaclient/util/plugin/client/opcclient"
    "os"
    "os/signal"
    "syscall"
)

func main() {
    OPCUATest()

    // 监听操作系统信号,阻塞直到接收到信号
    quit := make(chan os.Signal, 1)
    signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
    <-quit
}

func OPCUATest() {
    endpoint := "opc.tcp://127.0.0.1:49320" // KepServer
    username := "admin"
    password := "123456"
    nodeID := "ns=2;s=Channel1.Device1.400101"

    // 创建 OPC UA 客户端
    opcClient, err := opcclient.NewOpcUaClient("Anonymous", endpoint, username, password) // Anonymous | Account
    if err != nil {
        log.Fatalf("Error creating client: %v", err)
    }
    defer opcClient.Close()

    // 连接到服务器
    if err := opcClient.Connect(); err != nil {
        fmt.Println("连接失败", err)
    } else {
        fmt.Println("连接成功")

        // 写入值
        nodeValue := uint16(333)
        opcClient.WriteNodeValue(nodeID, nodeValue)

        // 读取值
        status, value := opcClient.ReadNodeValue(nodeID)
        if status {
            fmt.Println("读取单个节点:", nodeID, value)
        }

        // 订阅节点
        opcClient.NodeIDs = append(opcClient.NodeIDs, "ns=2;s=Channel1.Device1.400101")
        opcClient.NodeIDs = append(opcClient.NodeIDs, "ns=2;s=Channel1.Device1.400102")
        opcClient.NodeIDs = append(opcClient.NodeIDs, "ns=2;s=Channel1.Device1.400103")
        opcClient.BatchNodeIdDatasSubscription(opcClient.NodeIDs, func(uaTag string, uaValueStr string) {
            log.Printf("DataChange %v = %v", uaTag, uaValueStr)
        })
    }
}
复制代码

测试输出:

 

posted @   CHHC  阅读(15)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示