2015-12-19 18 views
5

は、私はのような結果を参照購読 で多くの​​を監視したいと思いますパラメータを指定してからnodeidを設定すると、サブスクリプションが設定され、.on( "changed")はこれらの項目すべてに対して並列に機能します。今のコードは次のようになります。今、私はそれだけで多くの追加監視するために、新しい項目を設定したい場合はNode.jsのOPC UA多くの監視項目

var monitoredItem = the_subscription.monitor({ 
     nodeId: opcua.resolveNodeId("ns=6;s=S71500ET200MP station_1.Master.111"), 
     attributeId: 13 
    }, 
    { 
     samplingInterval: 100, 
     discardOldest: true, 
     queueSize: 10 
    }, 
    opcua.read_service.TimestampsToReturn.Both 
    ); 
    console.log("-------------------------------------"); 
    var nodes = []; 

    monitoredItem.on("changed",function(dataValue){ 
     //console.log(" value = ",dataValue.value.value); 
     //console.log(" sourceTimestamp = ",dataValue.sourceTimestamp.toISOString()); 
     //console.log(JSON.stringify(dataValue)); 
     var Node = {nodeId: "ns=6;s=S71500ET200MP station_1.Master.111", nodeName: "111" , nodeValue: dataValue.value.value , nodeTimestamp: dataValue.sourceTimestamp.toISOString()}; 
     var arrayNode = Object.keys(Node).map(function(k) { return Node[k] }); 
     //console.log(JSON.stringify(Node)); 
     nodes.push(arrayNode); 

    // console.log(nodes); 
    }); 
}, 

はMonitorItem1 varsは、..2、..3など

agile/dynamic以上でそれを行う方法方法?配列(文字列)がnodeIdsの場合、これらをそれぞれサブスクリプションで監視する必要があります。 コードasync.series([コード])の一部である

答えて

1

はasync.each方法を

async.each(nodeIdArr, function(nodeid, callback) { 

    var monitoredItem = the_subscription.monitor({ 
      nodeId: opcua.resolveNodeId(nodeid), 
      attributeId: 13 
     }, 
     { 
      samplingInterval: 100, 
      discardOldest: true, 
      queueSize: 10 
     }, 
     opcua.read_service.TimestampsToReturn.Both 
     ); 
     console.log("-------------------------------------"); 


     monitoredItem.on("changed",function(dataValue){ 
      //console.log(" value = ",dataValue.value.value); 
      //console.log(" sourceTimestamp = ",dataValue.sourceTimestamp.toISOString()); 
      //console.log(JSON.stringify(dataValue)); 
      var Node = {nodeId: nodeid, nodeName: "111" , nodeValue: dataValue.value.value , nodeTimestamp: dataValue.sourceTimestamp.toISOString()}; 
      var arrayNode = Object.keys(Node).map(function(k) { return Node[k] }); 
      //console.log(JSON.stringify(Node)); 
      nodes.push(arrayNode); 

     // console.log(nodes); 
     }); 
を用いて解か
関連する問題