• 6060阅读
  • 3回复

[提问]QByteArray数据转换问题!!!求教大虾!! [复制链接]

上一主题 下一主题
离线leolio
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-18
QByteArray数据转换问题!!!求教大虾!!
小弟正用Qt写一个工控面板~现在涉及到从下位机读取数据后与人工预设值的比较问题,Qt串口类默认返回类型是QByteArray,人工在LineEdit中输入预设值,所以小弟想分别通过.toint() 函数将上述两者分别转换换为int类型用于数值比较,代码如下:
  1.           bool ok1,ok2;
  2.      QByteArray temp = myCom ->readAll();//将下位机数据读入到temp中     qDebug()<<temp;//调试输出显示下位机上传数据     ui->textBrowser->insertPlainText(temp);//PlainText输出上传数据     int temptest2 = temp.toInt(&ok1,10); //将数据转换为Int类型     qDebug()<<temptest2;//输出转换值     int  temptar3 = ui->tarValLineEdit->text().toInt(&ok2,10);//将目标值转换为Int类型     qDebug()<<temptar3;//输出显示目标值     intTimAqu++;//采集点数增加    if(temptar3>temptest2)//若目标值大于采集值则继续采集     {          myCom ->write(ui->orderLabel->text().toAscii());     }

结果输出为:
"+1.24124005E+0"
0
1000
""
0
1000
"4
"
0
1000
""
0
1000
小弟在这里有一些疑问:
1.单独输出temptest2,则输出显示如下:
0
0
4
0
额,这怎么解释呢?为甚么int类型的数据输出后变成了一列数据呢?
2.单独输出temp,则输出显示如下:
"+1.22472061E+0"
""
"4"
"
"
temp是QByteArray类型的数据,下位机实际上传的数据应为12247.2061,4表示10的四次方,那么这种输出到底体现了QByteArray一种什么格式呢?
3.单独输出temptar3目标值时,显示输出如下:
1000
1000
1000
1000
这是我在plaintext中输入的目标值1000,显示没有问题,但是为什么执行一次qDebug()会输出四次1000呢?
5.也是最重要的问题!就是即使采集值比目标值大的多if()比较的结果却始终是temptar3>temptest2结合第一问中单独输出temptest2时显示数据的分析,是不是因为比较时temptest2始终是0的缘故呢?
正在赶进度,很紧迫的想解决上述问题,跪求解决问题方法!
Qt Creator Manual小弟已经研究了一周了,还是没有结果,各位大虾~~%>_<%~~~求救哇~~~~
离线leolio
只看该作者 1楼 发表于: 2011-05-18
抱歉,小弟第一次贴代码没想到是这种效果,也请哪位大虾指点一下发帖时贴代码的技巧~~~谢谢啦~~~~~
离线leolio
只看该作者 2楼 发表于: 2011-05-18
唉~%>_<%~~~~自己给顶一下~~
离线wkei007
只看该作者 3楼 发表于: 2012-08-09
myCom->readAll 会不会导致显示阻塞,,?我也刚接触这个,顶楼主!
快速回复
限100 字节
 
上一个 下一个