ヘッダーから受信した新しいパケット メッセージごとに再描画するアニメーション ストリップ チャートを作成しています。最初に、チャートが既に存在するかどうかを確認し、存在しない場合は作成する関数を作成します。
function drawAccel() {
if (chart == null) {
chart = Stripchart(document.getElementById('accel'));
}
if (orienteer == null) {
orienteer = Orienteer(document.getElementById('orienteer'));
}
chart.draw();
orienteer.draw();
}
その後、受信したすべてのヘッダー パケットでチャートをループして再描画するこの関数を実行します。
function messagecb(header, message) {
if(header.type == 6) {
// echo reply
// processEchoReply(message);
}else if(header.type == 4) {
// accel
var accels = message.b64UnpackAccelMsg();
for(var index in accels) {
var accel = accels[index];
var totalClock = accelEpochAdjust(accel.clock);
addAccelDatum(totalClock, accel.x, accel.y, accel.z);
}
drawAccel();
} else if(header.type == 3) {
// info
var info2 = message.b64UnpackInfo2Msg();
displayCurrentPosition(info2.fixtime, info2.lat, info2.lon, info2.alt);
displayMobileStatus(info2.rssi, info2.bandClass, info2.batt);
} else if(header.type == 11) {
btReceive(header, message);
}
}
この方法を使用するすべての最新のブラウザーで問題はありませんが、IE8 では非常に遅くなります。これにより、実行速度の遅いスクリプト エラーが発生し、最終的にアプリが壊れてしまいます。また、グラフが視覚的に変化していなくても、現在のロジックが原因でチャートが再描画されていると思いますが、それを確認する方法がわかりません。長々と申し訳ありませんが、どんな助けでも大歓迎です!