前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP8266 SDK开发: 综合篇-8266TCP服务器(espconn) (NONOS 2.2.0)与Android TCP客户端实现无线网络通信控制

ESP8266 SDK开发: 综合篇-8266TCP服务器(espconn) (NONOS 2.2.0)与Android TCP客户端实现无线网络通信控制

作者头像
杨奉武
发布2020-03-23 17:32:36
9750
发布2020-03-23 17:32:36
举报
文章被收录于专栏:知识分享

实现的功能

Android TCP客户端连接8266的TCP服务器,网络控制开发板继电器

1.控制继电器吸合

2.控制继电器断开

前言

1.用户在看这一节之前请先学习

https://cloud.tencent.com/developer/article/1602674   Android TCP客户端

https://cloud.tencent.com/developer/article/1602672   8266 TCP服务器

2.控制继电器引脚

协议规定

Android TCP客户端发送给ESP8266TCP服务器控制继电器吸合指令:

0xaa  0x55  0x01 0x01

ESP8266执行以后回复给C#TCP客户端:

0x55  0xaa  0x01 0x01

Android TCP客户端发送给ESP8266TCP服务器控制继电器断开指令:

0xaa  0x55  0x01 0x00

ESP8266执行以后回复给C#TCP客户端:

0x55  0xaa  0x01 0x00

ESP8266程序编写

1.处理程序在这节的基础上修改添加

https://cloud.tencent.com/developer/article/1602672

2.配置GPIO5为普通引脚

代码语言:javascript
复制
/*设置GPIO5为普通引脚*/
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);

3.定义用于返回继电器状态的数组

代码语言:javascript
复制
/*用于返回继电器的状态*/
u8 RelayOn[4]={0x55,0xaa,0x01,0x01};//继电器吸合
u8 RelayOff[4]={0x55,0xaa,0x01,0x00};//继电器断开

4.编写TCP接收处理程序

代码语言:javascript
复制
    if(length>= 4 && pusrdata[0] == 0xaa && pusrdata[1] == 0x55){
        if(pusrdata[2] == 0x01){
            if(pusrdata[3] == 0x01){
                GPIO_OUTPUT_SET(5, 1);//设置GPIO5输出高电平
                espconn_send(TCPSendDate,RelayOn,4);
            }
            else if(pusrdata[3] == 0x00){
                GPIO_OUTPUT_SET(5, 0);//设置GPIO5输出低电平
                espconn_send(TCPSendDate,RelayOff,4);
            }
        }
    }

5.先用 TCP调试助手测试(手机连接Wi-Fi模块的无线)

Android APP程序编写

1.处理程序在这节的基础上修改添加

https://cloud.tencent.com/developer/article/1602674

2.页面修改如下:

页面用了一个ImageButton

代码语言:javascript
复制
ImageButton imageButtonControl;


imageButtonControl = findViewById(R.id.imageButtonControl);
        imageButtonControl.setTag(false);//默认是关闭

3.点击按钮发送相应的数据,同时切换图片

代码语言:javascript
复制
        imageButtonControl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final byte[] bytes = new byte[4];
                bytes[0] = (byte) 0xaa;
                bytes[1] = (byte) 0x55;
                bytes[2] = (byte) 0x01;
                if ((boolean) (imageButtonControl.getTag()) == false) {
                    imageButtonControl.setImageResource(R.mipmap.switch_button_on);//吸合图片
                    imageButtonControl.setTag(true);
                    bytes[3] = 0x01;
                } else {
                    imageButtonControl.setImageResource(R.mipmap.switch_button_off);//断开图片
                    imageButtonControl.setTag(false);
                    bytes[3] = 0x00;
                }
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try{
                            outputStream.write(bytes,0,4);//发送数据
                        }catch (Exception e){}
                    }
                }).start();
            }
        });

4.处理8266返回的数据

代码语言:javascript
复制
                    //提示byte范围是-127 -- 127   &0xFF以后便自动转为int型
                    if ( msg.arg1>=4 && Buffer[0] == 0x55 && (Buffer[1]&0xff) == 0xaa ) {
                        if (Buffer[2] == 0x01) {
                            if (Buffer[3] == 0x01)//继电器吸合
                            {
                                textViewState.setText("吸合");
                                imageButtonControl.setImageResource(R.mipmap.switch_button_on);//吸合图片
                                imageButtonControl.setTag(true);
                            }
                            else if (Buffer[3] == 0x00)//继电器断开
                            {
                                textViewState.setText("断开");
                                imageButtonControl.setImageResource(R.mipmap.switch_button_off);//断开图片
                                imageButtonControl.setTag(false);
                            }
                        }
                    }

测试

请使用手机APP连接Wi-Fi模块

IP地址:192.168.4.1  端口号:8080

1.控制继电器吸合

2.控制继电器断开

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现的功能
  • 前言
  • 协议规定
  • ESP8266程序编写
  • Android APP程序编写
  • 测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档