私はクワッドローターとマブリンクを使ったプロジェクトに取り組んでいます。Ubuntu PC に mavproxy を正常にインストールし、ターミナルから問題なく実行しました。ターミナルから実行mavproxy.py
し、mavlink (APM オートパイロット) をサポートするクワッドローターを接続すると、mavproxy がクワッドローターを検出し、すべて問題ありません。
ターミナルでプログラムを実行するmavproxy.py
と、いくつかのパラメーターの送受信が開始されます。端末にパラメーターを書き込んで、任意の構成にアクセスできます。たとえばhelp
、ターミナルで次のコマンドを実行します。
$ mavlink.py
.
.data beging
.
STABILIZE> "when the program finish the configuration, allowed to you for doing an input any parameter, for example help"
STABILIZE>help
show all helps.
mavlink.py
C++から実行するコードがあります
include <iostream>
include <stdio.h>
using namespace std;
int main() {
FILE *in;
char buff[512];
if(!(in = popen("mavlink.py", "r"))){
return 1;
}
while(fgets(buff, sizeof(buff), in)!=NULL){
cout << buff;
}
pclose(in);
return 0;
}
この C++ プログラムを実行すると、ターミナルから実行した場合と同じものがターミナルに表示されますが、C++ コードmavproxy.py
などでコマンドを送信する方法がわかりません。help
プログラムを読むと、このステートメントにより、プログラムと端末でwhile
生成されたパラメーターをキャプチャできますが、端末出口で何かを書き込むか+を押すまで終了しないため、ループは終了しません。mavproxy.py
cout
mavlink.py
CTRLCwhile
Popen 関数について読んでいましたが、これを行うための正しい形式が見つかりませんでした。
mavlink.h
プログラムでライブラリを使用してパラメーターをクアッドローターに送信できることはわかっていますが、 mavlink.h
.