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) }) } }
测试输出:
qq:505645074
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律