http://www.cnblogs.com/yangfengwu/p/8798512.html

补充:今天答应了一个朋友写一下如果单片机发过的是字符串应该怎么解析,答应了今天写,哦哦哦是明天了,闲话少说,赶紧写

列如   DATA;T=25;H=33

len = inputStream.read(buf);//服务器断开会返回-1
byte[] ReadBuffer0 = new byte[len];//存储接收到的数据
for (int i = ; i < len; i++)
{
ReadBuffer0[i] = buf[i];
} 要想处理字符串的当然要把数据变为字符串 String DataString = new String(ReadBuffer0) String temp[] = DataString.split(";");
现在 temp[] = "DATA"
temp[] = "T=25"
temp[] = "H=33" 要想再分离
String temp1[] = temp[]..split("=");
数据就出来了temp1[] =""
有人会说这还是字符串哈...
记住高级语言几乎提供了所有可能用到的方法
不知道用哪个方法,但是你要知道你要干什么
我就是想
十进制字符串 转 10进制数
那就百度

有人会问,明明是android,为什么搜索的时候写的java.......................................

android开发用的语言就是java,,,,,,一般方法类的问题我都是搜java   界面相关类的问题我都是搜android

所以

int t = Integer.valueOf(temp1[], );

如果不对,怎么办   再百度去

说一下,问自己问题的人一直很多,我更多的是告诉方法,而不直接告诉结论,因为怕把自己身边的人惯坏了,有什么问题直接问我,然后我分分钟解决了,没什么意义,真正思考的是我而不是你了,这样的话,学习能力很难得到提升.很多人佩服自己的学习能力,和实际解决问题的能力,是因为自己走的弯路比较多,沉淀的比较多,你必须对你所做的工作充满热爱,它才会让你走的更远....

先把源码和资料链接放到这里

链接: https://pan.baidu.com/s/1jpHZjW_7pQKNfN9G4B6ZjA     密码:nhn3

先说一下那天的bug

所有的任务在启动时都是新建

否则就会有问题

但是每次新建可能会产生有好几个同样的任务

列如上面的连接任务

咱们用一个全局的变量去记录咱的连接任务

销毁的时候

try {
mthreadConnectService.interrupt();
} catch (Exception e) { }

发送数据的任务也是用一个全局变亮记录

出现问题需要销毁的时候

因为有好几个地方要添加这几句话,本来想.....算了,后期再说

现在做显示部分,先给自己说一下,,,,下一篇一定要用Handle,如果还是这样写..都感觉无人子弟....唉......写的有点害怕了,,,,应该先介绍

通常怎么操作控件的....这样操作控件懂行的人不知道会不会....唉

现在界面再拖一个TextView用来显示温湿度数据

再看一下规定的

然后其实就是在接收数据里面

/**
* 接收数据的任务
* @author yang
*
*/
class ThreadReadData extends Thread
{
public void run()
{
while (threadReadDataFlage)
{
try
{
ReadBufferLengh = inputStream.read(ReadBuffer);//服务器断开会返回-1
if (ReadBufferLengh == -)
{
threadSendDataFlage = false;//关掉发送任务,预防产生多的任务
threadReadDataFlage = false;//关掉接收任务,预防产生多的任务
try {mthreadReadData.interrupt();} catch (Exception e) {}
try {mthreadSendData.interrupt();} catch (Exception e) {}
SendDataCnt = ;//清零发送的个数
ConnectFlage = true; buttonConnect.post(new Runnable() {
@Override
public void run() {
buttonConnect.setText("连接");
Toast.makeText(getApplicationContext(), "与服务器断开连接", ).show();
}
});
} try //防止数据有其它错误
{
if ((ReadBuffer[]&0xff) == 0xaa && (ReadBuffer[]&0xff) == 0x55)
{
if ((ReadBuffer[]&0xff) == 0x01) {
textViewShowData.post(new Runnable() {//稍微写一个靠谱点的操作UI控件
public void run() {
textViewShowData.setText("温度:"+(ReadBuffer[]&0xff)+"湿度"+(ReadBuffer[]&0xff));
}
});
}
}
} catch (Exception e) {
// TODO: handle exception
} }
catch (Exception e)
{
// TODO Auto-generated catch block
Log.e("error", ReadBufferLengh+"");
e.printStackTrace();
runOnUiThread(new Runnable() {//修改界面的UI最好用Handle,这里力求简单,下几节再用
public void run() {
buttonConnect.setText("连接");
Toast.makeText(getApplicationContext(), "与服务器断开连接", ).show();
}
});
ConnectFlage = true;
threadSendDataFlage = false;//关掉发送任务,预防产生多的任务
threadReadDataFlage = false;//关掉接收任务,预防产生多的任务
try {mthreadReadData.interrupt();} catch (Exception e1) {}
try {mthreadSendData.interrupt();} catch (Exception e2) {}
SendDataCnt = ;//清零发送的个数
}
}
}
}

