qt的QSerialPort傳輸較大的串口數據時如何分段發送?



如圖所示,要傳輸的數據大小為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;}

1 个解决方案

#1


已解決,利用定時器。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com