0

我正在编写一个 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;
     }
 }

如果您需要更多代码来回答这个问题,请告诉我。

4

1 回答 1

0

要简单地更改按钮的背景颜色:

            String state = sb.toString().trim();
            ((Button) v).setText(state);
            if(state.contains("On")){
                v.setBackgroundColor(Color.DKGRAY);
            }
            else
            {
                v.setBackgroundColor(Color.MAGENTA);                    
            }
于 2012-07-28T00:54:46.197 回答