qt的QSerialPort传输较大的串口数据时如何分段发送?

l7890 2017-12-11 08:37:56

如图所示,要传输的数据大小为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;}
...全文
1041 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dffdsafvsd 2018-12-03
  • 打赏
  • 举报
回复
请问怎么使用定时器解决,谢谢
l7890 2017-12-15
  • 打赏
  • 举报
回复
已解决,利用定时器。

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