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

实现的功能

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

1.控制继电器吸合

2.控制继电器断开

前言

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

https://www.cnblogs.com/yangfengwu/p/12543923.html   Android TCP客户端

https://www.cnblogs.com/yangfengwu/p/12543847.html   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://www.cnblogs.com/yangfengwu/p/12543847.html

2.配置GPIO5为普通引脚

/*设置GPIO5为普通引脚*/
    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);

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

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

4.编写TCP接收处理程序

    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://www.cnblogs.com/yangfengwu/p/12543923.html

2.页面修改如下:

页面用了一个ImageButton

ImageButton imageButtonControl;

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

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

        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返回的数据

                    //提示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.控制继电器断开

原文地址:https://www.cnblogs.com/yangfengwu/p/12547009.html

时间: 2024-08-29 05:26:03

ESP8266 SDK开发: 综合篇-8266TCP服务器与Android TCP客户端实现无线网络通信控制的相关文章

ESP8266 SDK开发: 综合篇-8266TCP服务器与C#TCP客户端实现无线网络通信控制

实现的功能 前言 1.用户在看这一节之前请先学习 https://www.cnblogs.com/yangfengwu/p/12397146.html   C# TCP客户端 https://www.cnblogs.com/yangfengwu/p/12393478.html   8266 TCP服务器 2.控制继电器引脚 协议规定 C#TCP客户端发送给ESP8266TCP服务器控制继电器吸合指令: 0xaa  0x55  0x01 0x01 ESP8266执行以后回复给C#TCP客户端: 0

ESP8266 SDK开发: 综合篇-C#上位机串口通信控制ESP8266

实现的功能 1.C#串口上位机通过串口控制继电器 控制继电器吸合      控制继电器断开      说明 1,请用户先学习这一节 https://www.cnblogs.com/yangfengwu/p/12382103.html   编写C#串口调试助手 2.控制继电器引脚 协议规定 上位机串口发送给ESP8266控制继电器吸合指令: 0xaa  0x55  0x01 0x01 ESP8266执行以后回复: 0x55  0xaa  0x01 0x01 上位机串口发送给ESP8266控制继电器

ESP8266 SDK开发: 开发环境搭建(NONOS 2.2.0)

前言 最近发现有些用户使用的是NONOS版本的SDK 考虑到只要是会使用RTOS版本的用户基本上都会使用NONOS版本 而会使用NONOS的用户大部分都不会使用RTOS版本 故后期的教程以NONOS版本为主,RTOS版本为辅 整个文章按照NONOS版本为主线编写,最后说明和RTOS版本的区别 导入工程 咱们用NONOS 2.2.0版本 导入NONOS 2.2.0版本 1.按照上一节安装好软件以后 把这个工程解压到 2.File -> Import 下载程序 生成的bin文件位置 咱现在不需要IA

ESP8266 SDK开发: 外设篇-GPIO中断检测

直接上代码 #include "gpio.h" //设置GPIO0下降沿中断 PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U , FUNC_GPIO0);//GPIO0做为普通IO使用 GPIO_DIS_OUTPUT(0);//0:GPIO0 如果以前设置过GPIO为输出,则调用此函数关闭GPIO0输出 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);//GPIO0上拉输入 _xt_isr_mask(1<<ETS_G

Web开发中的服务器跳转与客户端跳转

两者比较如下: 跳转类型  客户端请求次数 服务端响应次数 URL变化 站外跳转 作用域 服务器跳转 1 1 无 否 pageContext.request.session.application 客户端跳转 2 2 有 能 session.application 请求次数与响应次数 服务端跳转:客户端发起一次请求,服务端接收请求后,将结果跳转到另一个页面,作为此次请求结果返回给客户端客户端跳转:客户端发起一次请求,服务端返回此次请求的结果,结果内容是一个URL地址,客户端拿到此URL,再次发送

android TCP 客户端(仅接收数据)

配合log4net使用,用来接收调试信息.因此,此客户端只管通过TCP接收字符串数据,然后显示在界面上. 接收TCP数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 try {     Socket s = new Socket("192.168.1.5", 8240);     InputStream inputStream = s.getInputStream();     DataInputStream input = new DataInputS

Socket Android手机客户端与PC服务端局域网内联测试

Socket Android手机客户端与PC服务端局域网内联测试,笔者采用的是 PC服务器,Android平板客户端 ,PC模拟器客户端, 前段时间为了加深对Socket通信的印象和知识的深度掌握,我模仿了QQ的一些元素,也借鉴了其他牛人的一些源码思想,写了 一个 叫 IQ 的 Android 聊天软件,该软件大致由 Android客户端.JAVA pc服务端.mysql数据库组成,客户端和服务端都 比较多的用到了读写的IO流,SCOKET,线程等,这篇博客主要给大家介绍测试环境,不讲源码实现方

tcp客户端程序开发

https://www.cnblogs.com/python-No/ 话不多说,直接进入正题 一:客户端一共分为5大块: 1.创建客户端套接字 2.和服务端套接字建立连接 3.发送数据 4.接收发送 5.关闭客户端套接字 二:socket类的介绍 导入 socket 模块import socket 创建客户端 socket 对象socket.socket(AddressFamily, Type) send(data) 表示发送数据,data是二进制数据 recv(buffersize) 表示接收

Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP

Android基础入门教程--1.2.1 使用Eclipse + ADT + SDK开发Android APP 标签(空格分隔): Android基础入门教程 1.前言 这里我们有两条路可以选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 因为谷歌已经放弃了ADT的更新,官网上也取消的下载链接,这里提供谷歌放弃更新前最新版本的 ADT Bundle供大家下载! 2.直接使用打包好的Eclipse 32位版:adt-bundle-windows-x86-20140