ZBLOG

请给出使用UA_Client_readValueAttribute_async读取数据的客户端案例

以下是一个使用ua-client-sdk库中的UA_Client_readValueAttribute_async函数读取数据的简单客户端案例:

  1. #include <open62541/client_highlevel_async.h>
  2. #include <open62541/plugin/log_stdout.h>
  3. int main(void) {
  4. UA_Client* client = UA_Client_new();
  5. UA_ClientConfig_setDefault(UA_Client_getConfig(client));
  6. // 连接到OPC UA服务器
  7. UA_StatusCode status = UA_Client_connect(client, "opc.tcp://localhost:4840");
  8. if(status != UA_STATUSCODE_GOOD) {
  9. printf("无法连接到服务器\n");
  10. return -1;
  11. }
  12. // 创建请求结构体
  13. UA_ReadRequest request;
  14. UA_ReadRequest_init(&request);
  15. // 设置要读取的节点信息
  16. request.nodesToRead = UA_ReadValueId_new();
  17. request.nodesToReadSize = 1;
  18. // 设置节点ID和属性ID(这里以Node ID为"ns=2;i=1234",属性为Value)
  19. request.nodesToRead[0].nodeId = UA_NODEID_NUMERIC(2, 1234);
  20. request.nodesToRead[0].attributeId = UA_ATTRIBUTEID_VALUE;
  21. // 发送异步读取请求
  22. UA_UInt32 requestId;
  23. status = UA_Client_readValueAttributeAsync(client, &request, &requestId);
  24. if (status != UA_STATUSCODE_GOOD) {
  25. printf("异步读取请求发送失败\n");
  26. return -1;
  27. }
  28. // 等待响应结果
  29. UA_DataValue* value;
  30. status = UA_Client_waitForResponse(client, requestId, &value);
  31. if (status != UA_STATUSCODE_GOOD || !value) {
  32. printf("未能获取响应结果\n");
  33. return -1;
  34. }
  35. // 输出读取结果
  36. if (value->hasValue) {
  37. UA_String valueString = UA_STRING_NULL;
  38. UA_Variant_toScalar(&value->value, &valueString);
  39. printf("读取到的数据:%.*s\n", (int)valueString.length, valueString.data);
  40. }
  41. // 释放资源
  42. UA_DataValue_deleteMembers(value);
  43. UA_ReadRequest_deleteMembers(&request);
  44. UA_Client_disconnect(client);
  45. UA_Client_delete(client);
  46. return 0;
  47. }

请注意,这只是一个简单的示例代码,具体使用方法可能因实际情况而有所不同。在实际使用时,请根据OPC UA服务器的地址和节点信息进行适当修改。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=15897

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?