Android项目笔记三:wifi传输当中各种数据转换

原创 2016年05月30日 10:55:32

通过wifi和下面单片机通信,避免不了各种数据转换:

安卓端:

一、String转化为float

try {
    floatValue = Float.valueOf(strValue);
    floatTemp  = Float.valueOf(strTemp);
}catch (NumberFormatException e){
    e.printStackTrace();
    continue;
}catch (NullPointerException e){
    e.printStackTrace();
    continue;
}

String转换为其它数据格式类似;

二、socket接收数据处理

this.receivebuf = new byte[20]; //根据协议设置大小

int receivebufLong=0; //实际读出个数

try {
    receivebufLong=this.receiveStream.read(this.receivebuf);//线程阻塞
}catch (IOException e){
    e.printStackTrace();
    Message msg = new Message();
    msg.what=1;
    msg.arg1=1;//出现异常
    UIHandler.sendMessage(msg);
   return;
}

这样socket数据就在receivebuf 数组中,个数为receivebufLong;

1、传输数据0~2000:

假如下面单片机要传输的数据为0~2000,一个字节肯定放不下,那么我们传输一般是这么做

uint16  temp = userData;

uint8    sendBuffer[10];

sendBuffer[0] =userData>>8;

sendBuffer[1] =userData;

rs232TX(sendBuffer,2);

那客户端接收到数据怎么处理呢?我的方法如下:

由于Android中没有无符号数据类型,所以我要用int进行处理:

int userDataIn = 0;

int temp=0;

userDataIn = (int) receivebuf[0];

userDataIn = (userDataIn <<8) & 0x0000FF00;

temp = (int)receivebuf[1];

temp = temp & 0x000000FF;

userDataIn = userDataIn | temp ;

2、传输数据-50.0~124.9温度数据怎么做呢

假设温度传感器读书数据已经转换好,并且是扩大10倍(带一位小数)

int16 temp =0;

temp = ds18b20H;

temp = (temp <<8) & 0xFF00;

temp = temp | ds18b20L;

这个temp就是扩大10倍的温度(带一位小数),可以用于显示等等。。。。

单片机传输类似1,这里讲下客户端转换:

方案一(我的实现):

int  userTemp   = 0;

int userTempH = 0;

int userTempL = 0;

float  user = 0;


userTempH = sendBuffer[0] ;

userTempH = (userTempH << 8) & 0x0000FF00 ;

userTempL = sendBuffer[1] ;

userTempL = userTempL  & 0x000000FF;


if((sendBuffer[0]  == 0x80) && (sendBuffer[1] == 0x00)){

//最大负数

userTemp = -32768;

}else if((sendBuffer[0]  & 0x80) == 0x80){

//负数

userTemp = userTempH | userTempL | 0xFFFF0000;

}else{

//正数

userTemp = userTempH | userTempL | 0x00000000;

}

user  = (float)userTemp;

user = user /10;//实际温度


方案二(我的新想法,未验证):

int  userTemp1   = 0;

int  userTemp 2  = 0;

float  user = 0;


userTemp1   = (int) sendBuffer[0];

userTemp2   = ((int) sendBuffer[1]) & 0x000000FF;

userTemp1  = (userTemp1 << 8) & 0x0000FF00;

userTemp1 = userTemp1 | userTemp2;

if(userTemp1 == 0x00008000){

userTemp1  = -32768;

}else if((userTemp1 & 0x00008000) == 0x00008000){

userTemp1 |= 0xFFFF0000;

}

user  = userTemp1;

user = user/10;//实际温度


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 实现H264编码,解码。并通过WiFi传输实现视频监控。

编解码代码都来自网络,我做的
  • xiaomitop
  • xiaomitop
  • 2014年09月20日 12:18
  • 1056

Android Wifi文件传输

做了个毕设, 是在Wifi环境下,Android手机和
  • yulinyige
  • yulinyige
  • 2014年06月30日 22:42
  • 1771

Android WiFi开发教程(三)——WiFi热点数据传输

在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)——WiFi的搜索和连接。本篇接着简单介绍手机上如何通过WiFi热点进行数据传输。跟蓝...
  • a1533588867
  • a1533588867
  • 2016年09月07日 16:15
  • 4529

Android利用WifiDirect实现文件传输功能

最近需要实现一个使用手机WiFi传输文件的功能,最后是使用WiFiDirect实现了这个功能。 什么是WiFiDirect? 下面是WiFi官方给出的解释: Wi-Fi CERTIFIED Wi-...
  • qq_33782468
  • qq_33782468
  • 2016年10月16日 15:26
  • 1568

android网络开发之WIFI篇

WIFI层次结构 wifi系统的上层接口包括数据部分和控制部分,数据部分通常是一个和以太网类似的网络设备,控制部分用于实现接入点操作和安全验证处理 在软件层,wifi系统包括linux内...
  • aiyuan1996
  • aiyuan1996
  • 2016年10月15日 21:22
  • 2613

android WIFI Socket 文件传输——问题已经解决了,发帖只因高兴--嘿嘿--并不彻底欢迎点评

本来是一个问题贴,最终因为太长了,只能搞成博客了。算是做个记录吧 我的这个Socket是想保持一个长连接,文件可以循环传输 但是我的问题在于,不能抓住文件传输完成的这个时机,导致异常 我的文件...
  • u014587769
  • u014587769
  • 2016年06月12日 04:45
  • 4213

android中wifi的上下层的连接、命令发送

android中wifi的上下层的连接、命令发送 上层可调用的命令在JNINativeMethodgWifiMethods[]中,执行的方式大部分都相同,都是利用管道或socket等方式来传...
  • u011006622
  • u011006622
  • 2015年09月15日 11:05
  • 681

android wifi连接+基于socket的文件数据传输(上)

分客户端和服务器端两大部分介绍: 客户端: 1.WiFi连接: 1.1开启WiFi       public void openWifi () { if (!mWifiMa...
  • u011032983
  • u011032983
  • 2016年06月27日 22:06
  • 3586

Miko Android自学之路 WifiDirect中文最强详解,如何传输数据,如何设置GroupOwener,如何设置客户端以及服务器端

大家好我是Miko,最近有参加一个比赛,用到了WifiDirect技术,于是翻看官方文档之后,想写一个Demo,Google API Sample已经很老了,还是用的Eclipse,宝宝心好累=_=+...
  • MikoGodZd
  • MikoGodZd
  • 2016年03月23日 17:44
  • 6624

Android手机通过wifi进行数据传输(一)

be 本文参照自: Android 连接Wifi和创建Wifi热点 demo 在Android手机上可以通过在收方开启一个wifi热点,然后再发送方连接这个wifi热点。这样他们就在一个局域网,然...
  • hudashi
  • hudashi
  • 2014年05月08日 10:22
  • 30726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android项目笔记三:wifi传输当中各种数据转换
举报原因:
原因补充:

(最多只允许输入30个字)