-1

イーサネットシールドを使用してArduino Leonardoにサーバーを設定しました。ソケット接続を介して、正常に読み取ることができる文字列を Android アプリケーションから Arduino に送信できます。私のArduinoコードの一部は次のとおりです。

if (client.available() > 0) {
    char thisChar = client.read();
    if (readString.length() < 30){
        readString.concat(thisChar);
    }
    if (thisChar == '\n') {
        if (readString.indexOf("connect") > 0) {
            client.print("connection_ok");
        }
        if (readString.indexOf("change") >= 0) {
            changeLedState();   // Set the LED on
        }
    }
}

私のAndroidコードは次のとおりです。

Socket s = new Socket("192.168.0.177",23);
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
if (s.isConnected()){
     out.println("connect\n");
     BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream()));
     String line = r.readLine();
}

私の Android アプリケーションは常に でクラッシュしreadLine();ます。を使用するout.print ("change");と、実際に changeLedState が発生するため、Android アプリケーションから出力文字列を読み取ることができることはわかっていますが、Arduino から Android に入力文字列を読み取ることができていません。どうすれば修正できますか?

4

1 に答える 1

0

に変更indexOf("connect") > 0してみてくださいindexOf("connect") >= 0

または、それが本当に意味するものである場合のstartsWith代わりに、(ブール値を返す) のようなものを使用してください。indexOf

于 2012-07-18T17:19:36.970 に答える