在Python OPC UA库(python-opcua)版本0.98.13中,要创建一个订阅,并打印获取的数据
时间: 2024-09-11 21:02:09 浏览: 88
opcua-asyncio:适用于python> 3.6 asyncio的OPC UA库
在Python的OPC UA库(python-opcua)中,如果你想要创建一个订阅并打印接收到的数据,你需要遵循以下步骤:
首先,确保已经安装了`python-opcua`库,如果没有,可以使用pip安装:
```bash
pip install python-opcua
```
然后,你可以通过以下代码示例来创建一个订阅并接收数据:
```python
import opcua
# 创建opcua客户端连接
client = opcua.Client("opc.tcp://your_server_address:4840/")
# 如果需要,登录到服务器
if client.connect():
print(f"Connected to {client.server_info.ServerName}")
# 导航到你要订阅的节点(例如,一个变量或数据流)
node_to_sub = client.get_node("ns=2;i=1") # 用实际的节点路径替换这里的节点ID
# 创建订阅
subscription = client.create_subscription(500) # 设置更新周期,单位毫秒
subscription_data_change_notification_handler = opcua.DataChangeNotificationHandler()
# 定义事件处理函数,这里只是一个基础示例,将接收到的数据打印出来
def handle_datachange_notification(datachange_notification):
for changed_item in datachange_notification.data_changes:
if changed_item.is.changed:
print(f"{changed_item.node.NodeId} has changed: {changed_item.new_value.Value}")
# 添加事件处理器
subscription_data_change_notification_handler.notification += handle_datachange_notification
# 开始订阅
subscription.start()
try:
# 这里阻塞程序直到用户主动停止订阅
input("Press enter to stop the subscription")
except KeyboardInterrupt:
pass
# 停止订阅
subscription.unsubscribe()
subscription.delete_session()
# 关闭连接
client.disconnect()
else:
print("Failed to connect.")
```
在这个例子中,你需要替换`"opc.tcp://your_server_address:4840/"`为你实际的OPC UA服务器地址,并提供正确的节点ID(ns=2;i=1)以订阅。运行此脚本,你会看到接收到的数据变化。
阅读全文