2012-03-11 17 views
1

私は特定のBluetoothデバイスからデータを取得するWindowsアプリケーションであるVS2010プロジェクトを持っています。私がしたいのは、OSCを使用して取得したデータを送信する取得スレッドを変更することだけです。Windows/C++でOSCパケットを送信するにはどうすればよいですか?

LIBLOというライブラリを使用しようとしましたが、POSIXスタイルの非同期性を使用して機能するようです。私はpthreads-win32を私のために作ろうともっと多くの時間を費やしました。私はまだこのライブラリを使うことができましたが、運がまだありませんでした。

リリースに含まれているバッチファイルを使用してコンパイルできなかったOSCPACKライ​​ブラリを使用しようとしました。私は最終的にVS2010プロジェクトにライブラリを認識させることができましたが、今はリンカエラー(LNK2019とLNK2001)があります。関連するディレクトリは、プロジェクトプロパティの[追加のインクルードディレクトリ]にリストされています。私はこれが何か簡単に修正するべきであることを知っていますが、挫折の日の後に私は知恵袋の終わりにいます。私はosxでxcodeを扱うことに慣れていますので、VS2010で何かを達成するのは難しいです。リンカーに追加の指示を与える必要がありますか?

誰でも、Windows/VSと互換性のあるシンプルな、事前構築されたOSCライブラリを提案することができますか、未解決の外部で私の問題を解決する方法はありますか?

答えて

2

OSCは非常に簡単なプロトコルです。特に、OSCメッセージを送信する必要があり、着信OSCメッセージの受信(および解析)に気をつけない場合は特に注意してください。あなたができることの1つは、単にspecを読んで、examplesを見て、規定のフォーマットでバイトバッファにOSCデータを追加する独自の関数を書いてください。それは数時間の作業でしかありません。次に、UDPソケットを介してそのcharバッファを送信するだけです。これはまた、かなり簡単です。あなたのニーズに応じて、サードパーティのOSCライブラリと統合するのは簡単かもしれません(特に、Windowsでは、イライラするかもしれません)。

別の方法として、OSCPACKを別途にビルドし、結果のDLL/LIBファイルにリンクする代わりに、必要なOSCPACK .cファイルを自分のプロジェクトのソースツリーに直接コピーし、あなたの実行可能ファイルはあなた自身のコードをコンパイルするのと同じ方法です。これは、2つの異なるビルドシステムを連携させようとする際に起こり得る厄介なビルド/リンクの問題を回避します。また、OSCコードのあなたの(バスタード)コピーを完全に制御できます。 OSCPACKの特定の機能を別の方法で動作させたい場合は、その機能のコピーを変更するだけです。 (そうするならば、混乱を避けるために、コードはもはや 'ストック'ではないことを明らかにしてください...そしてもちろん、他のOSCとのプロトコルの互換性を損なうような方法でそれを変更しないでくださいソフトウェア)

+0

Btw独自のOSCメッセージジェネレータルーチンを記述する場合は、文字列の埋め込み規則に注意してください。すべてのOSC文字列には1〜4の数字が必要です。NUL/0次のフィールドはワードで位置合わせされたオフセットから開始する。それと、すべての整数値と浮動小数点値がビッグエンディアンであることを確認してください。 –

+0

ご協力いただきありがとうございます!私は最終的にoscpackをコンパイルすることに成功しましたが、パケットの書き込みを開始して実際に送信するまでの間に例外を投げかけているようです。進歩しました! – cdnza

関連する問題