1

Arduinoサーバーに接続してボタンを押すとソケットを送信するAndroidアプリケーションがありますが、ボタンを押すとすぐに少し待ってから「接続がタイムアウトしました」とスローされます。Arduinoが機能することは知っています。ブラウザで試してみましたが、大丈夫でした。アプリケーションがアクセスできないのはなぜですか?

Androidコード:

Button.OnClickListener buttonConnectOnClickListener = new Button.OnClickListener() {
    public void onClick(View v) {
        Log.i(Tag,"connecting to Server");
        try {
            Log.i(Tag,"Enters try");
            socket = new Socket("161.53.168.112", 8888);
            Log.i(Tag,"stvorio socket");
            dataOutputStream = new DataOutputStream(socket.getOutputStream());//and stream

            Log.i(Tag,"Writing 1 on socket.");
            dataOutputStream.writeBytes("1");
        }
        catch (UnknownHostException e) {
            Log.i(Tag,e.toString());
        }
        catch (IOException e) {
            Log.i(Tag,e.toString());
        }
        catch (Exception e) {
            Log.e(Tag, e.toString());

そして、これがArduinoで使用されているコードです。とてもシンプルなので、何が悪かったのかわかりません。間違いがどこにあるかを見たかったので、私は多くのログを使用しました。私はArduinoをサーバーとして使用し、それに何かを投稿しています。Webブラウザーで161.53.168.112:8888と入力すると、それが検出されてリクエストを送信できますが、Androidスマートフォンは、アプリではなくブラウザーを使用しても何も取得しません。サーバーにアクセスできません。サーバーまたはAndroidでいくつかの権限が不足している可能性がありますか?

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x36, 0xFF };
byte ip[] = { 161, 53, 168, 114 };
int serverPort = 8888;

#define kitchenLight = 9;

Server server(serverPort);

void setup()
{
    Serial.begin(9600);
    Ethernet.begin(mac, ip, gateway, subnet);
    pinMode(kitchenLight,OUTPUT);
    server.begin();
}

void loop()
{
    Client client = server.available();
    if(client)
    {
        while(client.connected()) {
            if(client.available()) {
                char c = client.read();
                appMessage += c;
                if (c == '\n')
                {
                    Serial.println("Message from Client: "+appMessage);

                    if(appMessage.IndexOf("kitchenLight1") != -1)
                    {
                        digitalWrite(kitchenLight,HIGH);
                    }
                }
            }
        }
    }
    client.close();
}
4

1 に答える 1

0

Arduino と Android を接続した後、Arduino がコマンドを受信する準備が整うまでに 1 ~ 2 秒 (多くの場合 2 秒) の遅延を追加する必要があります。お役に立てれば :)

于 2012-05-12T20:06:43.800 に答える