这个项目是移植到开发板上的程序,以前在windows下通过串口收到的QByteArray数据通过temp[i] !=0xEB这种写法没有出过错误。由于在开发板上执行,串口没有通过QT自带的SerialPort类接收数据,并且无法打断点,所以只能对比打印来判断。
QByteArray temp = QByteArray(s_data);//= myCom->readAll();
if(temp[0] != 0xEB)
qDebug()<<"erro1";
if(temp[1] != 0x90)
qDebug()<<"erro2";
if(temp[2] != 0x0A)
qDebug()<<"erro3";
if(temp[size-1] != 0xAC)
qDebug()<<"erro4";
通过打印出的数据可以看到,程序在判断0xAC的时候出了问题。这说明类型应该是不存在问题的。但是由于代码功底不是很好,又按照网上的方法转换了好几次。
qDebug()<<"get init";
if(0x2F == ((unsigned char)temp[7]))
{
qDebug()<<"init 1";
init_alldata();
}
if(temp.at(7) == 0x2F)
{
qDebug()<<"init 2";
}
if(s_data[7] == 0x2F)
{
qDebug()<<"init 3";
}
if((int)s_data[7] == 0x2F)
{
qDebug()<<"init 4";
}
最后发现如果在开发板通过char*收到的数据转为QByteArray后会出现这种BUG。