我使用以太网屏蔽在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
}
}
}
而我的安卓代码是:
Socket s = new Socket("192.168.0.177",23);
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
if (s.isConnected()){
out.println("connectn");
BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = r.readLine();
}
我的Android应用程序总是在readLine();
时崩溃。如果我使用out.print ("change");
,changeLedState真的会发生,所以我知道我可以从我的Android应用程序中读取输出字符串,但我还没有设法从Arduino读取到Android的输入字符串。我该怎么修?
尝试将indexOf("connect") > 0
更改为indexOf("connect") >= 0
。
或者更好的方法是,使用类似startsWith
(返回布尔值)的东西,而不是indexOf
,如果这是你真正的意思的话。