ESP8266学习笔记(九)

作者: JaydenOnly | 来源:发表于2016-11-21 12:16 被阅读0次

    通过上次的说明,在基本的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是用来发送心跳与服务器进行通讯的,具体代码等下次再说。

    相关文章

      网友评论

        本文标题:ESP8266学习笔记(九)

        本文链接:https://www.haomeiwen.com/subject/prnypttx.html