We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QiValueの型の中でもバイナリ型("Raw")に関して
QiValue
QiValue.SetValue(byte[] data)
等を使ってもSetValueの反応が特に無かったりGetRawで意味のある結果が得られなかったりする。バイナリデータが扱えないとALVideoDeviceでのカメラ画像取得などに支障が出るのを確認済み。
SetValue
GetRaw
ALVideoDevice
C言語API側の実装が未対応らしく、実装部分を見てもreturn 0;しか無いのが現状。
return 0;
下記のいずれかを検討中
libqi-capi
qi.dll
The text was updated successfully, but these errors were encountered:
下記のようにしてC言語APIであるqic.dllを修正することでバイナリデータの入出力に対応した。
qic.dll
VS 2013 Community上でlibqi-capiのビルドが通るようにする
#Python 2.7系がインストール済みという前提 pip install qibuild qisrc init http://github.com/aldebaran/manifest.git qitoolchain create --feed-name win32-vs2013 --branch master altoolchain git://github.com/aldebaran/toolchains.git qibuild config --wizard #ウィザードでは下記の操作を行う # - Generator/IDEをVS2013 Communityに変更 # - デフォルトツールチェインを上で作ったaltoolchainに変更 #コード変更1 qibuild configure --release libqi-capi #コード2 qibuild make libqi-capi
configureかmakeの時点でエラーで通らない段階があるハズなので、その場合は(不健全だが)libqiに関するエラーをよく読み、通ってない単体テストをコメントアウトとかで潰す
configure
make
libqi
ここが変更の主体。libqi-capiの未実装関数を次のように実装する。
//# RAW int qi_value_raw_set(qi_value_t* value, const char* data, int size){ qi::AnyValue &gv = qi_value_cpp(value); if (gv.kind() != qi::TypeKind_Raw) { return 0; } try { gv.setRaw(data, size); return 1; } catch (std::runtime_error &) {} return 0; } int qi_value_raw_get(qi_value_t* value, const char**data, int *size) { qi::AnyValue &gv = qi_value_cpp(value); if (gv.kind() != qi::TypeKind_Raw) { return 0; } try { std::pair<char*, size_t> res = gv.asRaw(); *data = res.first; *size = res.second; return 1; } catch (std::runtime_error &) {} *data = 0; *size = -1; return 0; }
これでビルドするとバイナリデータの入出力がC言語APIからも拾えるようになった。
Sorry, something went wrong.
No branches or pull requests
QiValueの実体がバイナリデータの場合にデータIOが出来ない問題
概要
QiValue
の型の中でもバイナリ型("Raw")に関してQiValue.SetValue(byte[] data)
等を使っても
SetValue
の反応が特に無かったりGetRaw
で意味のある結果が得られなかったりする。バイナリデータが扱えないとALVideoDevice
でのカメラ画像取得などに支障が出るのを確認済み。原因
C言語API側の実装が未対応らしく、実装部分を見ても
return 0;
しか無いのが現状。対策指針
下記のいずれかを検討中
libqi-capi
の追記してPR飛ばすqi.dll
をロードして対応するThe text was updated successfully, but these errors were encountered: