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 == 16) || (lowhexdata == 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 = Widget::QString2Hex(ui->lineEdit->text());      //转换为16进制
com->write(senddata);

你可能感兴趣的:(qt)