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);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM