我正在编写一个 Android 应用程序来通过网络与我的 Arduino 进行通信。Arduino 正在通过 Ethernet shield运行 Web 服务器。我附上了我的代码,但我会在这里解释它,这样你就会明白我想要做什么。
Android 发送格式为 的 HTTP 请求http://192.168.1.148/?Lights=1
。Arduino 收到请求,执行命令(在这种情况下打开一些灯),然后通过简单地发送字符串“Lights=On”来响应 Android 设备。然后,Android 将更改按钮的颜色以通知用户该命令已成功执行。
Arduino 正在获取指令并执行它并发送响应,但我的按钮颜色没有改变。我知道 Android 设备正在获取字符串,因为我添加了一个调试行来将按钮上的文本更改为收到的响应。Android设备的相关代码为:
((Button) v).setText(sb.toString()); //This works and the button text changes to "Lights=On".
//Test response and update button
if(sb.toString()=="Lights=On"){
v.getBackground().setColorFilter(0xFFFFFF00, PorterDuff.Mode.MULTIPLY);
Drawable d = lightOff.getBackground();
lightOff.invalidateDrawable(d);
d.clearColorFilter();
}
Arduino代码是:
if(s=="Lights"){
switch(client.read()){
case '0':
digitalWrite(LightPin,0);
client.print("Lights=Off");
//debug
Serial.println("Lights=Off");
break;
case '1':
digitalWrite(LightPin,1);
client.print("Lights=On");
Serial.println("Lights=On");
break;
}
}
如果您需要更多代码来回答这个问题,请告诉我。