Qt串口接收时的数据处理

void ComDialog::ReadMyCom()
{
    //读取串口数据
    QByteArray byte_data = myCom->readAll();
  //  char buf[10];
    //将读取到的数据进行转化
    QString strDisplay;
 
    if(m_isHexDisplay)//十六进制显示
    {
        QString str = byte_data.toHex().data();
        str = str.toUpper();//转换为大写
        for(int i = 0;i
        {
            QString st = str.mid(i,2);//返回一个字符串 从指定位置返回n个字符
            strDisplay += st;
            strDisplay += " ";//每个字节中间的空格
        }
    }
    else//字符显示
    {
            strDisplay = QString(byte_data);
    }
    //是否显示数据
    if(true == DisplayFlag)
    {
        //将数据显示在主窗口的文本浏览器中
        main_ui->ReceiveDatatextBrowser->insertPlainText(strDisplay);
    }
 
 //  main_ui->textBrowser->insertPlainText(byte_data.toHex().begin());
 //  if((byte_data.contains("{"))&&(byte_data.contains("}")))//只要接收的数据中有这些判断的字符就为真(不管在那个位置)
 //  {
 //       main_ui->lcdNumber->display(temp);//然后在这里面显示就不行   我猜想要把判断的标示移除或者想一下其他的数据转换方式。
 //  }
  //switch(byte_data.at(0))//这两种都行
    switch( byte_data[0])
   {
   case 'a':
        byte_data[0]=10;//不是10还不行
        main_ui->lcdNumber->display( byte_data.toInt() );//必须要是数字字符串才能正确转换到LCD部件显示
       break;
   case 'b':
        byte_data[0]=10;
        main_ui->lcdNumber_2->display( byte_data.toInt() );
       break;
   case 'c':
        byte_data[0]=10;
        main_ui->lcdNumber_3->display( byte_data.toInt() );
       break;
   case 'd':
        byte_data[0]=10;
        main_ui->lcdNumber_4->display( byte_data.toInt() );
       break;
   case 'e':
        byte_data[0]=10;
        main_ui->lcdNumber_5->display( byte_data.toInt() );
       break;
   case 'f':
        byte_data[0]=10;
        main_ui->lcdNumber_6->display( byte_data.toInt() );
       break;
   default:;
   }
}
这个类QByteArray  是可以直接带下标byte_data [0]使用的,可以赋值,可以判断。

Qt串口接收时的数据处理_第1张图片

然后我就用了6个LCD部件用来显示,刚开始我不知道怎么去判断什么数据显示在什么位置,也就是不知道串口接收完一个整包数据怎么去判断包头,现在按照上面的接收就可以了,但是还是不知道为什么一定要赋值10,我想直接赋值0,但是这样LCD就不会显示了,我知道LCD好像是字符串转换为十进制,但是当字符串里面有字母标点或特殊符号它就会显示0 ,所以我就判断完第一个字节就赋值10,这样显示就不会有问题了,就是不知道为了一定要这样做。

Qt串口接收时的数据处理_第2张图片

你可能感兴趣的:(自学qt)