[英]Can't connect Android app to Raspberry Pi to control GPIO
我正在尝试创建一个Android应用来控制Raspberry PI GPIO。 两者都连接到同一网络。 我尝试了转发端口80的静态IP和动态IP。 仍然没有成功。 这是我正在使用的代码( Source ):
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;
}
}
}
我不会使用http而是使用套接字进行通信。
因此,您应该在Raspberry PI上创建ServerSocket,并在android上创建Socket。 您可以仅遵循oracle套接字示例: https : //docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
为了控制GPIO,我建议使用http://pi4j.com/。我自己在使用该库,对此我感到非常满意。
如果要有多个客户端,则应使用Socket clientSocket = serverSocket.accept();
在while循环中,为每个客户端启动一个新线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.