• 2751阅读
  • 0回复

[提问]关于qt 串口数据的实时显示 [复制链接]

上一主题 下一主题
离线peteryouming
 

只看楼主 倒序阅读 楼主  发表于: 2013-03-25
我最近在做个关于串口数据的实时显示,用了第三方库win_qextserialport,遇到个很奇怪的问题,请大家帮忙看一下:
我接受到的数据为31位,即aa f0 24 B5 C4 53 a3 45 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff, 其中第一二位aa f0为标识,3,4位为X值, 5,6位为Y值,7,8位为Z值。
我采用了EventDriven方式访问。
在readmycom里按照如下写,
QByteArray temp=mycom->readAll();
bool ok;
if (temp.startsWith(datastart)
{
dtempx[i++]=temp.mid(intdatastartlen,2).toHex().toInt(&ok,16);
memcpy(dDatax,dTempx,500*sizeof(double));
saveData(dDatax)
}
这样写可以得到500个X值,这是正确的。
但是如果我要同时取得Y和Z的值,我这样改写:

QByteArray temp=mycom->readAll();
bool ok;
if (temp.startsWith(datastart)
{
dtempx[i++]=temp.mid(intdatastartlen,2).toHex().toInt(&ok,16);
dtempy[i++]=temp.mid(intdatastartlen+2,2).toHex().toInt(&ok,16);
dtempz[i++]=temp.mid(intdatastartlen+4,2).toHex().toInt(&ok,16);
memcpy(dDatax,dTempx,500*sizeof(double));
memcpy(dDatay,dTempy,500*sizeof(double));
memcpy(dDataz,dTempz,500*sizeof(double));
saveData(dDatax)
save Data(dDatay)
save Data(dDataz)
}
然而我得到了:
X值:4192 0 0 4193 0 0
Y值:0 4192 0 0 4193 0
Z值:0 0 4192 0 0 4193
即为是么同一个事件中,X,Y和Z的值不是4192 4192 4192 ? X Y Z 的值不能同时取得,会有0 出现?
谢谢!
快速回复
限100 字节
 
上一个 下一个