求助,求大神,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 程序保持一致追答

如果一致的话 还是乱码就说明是编码格式的问题

在qt 程序中设置编译编码格式

追问

波特率是一样的 在调成不一样的时候是乱码 一样的时候是空值啊 什么也不显示

追答

空值的话 你把大于等于8的条件去掉 试一下有什么现象

什么现象?

亲 在线等啊

追问

一样还是空值 刚去吃了个饭 q吧1564340476 没财富了

追答qint8 outChar = 0;
out >> outChar;
QString str = QString("%1").arg(outChar&0XFF,2,16,QLation1Char(\'0\'));

 这是16进制转化成字符串 你看看有没有帮助。。。我也是初学

参考技术A 设4800波特率,还有16进制发送的要勾上,试试。 参考技术B 收到了十六进制数据,转换即可追问

其实问题就是……怎么转换…

以上是关于求助,求大神,android与串口通信的主要内容,如果未能解决你的问题,请参考以下文章

大神求助.Qt串口单片机通信接收到的为啥是乱

AT89C51单片机进行多机通信等问题求教大神!!明天考试!!在线高分求高人

Android UART 串口通信

求助:很急!关于STC 8位单片机上电后,无法进入串口接收中断的问题

两块arduino之间的通信怎么实现,而且需要手机也可以连上一个蓝牙通信,求大神解答

Android蓝牙串口通信模板