1

WebSocket を使用して、とcanvasという ID を持つ2 つの異なる es に送信する必要があるデータのパケットを受信して​​います。これらのes にはグラフが描かれており、定期的に新しいデータでグラフを更新したいと考えています。ただし、データを正しい要素に送信する関数を呼び出すと、コンソールに、データが1 回、1 回送信され、その後、データは更新のためにのみ送信されることが示されます。これが私のコードです:magnitude1magnitude2canvasmagnitude1magnitude2magnitude1

dataCollector.onmessage = function(evt)
{
        console.log("onmessage is being called");
        var realData = new Float32Array(evt.data); //data is expected in the format [nodeID,(256 floats)]
        setInterval(function(){readMagPacket(realData);},1000);
}

function readMagPacket(theGoods)
{
    var nodeID = theGoods[0];
    console.log("The node ID is " + nodeID);
    var magnitude = new Array();
    for(var i = 1; i < theGoods.length; i++)
    {
            magnitude[i-1] = theGoods[i];
    }

   console.log("The length of packet " + nodeID + " is " + magnitude.length);

   graphMagnitude(magnitude,nodeY,freqRange);

   Mag(magnitude,nodeID,freqRange);
}

function Mag(magnitude,index,freqRange)
{
    console.log("Mag is called");

    var magPlot = new RGraph.Bar('magnitude'+index,magnitude);

    magPlot.Set('labels',freqRange);
    magPlot.Set('gutter.left',100);
    magPlot.Set('gutter.bottom',40);
    magPlot.Set('ymax',.01);
    magPlot.Set('ymin',0);
    magPlot.Set('backgroun.grid',true);
    magPlot.Set('numyticks',2);
    magPlot.Set('title','Magnitude of Channel ' + index);
    magPlot.Set('title.yaxis','Magnitude (dB)');
    magPlot.Set('title.xaxis','Frequency (MHz)');
    magPlot.Set('title.xaxis.pos',.2);
    magPlot.Set('title.yaxis.pos',.5);
    magPlot.Set('background.color','white');
    magPlot.Set('colors',['green']);
    magPlot.Set('hmargin',.00001);

    magPlot.Draw();
}

詳細: ソケットを介してパケットをフロートとして取得し、に格納したいと考えていますrealDatanodeIDこれを、パケットの最初の数字である を残りのデータから分離する関数に渡したいと思います。これを使用してcanvas、データの送信先を決定します。行では、 asvar magPlot = new RGraph.Bar('magnitude'+index,magnitude);を渡します。と言うコンストラクタの部分は、グラフを作成したいのを決定する必要があります。これがエラーの場所だと思います。、、およびを組み合わせて両方のグラフを更新できるようにしたいのですが、更新のみのようです。何が起こっているのかを確認するためにコンソールを見たところ、すべてのパケットが最初に送信され、次に送信されたことがわかりました。nodeIDindex'magnitude' + indexidcanvassetIntervalreadMagPacketMagmagnitude1readMagPacket後から呼ばれました。理想的には、readMagPacket通過する各パケットで呼び出されることを望みます。それを実現するためにコードを修正する方法はありますか?

4

1 に答える 1