2017-04-20 64 views
0

我正在嘗試創建Android應用來控制Raspberry PI GPIO。兩者都連接到同一個網絡。我嘗試了一個靜態IP和動態IP,端口80轉發。仍然沒有成功。 下面是我使用的代碼(Source):無法將Android應用連接到Raspberry Pi來控制GPIO

public class Main extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    Switch swi = (Switch)findViewById(R.id.takE); 
    swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked){ 
       new Background_get().execute("led1=1"); 
      }else{ 
       new Background_get().execute("led1=0"); 
      } 
     } 
    }); 

} 
private class Background_get extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params){ 
     try { 
      URL url = new URL("http://192.168.XXX.XXX/?" + params[0]); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

      BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
      StringBuilder result = new StringBuilder(); 
      String inputLine; 
      while ((inputLine = in.readLine()) != null) 
       result.append(inputLine).append("\n"); 

      in.close(); 
      connection.disconnect(); 
      return result.toString(); 
     }catch (IOException e){ 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

}

+0

當您在手機瀏覽器或同一網絡上的計算機上打開「http://192.168.XXX.XXX/?led1 = 1」時會發生什麼?如果它不起作用,那意味着你的網絡配置或覆盆子pi有問題。你的代碼看起來沒問題。 – JonasCz

+0

你會得到什麼例外?你的手機瀏覽器可以訪問該頁面嗎?你的電腦瀏覽器可以訪問它嗎? – njzk2

+0

不,我不能訪問任何瀏覽器(電話和電腦)上的頁面。可能是什麼問題? – Kush

回答

0

我不會使用HTTP,但插座進行通信。

因此,您應該在您的Raspberry PI上創建一個ServerSocket,並在您的android上創建一個套接字。 您可以只需按照神諭插座例如:https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

要控制的GPIO我會建議使用http://pi4j.com/ 我使用這個庫自己,我感到非常高興。

如果你想擁有多個客戶端,你應該在while循環中使用Socket clientSocket = serverSocket.accept();併爲每個客戶端啓動一個新的線程。

+0

這不回答這個問題。 – njzk2

相關問題