求助,求大神,android与串口通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,求大神,android与串口通信相关的知识,希望对你有一定的参考价值。
参考技术A 转载最近做的项目用到了蓝牙串口通讯功能.毕竟是接触到底层的一些东西,让吾等局限于java编程思想的小菜遇到了一些意想不到的问题.问题一,连接不上蓝牙串口
直接在android自带的蓝牙例子上尝试,发现根本连接不上蓝牙串口,后来对比别人的代码发现uuid不一样.因为以前用过UUID.randomUUID();所以想当然的认为所有uuid都是随机生成的.通过搜索发现,android连接蓝牙串口的话,必须要这个UUID
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
问题二,在读取从蓝牙串口返回的数据时,一直阻塞在inpustream.read(buffer);那里.
起初是因为仿照网上的例子,直接发送指令的16进制字符串过去,返回不到数据.后来通过反编译可以使用的蓝牙串口助手apk发现,需要发送的不是16进制字符串的byte数组.而是将16进制字符串转换成的byte数组.
String string = "01 00 05 07 00 00 00 00";
string = string.replaceAll(" ", ""); byte[] bytes = hexString2Bytes(string);//正确,要发送这个bytes
byte[] bytes = string.getBytes();//错误,发送这个bytes获取不到数据.
附上hexString2Bytes方法
/**
* Convert hex string to byte[] 把为字符串转化为字节数组
*
* @param hexString
* the hex string
* @return byte[]
*/
public static byte[] hexStringToBytes(String hexString)
hexString = hexString.replaceAll(" ", "");
if (hexString == null || hexString.equals(""))
return null;
hexString = hexString.toUpperCase(Locale.getDefault());
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; i++)
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
return d;
/**
* Convert char to byte
*
* @param c
* char
* @return byte
*/
private static byte charToByte(char c)
return (byte) "0123456789ABCDEF".indexOf(c);
得出结论.串口通讯时,如果获取到错误的信息,是不返回数据的.在socket连接时.如果没有获取到数据.inputstream.read(buffer);是会一直阻塞的.
大神求助.!Qt串口单片机通信接收到的为啥是乱码...该怎么写啊???急急急急急急!
windows下qt与单片机串口通信 设的是 9600波特率 收到的时空值 在textbrowser里什么也不显示 其他波特率显示的都是乱码(虽然我知道这句话没什么用,我只是想证明它是收的到的)...求解
void Widget::read_mycom()
ui->label_8->setText("Reading... ...");
qint64 n = mycom->bytesAvailable();
if(n>=8)
QByteArray temp = mycom->readAll();
QString myStrTemp;
myStrTemp = temp;
ui->textBrowser->insertPlainText(myStrTemp);
求解啊求解....不知道是不是编码的问题 谁会啊 给指点一下 拜托了 万分感谢
如果一致的话 还是乱码就说明是编码格式的问题
在qt 程序中设置编译编码格式
追问波特率是一样的 在调成不一样的时候是乱码 一样的时候是空值啊 什么也不显示
追答空值的话 你把大于等于8的条件去掉 试一下有什么现象
什么现象?
亲 在线等啊
追问一样还是空值 刚去吃了个饭 q吧1564340476 没财富了
追答qint8 outChar = 0;out >> outChar;
QString str = QString("%1").arg(outChar&0XFF,2,16,QLation1Char(\'0\'));
这是16进制转化成字符串 你看看有没有帮助。。。我也是初学
其实问题就是……怎么转换…
以上是关于求助,求大神,android与串口通信的主要内容,如果未能解决你的问题,请参考以下文章
AT89C51单片机进行多机通信等问题求教大神!!明天考试!!在线高分求高人
求助:很急!关于STC 8位单片机上电后,无法进入串口接收中断的问题