• 5187阅读
  • 1回复

[提问]请教各位使用QDataStream时候如何把数据流分为若干的小段发送到串口去? [复制链接]

上一主题 下一主题
离线flybabys
 

只看楼主 倒序阅读 楼主  发表于: 2011-05-27
请教各位达人,我使用QDataStream已经读取到了存在硬盘上的文件,我的问题是如何把这些数据流分成若干的128个字节的小片段,依次通过串口发送?
下面的代码:
void MainWindow::on_KeyTone1_clicked()
[pre]{[/pre]    unsigned int m,n;
    char *sendbuf;
    unsigned long int i;
    QString filename = QFileDialog::getOpenFileName(
    this,
    "Open Document",
    QDir::currentPath(),
    "WAV files (*.wav);;All files(*.*)");   //设定默认文件类型
    if (!filename.isNull())                 //用户选择了文件
    {
      // 处理文件
        QMessageBox::information(this, "Document", "Has document", QMessageBox::Ok | QMessageBox::Cancel);
        ui->KeyToneL1->setText(filename);   // 在QLineEdit中显示所选择的文件
        QFile file(filename);
        if (file.open(QIODevice::ReadOnly))    //正常打开文件
        {
            i = file.size();    //取得文件大小
            QByteArray file_buffer(file.size(),0);//开辟缓冲区
            QDataStream out(&file);
            out.setVersion(QDataStream::Qt_4_7);
            out.readRawData(file_buffer.data(),i); //读取文件
。。。。。。
                myCom->write(file_buffer,128);  //写串口,问题就在这里
            file.close();
            return;
        }
    }
    else                                    // 用户取消选择
    {
        QMessageBox::information(this, "Document", "No document", QMessageBox::Ok | QMessageBox::Cancel);
    }
}

[pre][/pre]
离线roywillow

只看该作者 1楼 发表于: 2011-05-27
如果只是单纯的从文件中读取一定数量的原始数据,感觉用不到QDataStream,直接用QFile的read就好了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个