簡體   English   中英

OPC UA Java-如何從訂閱publishResponse獲取MonitoredItemID

[英]OPC UA Java - How to get MonitoredItemID from a subscription publishResponse

我目前正在使用OPC UA Foundation Java Stack,而沒有任何其他SDK。

我設法實現了具有多個受監視項目的訂閱,並且通過發布響應正確獲取了更改通知。

問題是,當我在一個訂閱中有多個項目時,我無法確定哪個受監視項目負責數據更改響應。 MonitoredItemNotification似乎沒有方法嗎?! 那么,如何獲取itemId,displayname,nodeId或僅用於標識響應中項目的任何內容?

這是我得到的響應(每個項目看起來幾乎相同):

ResponseHeader=ResponseHeader
Timestamp=06/23/16 10:36:41.9018551 GMT
RequestHandle=0
ServiceResult=GOOD (0x00000000) ""
ServiceDiagnostics=Diagnostic Info: 

StringTable=class java.lang.String[0]
AdditionalHeader=null
SubscriptionId=92
AvailableSequenceNumbers=class org.opcfoundation.ua.builtintypes.UnsignedInteger[2]
[0]=1
[1]=2
MoreNotifications=false
NotificationMessage=NotificationMessage
SequenceNumber=2
PublishTime=06/23/16 10:36:41.9018551 GMT
NotificationData=class org.opcfoundation.ua.builtintypes.ExtensionObject[1]
  [0]=DataChangeNotification: DataChangeNotification
    MonitoredItems=class org.opcfoundation.ua.core.MonitoredItemNotification[1]
      [0]=MonitoredItemNotification
      ClientHandle=0
      Value=DataValue(value=true, statusCode=GOOD (0x00000000) "", sourceTimestamp=06/23/16 10:36:41.7146527 GMT, sourcePicoseconds=0, serverTimestamp=null, serverPicoseconds=0)
    DiagnosticInfos=class org.opcfoundation.ua.builtintypes.DiagnosticInfo[0]

Results=class org.opcfoundation.ua.builtintypes.StatusCode[0]
DiagnosticInfos=class org.opcfoundation.ua.builtintypes.DiagnosticInfo[0]

每個MonitoredItem應具有其自己的ClientHandle。

當您向服務器發送CreateMonitoredItems請求時,應在每個MonitoredItemCreateRequest中傳遞所需的ClientHandle。 這將在每個發布響應的MonitoredItemNotification中返回。

我猜您傳遞的值為“ 0”,這就是為什么

[0]=MonitoredItemNotification
  ClientHandle=0
  Value=DataValue(value=true, statusCode=GOOD (0x00000000) "", sourceTimestamp=06/23/16 10:36:41.7146527 GMT, sourcePicoseconds=0, serverTimestamp=null, serverPicoseconds=0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM