UnixサーバーからPureDataへのTCP/IP通信に興味があります。Unixサーバー側でソケットを使用し、PureData側でnetclientを使用することを実現しました。このためにチャットサーバーのチュートリアルを利用しました(3.ネットワーキング> 10.chat_client.pd)。
ここで問題となるのは、サーバーが「;」で区切られた「文字列」メッセージとしてデータをストリーミングしていることです。
私の質問は、バイトストリームやシリアル化された番号ストリームなど、文字列メッセージ以外のものをPure Dataに送信する方法はありますか?Pure Dataはそのようなメッセージを受信できますか?
文字列の転送にはバイト数が多すぎるため、たとえば数値「1024;」はすでに5バイトですが、そのような整数は4バイトです。
更新:答えを探してこの投稿に出くわしたすべての人のために。
どうやら、PureData側の[netclient]は;以外のものを受け取ることはできません。区切られたメッセージ。したがって、上記で提起された問題の解決策: 私の質問は、バイトストリームやシリアル化された番号ストリームなど、文字列メッセージ以外のものをPureDataに送信する方法はありますか?Pure Dataはそのようなメッセージを受信できますか?
解決策は[tcpclient]を使用することで、バイトストリームデータを受信できます。
さて、私の質問は、4つのコンパクトな数値をどのように使用できるかということです。 これで、少なくとも正しい順序で一連のバイトができました。
UNIXサーバーから構造を送信しています
typedef struct {
int var_code;
int sample_time;
int hr;
float hs;
} phy_data;
サンプルデータは21000000512000.56である可能性があります
Pure Dataで受信して印刷すると、次のような出力が得られます。
:0 0 0 2 0 10114 26 0 0 0 51 0 16242 78
2番と51番がはっきりとわかりますが、他も正しいと思います。
これらの数値を使用可能な形式に戻すにはどうすればよいですか? [bytes2any]と[route]を使った操作かもしれませんが、それを使ってデータを抽出できませんでしたか?