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. html常用标签整理

    html文档结构 <!DOCTYPE html> <html lang="zh-CN"> #这个lang表示语言,zh-CN中文的意思,整个文档的内容以中文 ...

  2. 探讨PHP页面跳转几种实现技巧 转自# 作者:佚名 来源:百度博客 #

    Web系统中,从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一.页面跳转可能是由于用户单击链接.按钮等引发的,也可能是系统自动产生的. 此处介绍PHP中常用的实现页面自动跳转的方法. PH ...

  3. TUM数据集rgbd_benchmark工具的使用方法

    # 在学习视觉slam过程中,需要对数据集合进行预处理和对slam或者跟踪结果进行评价,TUM提供一组这样的工具,为了自己以后方便查找,于是把它记录下来 一.RGBD_Benchmark工具下载链接: ...

  4. 给你一个全自动的屏幕适配方案(基于SW方案)!—— 解放你和UI的双手

    Calces系列相关文章:Calces自动实现Android组件化模块构建 前言 屏幕适配一直是移动端开发热议的问题,但是适配方案往往在实际开发的时候会和UI提供的设计稿冲突.本文主要是基于官方推荐的 ...

  5. Android 时间与日期操作类

    获取本地日期与时间 public String getCalendar() { @SuppressLint("SimpleDateFormat") SimpleDateFormat ...

  6. 你不可不知的Java引用类型之——软引用

    定义 软引用是使用SoftReference创建的引用,强度弱于强引用,被其引用的对象在内存不足的时候会被回收,不会产生内存溢出. 说明 软引用,顾名思义就是比较"软"一点的引用. ...

  7. JHipster技术简介

    本文简单介绍Jhipster是什么,为什么用Jhipster,怎么用Jhipster. WHAT - 技术栈 JHipster是什么 JHipster是一个开发平台,用于生成,开发,部署Spring ...

  8. python第四十二天 socket ---ssh

    用scoket 写一个简版的ssh 服务端: #!usr/bin/env python #-*-coding:utf-8-*- # Author calmyan import socket,os s= ...

  9. EntityFramework Code-First 简易教程(七)-------领域类配置之Fluent API

    Fluent API配置: 前面我们已经了解到使用DataAnotations特性来覆写Code-First默认约定,现在我们来学习Fluent API. Fluent API是另一种配置领域类的方法 ...

  10. 用Python实现数据结构之映射

    映射与字典 字典dict是Python中重要的数据结构,在字典中,每一个键都对应一个值,其中键与值的关系就叫做映射,也可以说是每一个键都映射到一个值上. 映射(map)是更具一般性的数据类型,具体到P ...