Чтобы визуализировать данные, поступающие с датчика, в режиме реального времени, я создал скрипт Python 2.7, который отображает данные, поступающие с частотой 50 Гц, используя Mayavi.Сценарий запускает два потока: поток сбора данных, который непрерывно собирает данные (Xdata
, Ydata
, Zdata
), и поток построения графиков, который наносит данные на график.
Создание графика настраивается с помощью:
@mlab.animate(delay=animation_delay)
def make_graph():
while True:
dataX=acquisitionThread.Xdata
dataY=-1*acquisitionThread.Ydata
dataZ=acquisitionThread.Zdata
obj.mlab_source.u=dataX.flatten()
obj.mlab_source.v=dataY.flatten()
obj.mlab_source.w=dataZ.flatten()
yield
make_graph()
mlab.show()
Теперь, когда я запускаю свой скрипт из IDE, которую я использую (Spyder 2.7), анимация плавная, но когда я запускаю скрипт из bash, используя ...
python ./animationScript.py
... частота кадров значительно падает, и взаимодействие с графиком (вращение графика и т. д.) становится очень громоздким.
В заключение я хотел бы включить анимацию в приложение Qt и вызывать ее, используя:
char* args[]={"python","/path/to/fieldAnimation.py"};
pid_t pid;
pid=fork();
if(pid==0)
execvp(args[0],args);
Однако запуск такого скрипта также приводит к очень медленной частоте кадров анимации.