其实就一点有用的,其余的大多数是重复的程序,下一篇优化一下....

可以用这个调试助手,老版的小五物联有一些调试的功能

我是用的两个手机哈,因为我做的那个调试助手,一关闭就会全都关闭了,,后期再优化下哈,,,,

亲们可以用电脑的调试助手,资料里面有

好现在咱们用板子试一下

不对不对...咱是做的先发给板子指令然后板子收到命令再回复.....忘了,现在做每隔1S发送一次0xaa,0x55,0x01

这样板子收到信息就回咱

实现定时器呢有多种实现方法,说一种最简单的

/**
* 每间隔1S发送一次采集数据的命令
*/
private CountDownTimer editDeleteTimer = new CountDownTimer(,) {
@Override
public void onTick(long millisUntilFinished) { } @Override
public void onFinish()
{
SendBuffer[] = (byte) 0xaa;
SendBuffer[] = 0x55;
SendBuffer[] = 0x01;
SendDataCnt = ;//控制发送数据的个数
editDeleteTimer.start();
}
};

启动和停止呢

现在试一下

板子上电正常运行哈...

刚才板子放在了我电脑的散热口附近,所以才会30度哈,我没有在非洲和赤道哈....,,电脑两天没有关机了,,有点小热.....

现在控制一下灯

下一篇一定要优化程序,不能这样子了,,,,,,额嗯,做TCP服务的时候再优化也行,重新写一切按照常规写

单片机程序还是上一篇的...

对了

数据&0xff

参考链接

https://blog.csdn.net/wwzuizz/article/details/77649358

亲们自己百度哈

下一篇链接

http://www.cnblogs.com/yangfengwu/p/8887909.html

