论武天地论坛

 找回密码
 立即注册
搜索
查看: 7427|回复: 0

6.03-综合实战篇-8266TCP服务器(espconn实现)(NONOS 2.2.0)与Android T...

[复制链接]

58

主题

58

帖子

244

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
244
发表于 2020-10-27 23:45:25 | 显示全部楼层 |阅读模式




实现的功能
Android TCP客户端连接8266的TCP服务器,网络控制开发板继电器
1.控制继电器吸合


819239-20200322172450224-1745308993.png




819239-20200322172521176-2065886166.png





2.控制继电器断开
819239-20200322172554977-1083909816.png




819239-20200322172606604-481823075.png




前言
1.用户在看这一节之前请先学习
2.控制继电器引脚
819239-20200229230229812-1392698145.png
协议规定
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.处理程序在这节的基础上修改添加

2.配置GPIO5为普通引脚
819239-20200322165733143-887170355.png




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


3.定义用于返回继电器状态的数组
819239-20200322165811254-865207171.png



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

4.编写TCP接收处理程序
819239-20200322165910970-1660904362.png


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模块的无线)
819239-20200322170309302-2120737597.png


819239-20200322170433142-926285551.png




819239-20200322170413191-816842250.png


819239-20200322170443623-1559500427.png



Android APP程序编写
1.处理程序在这节的基础上修改添加
2.页面修改如下:
页面用了一个ImageButton
819239-20200322170721339-1496742559.png


819239-20200322170938072-42936792.png





ImageButton imageButtonControl;




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





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






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返回的数据
819239-20200322172146082-238881087.png




//提示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
819239-20200322172420685-512184263.png





1.控制继电器吸合











2.控制继电器断开








copycode.gif
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|论武天地论坛

GMT+8, 2024-10-16 00:54 , Processed in 0.082818 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表