最新版安卓TCP助手Android studio工程分享:Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换) 原创

在上一期教程中,我们完成了基于TCP协议的物联网安卓应用开发,本期我们使用Arduino IDE对esp8266进行编程,完成对esp8266设备在TCP协议下的控制。

此次实验的配置是将esp8266配置为TCP的服务器模式,手机APP作为客户端进行通信,如果大家有需要调整配置,将esp8266配置为TCP的客户端,手机APP作为服务器端,可以进入公众号进行私信,有需求的话会再更新一期。下面先带大家看一下最终效果:

【8266TCP测试APP下载】:
http://www.funiot.xyz:8888/down/9H4I3mk0kQfd

(复制链接后在浏览器打开,或见文章末尾获取源码等资源)

开发过程:

1. 连接wifi

void WIFI_Init(char* wifi_ssid,char* wifi_password)
{uint8_t times = 0;      //用于记录单次连接WiFi的超时时间WiFi.begin(wifi_ssid, wifi_password);//开始连接wifiSerial.println("");Serial.print("正在连接wifi:"); Serial.print(wifi_ssid);while (WiFi.status()!= WL_CONNECTED && times++ < 51)//检查连接情况,等待WiFi连接成功,超时跳出{delay(200);Serial.print(".");}if(times == 51)//10s内未连接成功{ Serial.print("WIFI:"); Serial.print(wifi_ssid);Serial.println(" 连接失败,请检查WiFi是否开启,或WIFI名称和密码是或否匹配,或按复位键重新尝试连接。");times=0;while(1) delay(500);  //阻塞}Serial.println("");Serial.print("连接成功,IP地址:");Serial.println(WiFi.localIP());//获取IP
}

2. 创建TCP服务器

#define MAX_TCPSERVICE_CLIENTS_NUM  2       //可连接的客户端数量最大值,标号从0开始
WiFiServer server(SERVICE_PORT);            //绑定服务器端口号
WiFiClient serverClients[MAX_TCPSERVICE_CLIENTS_NUM];   //记录最大数量的客户端
server.begin();                           //启动服务器
server.setNoDelay(true);                  //禁用Nagle算法,即消息直接发送,不合并小消息
Serial.println("等待客户端接入......");

3. 等待客户端连接与数据接收

void loop() {uint8_t i;if (server.hasClient()) //如果有客户端接入{Serial.println("客户端接入");for(i = 0; i < MAX_TCPSERVICE_CLIENTS_NUM; i++)//遍历连接的客户端{if ((!serverClients[i])|| (!serverClients[i].connected()))//启用连接的客户端{if(serverClients[i]) serverClients[i].stop();serverClients[i] = server.available();//客户端接入后发送客户端一个“Connected!”,客户端接收到可用于验证是否接入成功serverClients[i].print("Connected!"); continue;}}WiFiClient serverClient = server.available();   //如果未检查到客户端,则停止连接serverClient.stop();}for(i = 0; i < MAX_TCPSERVICE_CLIENTS_NUM; i++)   //处理客户端发送的数据{if (serverClients[i] && serverClients[i].connected()){if(serverClients[i].available()){while(serverClients[i].available())       //通道有数据,逐一读取并合并成字符串{rec_str += char(serverClients[i].read()); }Serial.print("接收到客户端的数据:");         Serial.print(rec_str);                    //串口发送接收的数据Serial.println("");                       //换行serverClients[i].print(rec_str);          //向客户端回传接收的数据,以检验通信完整性 //客户端断开时会发送一个”Disconnect!“,设备可由此及时判断掉线if(rec_str=="Disconnect!")                Serial.println("客户端断开");elseData_Handle(rec_str);                   //数据处理rec_str="";                               //清空接收数据缓存}}}
}

4. 数据处理

void Data_Handle(String strdata)
{Serial.println("开始数据处理");if(strdata=="LEDON"){Serial.println("灯光:打开");digitalWrite(LEDPin, LOW);}else if(strdata=="LEDOFF"){Serial.println("灯光:关闭");digitalWrite(LEDPin, HIGH);}Serial.println("数据处理完成");
}

2、 安卓部分

android源码与上一期的内容基本相似,只是在数据接收处理部分由字节改为字符串。

基于TCP/IP协议的物联网安卓应用开发基础教程(Android Studio开发)

TCPService:

//非阻塞式连接
while(conn){//接收网络数据if( (len2 = inputstream.read(buffer)) != -1){receiveData = new String(buffer, 0, len2);Intent CMDintent = new Intent();CMDintent.setAction("com.example.communication.data");//上一期采用下面的字节形式,注释下行,采用下下行的字符模式//CMDintent.putExtra("data", buffer);//buffer为数组,receivedata为文本CMDintent.putExtra("data", receiveData);//buffer为数组,receivedata为文本sendBroadcast(CMDintent);}else{break;}
}

