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

实现的功能

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

1.控制继电器吸合

8ce5080fdaf49aecff973d5c82137348.png

2d569807c2cd50609594c09c34aa75cc.png

2.控制继电器断开

df22d2bc12748659012ed01b613d26fe.png

cb8721d0783fa1c133f2bb4d65a02212.png

前言

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

2.控制继电器引脚

fa877b5ca0c890955064bc7d7b5c1bcc.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为普通引脚

432d5e3f3c3d56ce1a1014ba87c969b3.png

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

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

7f19c10a7ef34e0331ab0b498cc20803.png

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

u8 RelayOff[4]={0x55,0xaa,0x01,0x00};//继电器断开

4.编写TCP接收处理程序

63870786bee0df02137e5d0dd0a9a252.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模块的无线)

029b3f3cc763b29232f59722102e10b0.png

b7c86584f1bd1047e140968b54b72e53.png

7d5d035374f0972d95c26b8b3ee00b28.png

247ffe67a7ea4675eee3d15c8cafa3e0.png

Android APP程序编写

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

2.页面修改如下:

页面用了一个ImageButton

f5fde5cbe97337e02f6635dbe12fae95.png

9c9d8dfaa37aa2db3ca56ae060076030.png

ImageButton imageButtonControl;

imageButtonControl=findViewById(R.id.imageButtonControl);

imageButtonControl.setTag(false);//默认是关闭

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

f8fc3ad21a48ff4f1e6511e18a466e68.png

imageButtonControl.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {

finalbyte[] 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(newRunnable() {

@Overridepublic voidrun() {try{

outputStream.write(bytes,0,4);//发送数据

}catch(Exception e){}

}

}).start();

}

});

4.处理8266返回的数据

68c7e3d2594198aa5356887a49bdb4da.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

9a9db76c085458a7da1b39ae5a2ea65f.png

1.控制继电器吸合

8ce5080fdaf49aecff973d5c82137348.png

2d569807c2cd50609594c09c34aa75cc.png

2.控制继电器断开

df22d2bc12748659012ed01b613d26fe.png

cb8721d0783fa1c133f2bb4d65a02212.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值