2016-11-29 16 views
1

アクセスポイントとして設定されているESP8266チップ間に単純な整数を送信する必要があります。TCPソケットを使用してAndroidデバイスからESP8266 Wi-Fiチップにデータを送信

は、私はすでに、この質問を読ん: Sending data to ESP8266 Wi-Fi chip from Android device

しかしESP8266のみ、ATコマンドを使用して制御されているので、私は、受信したデータを送信するためにTCPソケットを使用する方法を理解していません。

誰かが詳細な説明をしていただけますか?アプリから

コードスニペット:

  Socket client; 

      String ip = "192.111.1.1"; 
      int port = 80; 
      int connectTimeout = 20; 
      String message = "Test123"; 

      try{ 
       client = new Socket(); 
       client.connect(new InetSocketAddress(ip, port), connectTimeout); 

       DataOutputStream DataOut = new DataOutputStream(client.getOutputStream()); 
       DataOut.writeBytes(message); 
       DataOut.flush(); 

       client.close(); 

      } catch(UnknownHostException e) { 
       e.printStackTrace(); 
      } catch(IOException e) { 
       e.printStackTrace(); 
      } 
+0

ソケットは常に同じ方法で使用します。サーバーとクライアントが必要です。 – greenapps

+0

しかし、私はATコマンドでそれをどうやってやるのですか? – Nightmare

+0

あなたはあなたが望むことができるサーバーを作る場合。 ATなし。 – greenapps

答えて

1

あなたはソケットを使用したりすべきではないが、それはデバイスが通信しているかに依存します。ソケット、つまりBerkeley Socketsは、いくつかのOSIレイヤ(IEEE 802プロトコル、IP、ICMP、TCP、UDPなど)で多数のプロトコルをサポートする強力なコンピュータの抽象です。

Googleから、ESP8266はArduinoの小さな拡張ボードであるようです。 Arduinoには、少なくとも実装済みのソケットは実装されていません。一般に、小型のデバイスは、ソケットの代わりにTCP/IPの独自の実装を使用する傾向があります。これは、実装があまりにも一般的で実装が難しいためです。 Arduinoには多くのwifi/ethernet/bluetooth対応ボードがあり、誰も実際には1つのlibでそれらをサポートするつもりはありません。

あなたの場合、マイクロコントローラはATコマンドでESP8266と通信します。これがあなたの唯一の選択肢です。あなたのマイクロコントローラ上のATコマンドで作業し、リモートマシン上で利用可能なものを操作してください。それがコンピュータの場合は、そこにソケットを使用することができます。単なるArduino + ESP8266の場合は、ATコマンドを再度使用してください。

おそらく既にESP8266用にTCPが実装されているため、作業が大幅に簡素化される可能性があります。それ以外の場合は、ネットワークに2つのデバイスしかない場合は、レイヤ2(IPとTCPなしの純粋なWi-Fi)通信もOKです。

+0

それでは、TCPソケットを正しく実装するにはどうすればよいのですか?私のアプリケーションの設定方法はソケットを接続しようとすると常にクラッシュします。 – Nightmare

+0

アプリがクラッシュした場合、例外やエラをキャッチしませんでした。だからあなたのアプリを頑強にし始めましょう。 – greenapps

+0

私は試してキャッチしている。コードスニペットを提供します。 – Nightmare

関連する問題