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. 使用jQuery和CSS3实现一个数字时钟

    点击进入更详细教程及源码下载     在线演示 我们经常会在网站中看见一个时钟的效果.今天向大家分享一个使用jQuery和CSS3实现一个数字时钟教程. http://www.html5cn.org/ ...

  2. 【读书笔记】iOS-Apple的移动设备硬件

    本书中有一个关键观点是:“硬件并不是特别重要,用户体验才是真正的杀手级应用.“尽管如此,多了解一些你使用的硬件的相关知识,对于整个项目来说是必备的,而对于设计和开发高质量的作品来说敢是不可或缺的. 人 ...

  3. 机器学习算法(SVM)公开课4月25日开讲

    从深蓝到AlphaGo,聪明的人工智能一再“羞辱”人类大脑: 指纹识别.以图搜图.语音助手.无人驾驶···生活里它无孔不入 离不开智能手机的我们,是否已开始被人工智能的“奴役”? 或许,你不需要会运用 ...

  4. Oracle 11g中修改被锁定的用户:scott

    在安装完Oracle10g和创建完oracle数据库之后,想用数据库自带的用户scott登录,看看连接是否成功. 在cmd命令中,用“sqlplus scott/ tiger”登录时,老是提示如下信息 ...

  5. 【详细】【转】C#中理解委托和事件

    文章是很基础,但很实用,看了这篇文章,让我一下回到了2016年刚刚学委托的时候,故转之! 1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托是C#中类型安全的,可以订阅一个或多个具 ...

  6. python第九十五天--js正则

    定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^ ...

  7. HDMI驱动热插拔检测方法

    1. 使用poll机制 1.1 如何使用? a. open("/dev/HPD"); b. poll状态发生变化 c. read确定接上还是接下 1.2 情景分析: APP使用op ...

  8. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  9. [PC]两个蓝牙耳机同时输出相同音源

    需求:和老婆一起玩双人同屏游戏(以撒的结合:抗生),但需要带上蓝牙耳机玩. 设备:2个蓝牙耳机.1个蓝牙接收器.1台Win10系统电脑. 通过关键字搜索出一个解决方案(Output audio to ...

  10. 解析oracle的rownum(转)

    解析oracle的rownum 本人最近在使用oracle的rownum实现分页显示的时候,对rownum做了进一步的分析和研究.现归纳如下,希望能给大家带来收获.      对于rownum来说它是 ...