У меня есть приложение, которое разговаривает с аппаратным устройством через последовательный порт. Это устройство отправляет объект json каждые 30 мс. Этот объект json является устройством, "заявляющим" свой контроллер движения.
В основном сообщения выглядят так:
{"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}}
Я получаю эти 1x каждые 30 мс. Я должен разобрать их. Затем «нарисуйте» их на графический интерфейс JavaFX.
Вот как я разбираю:
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);
}
Так что в основном я создаю работающий объект каждые 30 мс, затем анализирую и рисую. Это лучший способ сделать это? Вы можете посмотреть видео в действии:
http://www.youtube.com/watch?v=dhBB3QcmHOg&feature=youtu.be
Но, похоже, это "отрывистый" и довольно жадный ресурс. Я надеюсь, что кто-нибудь даст мне предложения о том, как оптимизировать этот код? Возможно, укажите на то, чего мне не хватает?
Как FYI, плата контроллера движения, которую мы создаем, называется TinyG. Аппаратное обеспечение с открытым исходным кодом.
Больше информации здесь:
http://www.synthetos.com/wiki/index.php?title=Projects:TinyG
Прошивка здесь:
https://github.com/synthetos/TinyG
Спасибо!