9-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给AndroidTCP客户端显示)的更多相关文章

  1. 8-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给C#TCP客户端显示)

    http://www.cnblogs.com/yangfengwu/p/8785516.html 先写单片机端的程序 先把源码和资料链接放到这里 链接: https://pan.baidu.com/s ...

  2. 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)

    前言:了解就行,不必深究 上一篇链接 http://www.cnblogs.com/yangfengwu/p/8720148.html 源码链接:https://pan.baidu.com/s/1wT ...

  3. 10-51单片机ESP8266学习-AT指令(ESP8266连接路由器,建立TCP服务器,分别和C#TCP客户端和AndroidTCP客户端通信+花生壳远程通信)

    http://www.cnblogs.com/yangfengwu/p/8871464.html 先把源码和资料链接放到这里 源码链接:https://pan.baidu.com/s/1wT8KAOI ...

  4. 1-51单片机ESP8266学习-AT指令(开发板介绍)

    51单片机+ESP8266开发教程(AT指令篇) 开发板资源分布: 开发板部分原理图: 1--通信下载 2--51单片机 3--ESP8266(WIFI模块) 4--DHT11(温湿度传感器) 5-- ...

  5. 5-51单片机ESP8266学习-AT指令(8266TCP服务器--用手机TCP调试助手发信息给单片机控制小灯的亮灭)

    http://www.cnblogs.com/yangfengwu/p/8759294.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXNpkDI7E8 ...

  6. 11-51单片机ESP8266学习-AT指令(ESP8266作为TCP客户端,连接TCP服务器,用串口调试助手和手机TCP调试助手测试)

    写完题目刚想起来一件事情,如果手机作为客户端(不连接路由器的情况下),手机连接模块的无线会分配一个IP地址,,,这个IP地址事先我也不知道....我先看看AT指令里面有没有一个指令可以打印一下连接自己 ...

  7. 12,13,14节-51单片机ESP8266学习-AT指令(暂停更新)需要整理

    从这一节开始,以视频加源码的形式,后期视频和程序将放在链接中 资料链接 链接: https://pan.baidu.com/s/1jpHZjW_7pQKNfN9G4B6ZjA     密码:nhn3  ...

  8. 3-51单片机ESP8266学习-AT指令(学会刷固件)

    前言:体验一下刷固件(给单片机更新程序) 上一篇链接  http://www.cnblogs.com/yangfengwu/p/8757036.html 源码链接:https://pan.baidu. ...

  9. 4-51单片机ESP8266学习-AT指令(测试TCP服务器--使用串口调试助手--不连接路由器)

    上一篇连接  http://www.cnblogs.com/yangfengwu/p/8757513.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXN ...

随机推荐

  1. Node.js+Koa开发微信公众号个人笔记(二)响应事件

    微信公众号中的事件有订阅事件/扫码事件/点击事件/跳转链接事件等等,具体可以查阅文档. 这里来实现一下订阅事件,其他的事件的实现过程也都类似. 当有人订阅了公众号后,微信服务器会向我们的服务器推送一个 ...

  2. 关于jQuery出现的新添加元素点击事件无效

    //通常点击写法: $(".div").on('click', function () { var $this = $(this); var isActive = $this.ha ...

  3. 从零开始学习html(二)认识标签(第一部分)——下

    八.<blockquote>标签,长文本引用 <!DOCTYPE HTML> <html> <head> <meta http-equiv=&qu ...

  4. Visualforce简介

    Visualforce Visualforce是一个和Apex语言相匹配的开发框架.开发者可以使用Visualforce和Apex建立自定义网络应用程序. Visualforce的基本功能类似于前端框 ...

  5. 超级干货 :一文读懂数据可视化 ZT

    前言 数据可视化,是指将相对晦涩的的数据通过可视的.交互的方式进行展示,从而形象.直观地表达数据蕴含的信息和规律. 早期的数据可视化作为咨询机构.金融企业的专业工具,其应用领域较为单一,应用形态较为保 ...

  6. ViewPager防止Fragment销毁以及取消Fragment的预加载

    存在的问题 1. 默认情况下,ViewPager会根据setOffscreenPageLimit()方法设置的大小,自动预加载2. 还是根据setOffscreenPageLimit()方法设置的大小 ...

  7. 3.网络编程-tcp的服务器简单实现

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/13 22:03 # @Author : ChenAdong # @ema ...

  8. VMware虚拟机安装教程详解图文

            学习Linux系统最好的方式就是在自己的虚拟机上安装Linux:接下来就给大家简单介绍一下VMware虚拟机的安装以及Linux的安装:VMware虚拟机只是为了更好的学习Linux: ...

  9. python-Tkinter整理总结

    笔者学习Tkinter模块也有好久时间了,现将学习的做以整理. tkinter简介(一) tkinter中lable标签控件(二) tkinter中button按钮控件(三) tkinter中entr ...

  10. C#语言————第三章 使用属性升级MyBank

    ********常见的访问修饰符*********: public :公共的,可以在其他类中访问 private:私有的,只有在本类里可以使用,其他的类无权访问 类的默认访问修饰符 internal( ...