I am using the OPC foundation SDK subscription feature.Like the following code:
UATcpParam param = new UATcpParam();
param.setUrl("opc.tcp://*********:48420");
param.setAuthentication(0);
param.setSecurityMode(MessageSecurityMode.None);
String rsReturn = "HELLO";
NodeId[] nodes = new NodeId[1];
nodes[0] = new NodeId(2,"HSM_FM.TN_M_010_456NI");
CreateSubscriptionRequest req = new CreateSubscriptionRequest();
req.setRequestedPublishingInterval(250D);
SessionChannel sessionChannel= OpcTcpClientUtil.getSession(param);
CreateSubscriptionResponse cr = sessionChannel.CreateSubscription(req);
UnsignedInteger subid= cr.getSubscriptionId();
rsReturn = subid.toString();
CreateMonitoredItemsRequest retq = new CreateMonitoredItemsRequest();
retq.setSubscriptionId(subid);
ReadValueId readValueId = new ReadValueId(nodes[0],Attributes.Value,null,null);
MonitoringParameters monitoringParameters = new MonitoringParameters();
monitoringParameters.setClientHandle(subid.add(1));
monitoringParameters.setDiscardOldest(true);
monitoringParameters.setQueueSize(UnsignedInteger.valueOf(10));
monitoringParameters.setSamplingInterval(250D);
MonitoredItemCreateRequest mrs = new MonitoredItemCreateRequest(readValueId,MonitoringMode.Reporting,monitoringParameters);
CreateMonitoredItemsResponse crp = sessionChannel.CreateMonitoredItems(null,subid,TimestampsToReturn.Both,mrs);
But I found that I couldn't add a callback function