ESP8266学习笔记(九)

通过上次的说明,在基本的app界面xml编好了之后,我们就开始写主程序文件。

变量申明

首先,tcp通讯需要的是服务器的ip地址和端口号,所以我们需要两个变量

private final String SERVER_HOST_IP = "192.168.199.191";//随便写的,根据自己需要改
private final int SERVER_HOST_PORT = 23333; ```
然后,我们需要有三个按钮和一个文本框

private Button btnConnect;
private Button btnOpen;
private Button btnClose;
private TextView state;```
接着,我们需要tcp通讯的相关控件

  private Socket socket;
  private PrintStream output;
  private InputStream input;
  private String readMessage;
  private BufferedReader bufferedReader = null;```
最后,我们需要写一个函数,将控件和它们对应的id连接起来

public void initView()
{
btnClose = (Button)findViewById(R.id.btn1);
btnOpen = (Button)findViewById(R.id.btn2);
btnConnect= (Button)findViewById(R.id.btn3);
state = (TextView)findViewById(R.id.tx1);
}```

添加监听

因为按钮要实现的功能都不一样,所以我们需要对每个按钮添加对应的监听事件

  1. btnConnect
    btnConnect.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
        initClientSocket();
       
      }
    });```
2. btnOpen

btnOpen.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
sendMessage("(@devcall "MCU_RES" (uartdata "open") (lambda x x))"+"\r\n");

  }
});```
  1. btnClose
    btnClose.setOnClickListener(new Button.OnClickListener()
    {
      @Override
      public void onClick(View v)
      {
        sendMessage("(@devcall \"MCU_RES\" (uartdata \"close\") (lambda x x))"+"\r\n");

      }
    });```

##初始化
对于一个socket通讯,我们首先要对它进行初始化,建立socket连接。

private void initClientSocket()
{
try
{

  socket = new Socket(SERVER_HOST_IP, SERVER_HOST_PORT);
  output = new PrintStream(socket.getOutputStream(), true, "utf-8");
  GetLogTask task = new GetLogTask();
  SendLogTask task1=new SendLogTask(); 
  task.execute();
  task1.execute();
  sendMessage("(login\"xxx\"\"code\"\"xxx\" \"USER\")"+"\r\n");

}
catch (UnknownHostException e)
{
}
catch (IOException e)
{
}

}```
其中,sendMessage中间的信息是登录服务器用的,因此放在初始化函数里,只执行一次。我用的是我以前推荐的方法,所以可以当成一个示例,如果用的是别的服务器,可以根据自己的需要修改初始化代码。
其中GetLogTask是用来接收设备端信息的,而SendLogTask是用来发送心跳与服务器进行通讯的,具体代码等下次再说。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容