2012-07-27 150 views
0

我正在编写一个Android应用程序,通过网络与我的Arduino进行通信。 Arduino正通过以太网shield运行一个Web服务器。我附上我的代码,但我会在这里解释它,以便您了解我正在尝试执行的操作。获取Arduino和Android手机通过网络进行通信

Android发送格式为http://192.168.1.148/?Lights=1的HTTP请求。 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; 
    } 
} 

请让我知道如果你需要更多的代码来回答这个问题。

+0

单曲==“清香”'不会对你有什么期望。 – 2012-07-28 12:39:26

+0

如果可能的话,你可以向我发送arduino和android的代码吗?我试图在android和arduino之间共享数据,但是我只能将数据发送到arduino而不从数据中获取数据。 – 2017-03-18 00:01:45

回答

0

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

  String state = sb.toString().trim(); 
      ((Button) v).setText(state); 
      if(state.contains("On")){ 
       v.setBackgroundColor(Color.DKGRAY); 
      } 
      else 
      { 
       v.setBackgroundColor(Color.MAGENTA);      
      } 
+0

你我的朋友很棒! state.contains方法完美运行。我没有使用setBackGroundColor方法,因为它导致按钮上的所有格式都消失,所以最终得到一个带有正方形边缘且没有阴影的纯矩形。只需添加String状态和state.contains即可解决问题。 – Saleem 2012-07-28 01:28:43