上一篇是写关于自写Android手机APP给单片机下发数据的,这次我将写一下APP如何接受单片机数据。

其实使用调试助手,或者别人开的的APP同样能够实现接受单片机数据,但想学习的,我还是建议能够自己写一个Android软件,这样从底层到上层都能学到很多东西。

APP页面如图:

硬件连接如图:

单片机的硬件代码:

if(0 == P32)    //  通过串口给手机发送字符串   wantin{ms_delay(400);if(0 == P32){ES = 0;TI = 1; printf("AT+CIPSEND=?\r\n");LED();ms_delay(1000) ;printf("AT+CIPSEND=0,10\r\n");LED();ms_delay(1000) ;printf("wangting\r\n");LED(); ms_delay(1000) ;LED();ms_delay(1000) ;LED();ms_delay(1000) ;while(!TI);TI = 0;ES = 1;}while(0 == P32);} 

我这里只贴了串口发送的代码,它的数据是通过按键进行发送的,以前的文章也有写到。上发的内容为wangting.

app代码部分:

package com.open_open_wt.myapplication;import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private ConnectThread mConnectThread;private Socket mSocket;private EditText mEIP;private EditText mEPort;private String mStrIP;private int miPort;private Button mBtnConn;private Button mBtnRecData;private TextView mtvRec;private String line;private String mstr;private int flag=1;BufferedReader br;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mEIP=(EditText)findViewById(R.id.eTIP);mEPort=(EditText)findViewById(R.id.eTPort);mBtnConn=(Button)findViewById(R.id.btConn);mBtnRecData=(Button)findViewById(R.id.bRecData);mtvRec=(TextView)findViewById(R.id.tVRecData);mBtnConn.setOnClickListener(this);mBtnRecData.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.btConn://  连接if(mSocket == null || !mSocket.isConnected()){mStrIP=mEIP.getText().toString();miPort=Integer.valueOf(mEPort.getText().toString());mConnectThread=new ConnectThread(mStrIP,miPort);mConnectThread.start();}if(mSocket != null && mSocket.isConnected()){try {mSocket.close();mSocket=null;mBtnConn.setText("连接");Toast.makeText(MainActivity.this,"连接断开",Toast.LENGTH_LONG).show();}catch (IOException e){e.printStackTrace();}}break;case R.id.bRecData:if(mSocket != null && mSocket.isConnected()){if(flag==1){Toast.makeText(MainActivity.this,"开始接受数据",Toast.LENGTH_LONG).show();mBtnRecData.setText("Doing recDta");GetTCPstring();flag=(-1)*flag;}else{Toast.makeText(MainActivity.this,"停止接受数据",Toast.LENGTH_LONG).show();mBtnRecData.setText("RecData");try {mSocket.getInputStream().close();} catch (IOException e) {e.printStackTrace();Toast.makeText(MainActivity.this,"停止接受数据失败",Toast.LENGTH_LONG).show();}flag=(-1)*flag;}}else{mBtnRecData.setText("RecData");Toast.makeText(MainActivity.this,"开始接受数据失败",Toast.LENGTH_LONG).show();}break;}}private void GetTCPstring(){new Thread(){public void run(){try{char[] cbuf=new char[10];br=new BufferedReader(new InputStreamReader(mSocket.getInputStream()));while (true){if(br.ready()){br.read(cbuf,0,10);line=String.valueOf(cbuf);handler.sendMessage(handler.obtainMessage());}}}catch(IOException e){e.printStackTrace();Toast.makeText(MainActivity.this,"接受数据失败",Toast.LENGTH_LONG).show();}}}.start();}//  消息句柄private Handler handler=new Handler(){public void handleMessage(Message msg){super.handleMessage(msg);mstr+=line;if(mstr.length()>500){mstr="";}mtvRec.setText(mstr);}};private class ConnectThread extends Thread{private String ip;private int port;public ConnectThread(String ip,int port){this.ip=ip;this.port=port;}@Overridepublic void run(){try {mSocket=new Socket(ip,port);runOnUiThread(new Runnable() {@Overridepublic void run() {mBtnConn.setText("断开");Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_LONG).show();}});}catch (IOException e){e.printStackTrace();runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_LONG).show();}});}}}
}

刚开始学习Android代码,写的逻辑一定有问题,因为我测试了一下,会有闪退问题,但功能是能用的。手机连接到WIFI模块的WIFI上,然后打开我编写的APP——连接——接收数据按钮按下,接收的数据如图:

能够正确接收数据了,这就说明,手机基本能正确接收单片机上发的数据了,后期还需要不断的研究与深化。

APP源码,大家可以下载:https://download.csdn.net/download/xiaocaidayong/11215938          RecDataWt.rar

