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

微信扫一扫,分享到朋友圈

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

技术图片

 

 

 

 

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

技术图片

 

 

 

 

技术图片

 

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

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

weiphp中常用方法总结

上一篇

Linux下使用gets和puts方法出现的错误

下一篇

你也可能喜欢

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

长按储存图像,分享给朋友