私はシリアル経由でハードウェアデバイスと通信しているアプリケーションを持っています。このデバイスは、30msごとにjsonオブジェクトを送信しています。このjsonオブジェクトは、モーションコントローラの「状態」を表すデバイスです。高速動作のためにJavaFX2 guiを更新する最良の方法は何ですか?
基本的にメッセージは次のようになります。
{"sr":{"line":2524,"posx":1.000,"posy":21.000,"posz":20.000,"posa":11.459,"feed":0.000,"vel":0.000,"unit":1,"coor":1,"dist":0,"frmo":0,"momo":0,"stat":2}}
私はすべての30msのこれらの1xを取得します。私はそれらを解析する必要があります。次にそれらをJavaFX GUIに「描画」します。
Platform.runLater(new Runnable() {
public void run() {
//We are now back in the EventThread and can update the GUI
try {
JsonRootNode json = JDOM.parse(l);
xAxisVal.setText(json.getNode("sr").getNode("posx").getText());
yAxisVal.setText(json.getNode("sr").getNode("posy").getText());
zAxisVal.setText(json.getNode("sr").getNode("posz").getText());
aAxisVal.setText(json.getNode("sr").getNode("posa").getText());
drawLine();
} catch (argo.saj.InvalidSyntaxException ex) {
//Json line invalid.
}
}
});
をそしてここで私が使用していますドローコードです:
public void drawLine() {
xl.setX(Float.parseFloat(xAxisVal.getText()) + 400);
y1.setY(Float.parseFloat(yAxisVal.getText()) + 400);
LineTo tmpL = new LineTo((Float.parseFloat(xAxisVal.getText()) * 2) + 400, (Float.parseFloat(yAxisVal.getText()) * 2) + 400);
path.getElements().add(tmpL);
}
だから、基本的に、私は実行可能なすべての30msのは、その後の解析対象と図面を作成しています。ここ
は、私が解析しています方法です。これを行うにはこれが最善の方法ですか?
http://www.youtube.com/watch?v=dhBB3QcmHOg&feature=youtu.be
しかし、それはその「ぎくしゃく」と、かなりのリソース空腹のように思える:あなたはアクションで、それの映像を見ることができます。誰かがこのコードを最適化する方法を提案してくれることを願っています。おそらく私が紛失しているものを指摘していますか?
私たちが作っているモーションコントローラボードは、TinyGと呼ばれています。オープンソースのハードウェア
詳細情報はこちら:ここ http://www.synthetos.com/wiki/index.php?title=Projects:TinyG
ファームウェア: https://github.com/synthetos/TinyG
ありがとう!
たぶん、あなたは、NetBeansプロファイラまたはEclipseの[TPTPプラグイン](http://www.eclipse.orgであなたのアプリケーションをプロファイリングすることができます/ tptp /)、誰が資源を掘り出しているかを調べる。 –