これは Arduino のセクションにも投稿しましたが、この問題は、おそらく Arduino の問題ではなく、nanomsg と一般的な接続に関する私の無知が原因であると考えられます。
nanomsgを使用して、Arduino を使用するポートで TCP 経由で通信するサーバーと通信しようとしています。私はさまざまな構成を試みました(さまざまなnanomsgツールを使用して、arduinoにリモート接続し、arduinoをサーバーに接続します)。
サーバーモードで(WiFiWebServerの例の非常にわずかに変更されたバージョンを実行して)Arduinoを取得して、catを使用して送信したテキストを正常に読み取ることができます
sudo cat texttosend > /dev/tcp/192.168.1.50/80
ただし、すべての構成で、nanomsg を使用して送信しようとしているテキストに関係なく、常に同じ数字の文字列を取得します。arduino からバイトを 16 進数として出力すると、0 53 50 0 0 51 0 0 になります。Nanocat (nanomsg の単純なコマンド ライン ツール) は、送信してシャットダウンする代わりにハングします (送信する前に常に接続を確認しようとしているように)。データ)。
クライアントが接続し、それらのバイトを読み取り、シャットダウンして再起動するため、これはArduinoが失敗しているある種のハンドシェイクであると想定しています。両端 (ローカル コンピューターからサーバーまで) で nanomsg を使用しても問題なく動作します。
これらの数字が握手である場合、どうすればそれを完了することができますか?
Arduinoコードのループ部分の肉は
client = server.available();
if (client) {
Serial.println("new client");
while (client.connected()) {
while (client.available()) {
byte b = client.read();
Serial.print(b,HEX);
Serial.write(b);
}
}
}
そして、接続しようとするとハングする nanocat コマンドは
nanocat --push --connect tcp://192.168.1.50:80 --data thismesadsfsdfg