如图所示,要传输的数据大小为binSize=36128字节,如果每次传输byteToSend = 1024个字节。程序代码要如何写才能分段(每段1024个字节)完整的把数据(大小为binSize=36128字节)完整的发送出去?PS:最后一段发送的有效数据不及1024个字节时以F来填充。 本人C++及Qt新手,几天了都没有解决这个问题,如果方便的话请帮忙写下具体的代码,十分感谢!
可复制的图中代码如下:
void FirmwareUpdate::sendBinDataSlot(){ QFile* file = new QFile; file->setFileName(fileName); bool ok = file->open(QIODevice::ReadOnly); if(!ok) { QMessageBox::information(this,"Error Message", "File Open Error" + file->errorString()); return; } QDataStream in(file); char * binByte = new char[binSize]; in.setVersion (QDataStream::Qt_5_9); in.readRawData (binByte, binSize); //binSize=36128 ;读出文件到缓存。 /*** int readRawData(char *, int len); ***/ const char* charBinData=binByte; int byteToSend = 1024; tmp = startWidget->my_serialport->write(charBinData, byteToSend); /*** qint64 QIODevice::write(const char *data, qint64 maxSize) Writes at most maxSize bytes of data from data to the device. Returns the number of bytes that were actually written, or -1 if an error occurred. ***/ qDebug()<<"binSize:"<<binSize<<";"<<"charBinData:"<<charBinData<<";"<<"tmp"<<tmp<<endl;//binSize: 36128 ; temp 1024 delete[] binByte;}