ESP8266 WIFI模块学习之路(7)——自写Android手机APP接受单片机数据相关推荐

  1. ESP8266 WIFI模块学习之路(2)——模块与单片机连接进行远程操作

    上一个博客:ESP8266 WIFI模块学习之路(1)是关于对串口连接的,简单验证ESP8266是怎么样连接及其功能验证,下面将通过单片机连接,和手机进行远程操作. ESP8266和单片机的连接,我这 ...

  2. ESP8266 WIFI模块学习之路(10)——手机远程关闭电脑

    在博文ESP8266 WIFI模块学习之路(9)中已经实现了电脑读出USB串口的数据,如图 在博文C语言实现电脑关机程序中学习了如何实现电脑关机及其它的一些功能. 因此,通过这两个博文完全可以实现手机 ...

  3. android 8 esp8266,ESP8266 WIFI模块学习之路(8)——自写Android手机APP控制直流电机正反转...

    本次向通过Android远程控制直流电机正反转,在这之前可以看一下我写的"STC单片机简单控制直流电机正反转"有助刚学的同学理解. 可以看一下我的硬件连接电路,如图: 单片机硬件程 ...

  4. ESP8266 wifi模块学习

    这是在b站一个up主那里看视频记的笔记,有缘人刷到可以去看看,不过他没给链接,很烦. [物联网]ESP8266-WIFI模块应用--基于51单片机_哔哩哔哩_bilibili 1.引脚说明 vcc 3 ...

  5. ESP32 WIFI MESH学习笔记8-物联网与控制(手机APP部分)

    系列文章目录 文章目录 系列文章目录 前言 一.Appinventor 登陆 二.界面设计 三.逻辑部分 1.初始化 2.订阅话题 3.按钮代码块 4.调式 总结 前言 上次已实现MESH网接入公用M ...

  6. STM32 驱动 ESP8266 WIFI 模块

    目录 1. 模块引脚 2. 测试模块是否正常 3. AT指令 ​4. ESP8266三种工作模式 5. 配置WIFI模块 6. STM32驱动WIFI模块 拿到一个野火的esp8266模块,驱一下试试 ...

  7. STM32之 ESP8266 WIFI 模块驱动代码-可以通过互联网实现数据远程传输(程序稳定,清晰明了非常容易移植到51单片机上)

    成品展示部分 :(ESP8266只是其中一个小部分而已) 实物图: 基于互联网的农业大棚环境监控系统设计 电路图: 农业大棚环境监控设计电路图(彩色)  调试部分:ESP8266 WIFI 模块串口调 ...

  8. 【STM32】ESP8266 WiFi模块实时上报温湿度及控制LED灯项目笔记

    ESP8266 WiFi模块实时上报温湿度及控制LED灯项目笔记 一.ESP8266模块 1.模块介绍 2.AT指令介绍 2.硬件连接 二.串口转发及调试 1.串口转发流程 2.串口转发程序实现 ST ...

  9. ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么

    ESP8266 wifi模块连接上了热点之后 与服务器建立了tcp连接并进入了透传模式,如果关掉热点wifi模块的tcp连接没有切断,为什么? 这个是很多开发者在第一次使用ESP8266模块是会出现的 ...

最新文章

  1. 单点登录与权限管理本质:session和cookie介绍
  2. CSMA/CD工作原理
  3. HDU - 1527 取石子游戏(威佐夫博弈)
  4. User status for Service Order
  5. 【离散数学】含有两个量词的谓词逻辑公式
  6. 一个Web开发的客户端基础技术测试Demo
  7. golang---文件读写
  8. 【github系列】github创建tag
  9. 实习成长之路:MySQL四:深入浅出索引
  10. Java 标注(Annotation)详解
  11. Java,List转json,json转List
  12. 试题 算法训练 印章
  13. 广告化开发(基础知识)~广告效果指标CTR/CVR/ROI/ARPU的理解
  14. 中文乱码问题解决大全
  15. LoadRunner 11.50 下载+安装+补丁
  16. python爬虫 | 同步刷新网页爬取实例 | 小白篇
  17. 【好工具】强烈安利的文献管理软件 Mendeley
  18. 树和二叉树的应用 -- ---哈夫曼(Huffman)树和哈夫曼编码
  19. 石家庄发展史 9(转)
  20. FieldII仿真之常用命令汇总

热门文章

  1. 英文字母间距非常大的问题
  2. 第5章 SIM卡锁定PIN解锁流程
  3. Linux 网桥代码分析 六 网桥数据转发函数分析
  4. “L2TP 链接尝试失败,因为安全层不能与远程计算机协商兼容的参数”解决方案
  5. web开发常用js及html代码
  6. 互联网早报 | 8月26日 星期三 | 蚂蚁集团递交招股文件;TikTok首次披露用户数据;滴滴开辟首个欧洲市场...
  7. 社区送温暖!Unitimes携手环信新春送好礼
  8. fiddler mac教程_Mac os 安装fiddler
  9. 无需序列号安装Photoshop CS6
  10. 小程序获取微信运动步数