繁体   English   中英

无法将Android应用连接到Raspberry Pi以控制GPIO

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM