导航:首页 > 操作系统 > android发送字符串

android发送字符串

发布时间:2025-01-15 22:57:28

android 蓝牙如何发送十六进制数据

与蓝牙模块通信最重要的地方就是数据的发送和接收,因为是底层的操作,所以更多是发送16进制数据。
进制转换是我们程序员的必修课,属于基本素质。这里需要的是将字节数组转化为16进制字符串,方法都是通用的:

[java] view plain
public static String bytesToHexString(byte[] bytes) {
String result = "";
for (int i = 0; i < bytes.length; i++) {
String hexString = Integer.toHexString(bytes[i] & 0xFF);
if (hexString.length() == 1) {
hexString = '0' + hexString;
}
result += hexString.toUpperCase();
}
return result;
}

接下来就是发送数据。
发送数据非常简单,之前有关于蓝牙编程的博文已经讲到了,http://www.cnblogs.com/wenjiang/p/3200138.html,这里只讲重要的一点:大容量字节数组的发送。
我们需要发送64个字节的数组,如果一次性发送过去,单片机那里可能无法及时处理以致没有任何回应,因为单片机那里是设置了数据接收的延时时间。要想畅通的与蓝牙模块通信,考虑这个时间差非常重要。调整字节的发送速率,就成为非常关键的一步。值得注意的是,数据的发送是非常快的,就是因为这样才会导致单片机那里无法及时处理,所以,每次发送后的延时是非常重要的。我们单片机那里的延时是10毫秒,所以我们选择发送完每个字节后就延时10毫秒再发下个字节。
[java] view plain
for (byte b : bytes) {
out.write(b);
Thread.sleep(10);
}

具体的延时时间和字节发送速率得看单片机那里程序的设置。
在使用InputStream的时候,必须注意,InputStream的读取是阻塞的。这点在一般的情况下是不会影响到我们的程序,但是记住这个情况对于代码的设计是非常重要的,尤其是在考虑用户体验的时候。
无参数的read()是每次只从流中读取一个字节,这种做法效率非常低,但是简单,像是读取整数值这种情况,使用read()就非常好,但如果是16进制字符串呢?使用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,这样一次就能读取多个字节。
如果是读取多个字节,我们常常使用InputStream.available()方法来获取数据流中可读字节的个数。读取本地数据的时候,该方法发挥得非常好,但如果是读取非本地数据,就可能出现字节遗漏的问题,像是要读取100个字节,可能就是90个,甚至是0个。
出现0个的情况就是单片机那边没有响应或者字节还没发送过来,这时我们就需要一个循环来保证我们能够拿到数据:
[java] view plain
int count = 0;
while (count == 0) {
count = in.available();
}
byte[] bytes = new byte[count];
in.read(bytes);

但像是上面的90个字节的情况就是字节遗漏。对于这种情况,解决方法也很简单:

[java] view plain
byte[] bytes = new byte[count];
int readCount = 0; // 已经成功读取的字节的个数
while (readCount < count) {
readCount += in.read(bytes, readCount, count - readCount);
}

阅读全文

与android发送字符串相关的资料

热点内容
珠海存储服务器地址怎么找 浏览:413
md5算法字符串长度 浏览:4
可以二次虚化的云服务器 浏览:779
思科2500编程器固件 浏览:235
php开发桌面应用程序 浏览:904
支付宝app哪里可以加油 浏览:71
路由器ttl刷编程器固件 浏览:719
纵向加密密钥协商状态时间 浏览:851
mc花雨庭服务器有些什么 浏览:809
linux制作网页 浏览:19
xlsx加密忘记了怎么办 浏览:999
app湖北农信怎么解约 浏览:426
在线编程教育项目 浏览:759
电信采购5万台服务器干什么用 浏览:200
腾讯云服务器登录地址 浏览:988
程序员在地铁上写字 浏览:555
解压包未知文件格式怎么办 浏览:577
程序员破坏数据库 浏览:331
sh格式如何编译 浏览:344
虚拟服务器云主机哪个好 浏览:98