接收处理部分:

 private class cmdReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//取消字节字符串转换,直接读取String recieveData=intent.getStringExtra("data");if(recieveData!=null){textView_ctrl_rec.setText("接收到数据:"+recieveData);}}}

3、源码获取:

非常简短的一个项目,上面的源码可以实现本次实验的功能,如果需要上述资源,公众号“IOT趣制作”回复关键字“8266tcp”即可获取Arduino和Android Studio工程源码以及安卓APK安装包。

esp8266的TCP通信基础教程(结合手机APP)相关推荐

  1. python爬虫之app数据抓取_Python爬虫入门教程 29-100 手机APP数据抓取 pyspider

    1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...

  2. 阿里云IOT入门教程(三)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭

    阿里云IOT入门教程(一)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭 概述 所需材料 Mqtt预备知识 hacklab端开发 * 硬件端上报 ...

  3. (开源)STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示

    STC89c51结合ESP8266制作物联网环境监测系统+APP inventor制作手机App实时显示 第一 .先上效果图 第二.原理讲解 第三.c51读取各种传感器数值 第四.传感器数据推送到云端 ...

  4. stm32f103c8t6控制ESP8266与手机APP通信

    stm32f103c8t6控制ESP8266与手机APP通信 之前已经发表过利用stm32控制蓝牙模块与手机APP通信的文章,那么现在我就来说说用WIFI模块来控制与手机APP的通信 首先需要的器件如 ...

  5. 最简单DIY基于ESP8266的智能彩灯③(在网页用按钮+滑动条+手机APP控制RGB灯)

    ESP8266和ESP32智能彩灯开发系列文章目录 第一篇:最简单DIY基于ESP8266的智能彩灯①(在网页用按钮点亮普通RGB灯) 第二篇:最简单DIY基于ESP8266的智能彩灯②(在网页用按键 ...

  6. ESP8266实现WIFI局域网连接手机APP监控

    主要功能 STM32采集温湿度信息. 人体红外感应模块, 检测到有人活动, LED3亮. 手机APP通过WIFI连接, 可查看温湿度信息, 可控制LED1, LED2, 蜂鸣器. STM32与电脑上位 ...

  7. 手机app+esp8266控制小区大门门锁,实现远程开门

    近日笔者自己动手修理自家的门铃时,发现只要接通开门的电源线,就可以打开楼宇的大门了,突发奇想:在门铃引出线加装继电器就可以用esp8266连上互联,实现远程开门了.(我家门铃比较老旧,不知其他牌子门铃 ...

  8. 爬虫之手机APP抓包教程-亲测HTTP和HTTPS均可实现

    当下很多网站都有做自己的APP端产品,一个优秀的爬虫工程师,必须能够绕过难爬取点而取捷径,这是皆大欢喜的.但是在网上收罗和查阅了无数文档和资料,本人亲测无数次,均不能正常获取HTTPS数据,究其原因是 ...

  9. 易安卓手机APP教程

    易安卓简介: E4A-[易安卓]是一款于 2013 年 06 月 01 日正式发布的.定位于为企业.站长.开发者.网络公司.各种手持设备等等基于安卓系统下的 APP 开发的全中文安卓编程语言,本语言的 ...

最新文章

  1. (转载)一种根据纠偏数据对火星坐标进行完美拟合的方法
  2. VMware三种网络模式根本区别(图)
  3. http如何像tcp一样实时的收消息?
  4. 【初赛】概率与期望学习笔记
  5. DIV+CSS—菜鸟分享学习心得!导航篇
  6. 国内外物联网平台初探(篇五:机智云平台)
  7. 两条信号之间加电容_模电总结:第七章、波形的发生和信号的转换,正弦波振荡的电路...
  8. Java数据结构的知识体系
  9. 16种oracle查询日期语句
  10. centos安装rabbitmq_SpringCloud之RabbitMQ安装
  11. Rstudio图片保存方式
  12. 单片机继电器控制实验程序C语言,继电器控制实验
  13. 青海电大随学随考计算机,[青海电大]17秋随学随考中国现当代文学名著导读(1)作业4资料...
  14. android 自动调节音量,Android 音量调节
  15. opencv应用实例-金圣韬-专题视频课程
  16. 什么是RS485总线?
  17. 金链盟成员纷纷“自立山头”,中国联盟式区块链开源平台路在何方
  18. 倍加福编码器THI40N-0SAK2R6TN-01024
  19. 王怀南:从谷歌之父到育儿专家
  20. 基于差异演化的寄生樽海鞘群算法

热门文章

  1. PyQt(Python+Qt)学习随笔:Qt Designer中部件的调色板palette属性和字体font属性设置
  2. Fiddler配合夜神模拟器进行抓包
  3. 疯狂java——集合、泛型、Stream
  4. Incomplete chess boards 有趣.
  5. UliPad常用技巧小贴士
  6. java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
  7. solr基本操作步骤
  8. 【C++】 STL库的stack容器
  9. adb操作提示Read-only file system问题
  10. FileZilla Server报错Could not load TLS libraries 的解决方法