首页 > 代码库 > QT 串口通信 数据16进制发送

QT 串口通信 数据16进制发送

在QT中进行串口通信时,很多情况要用到发送16进制的数据。从网上找来了一段代码测试能用:

  static QByteArray QString2Hex(QString str) {  QByteArray senddata; int hexdata,lowhexdata;         int hexdatalen = 0;         int len = str.length(); senddata.resize(len/2);         char lstr,hstr;  for(int i=0; i<len; )  {    hstr=str[i].toAscii();    if(hstr ==  )    {     i++;      continue;   }   i++;             if(i >= len)        break;    lstr = str[i].toAscii();     hexdata = ConvertHexChar(hstr);    lowhexdata = ConvertHexChar(lstr);            if((hexdata =http://www.mamicode.com/= 16) || (lowhexdata =http://www.mamicode.com/= 16))       break;    else     hexdata = hexdata*16+lowhexdata;     i++;     senddata[hexdatalen] = (char)hexdata;     hexdatalen++;  }   senddata.resize(hexdatalen);         return senddata; }static char ConvertHexChar(char ch) {  if((ch >= 0) && (ch <= 9))       return ch-0x30;  else if((ch >= A) && (ch <= F))    return ch-A+10;  else if((ch >= a) && (ch <= f))    return ch-a+10;   else return (-1);}

上面的是转换函数,写入的时候像下面这样写就行了
QByteArray senddata = http://www.mamicode.com/Widget::QString2Hex(ui->lineEdit->text()); //转换为16进制
com->write(senddata);

QT 串口通信 数据16进制发送