• 2812阅读
  • 0回复

[提问]为什么第一种获得串口数据的写法有问题? [复制链接]

上一主题 下一主题
离线a2886015
 

只看楼主 倒序阅读 楼主  发表于: 2016-11-16


void MainWindow::readMyCom()
{
    QByteArray temp = myCom->readAll();
if(!temp.isEmpty()){
                for(int i = 0; i < temp.count(); i++){
                    QString s;
                    s.sprintf("0x%02x, ", (unsigned char)temp.at(i));
                    //0x是前缀,02是显示2位数,x代表16进制
                    //当然这里的意思是将temp当前值赋给s
                    bool ok;
                    myModbus->receBuf[myModbus->receCount]=(unsigned char)s.toInt(&ok,16);
         }
    }
}
这是第一种接收串口传上来的数据的写法


void MainWindow::readMyCom()
{
    QByteArray temp = myCom->readAll();
if(!temp.isEmpty()){
                for(int i = 0; i < temp.count(); i++){
myModbus->receBuf[myModbus->receCount]=(unsigned char)temp.at(i);
                    (myModbus->receCount)++;
         }
    }
}
这是第二种接收串口传上来的数据的写法

我利用单片机将数据传上来,传输的数据为
unsigned char testdata[7]={1,3,1,2,10,201,35};可是第一种写法收到的数据全为0,第二种写法收到的数据才是正常的。第一种写法错在哪个地方?
快速回复
限100 字节
 
上一个 下一个