优化tcp发送数据
This commit is contained in:
parent
b5038030c6
commit
5018130ea1
@ -363,6 +363,7 @@ void MainWindow::OnButtonGroup(QAbstractButton * slot_btn)
|
||||
Tachometer *tachometer = new Tachometer();
|
||||
tachometer->setWindowModality(Qt::ApplicationModal);
|
||||
tachometer->show();
|
||||
|
||||
}
|
||||
}
|
||||
if(slot_btn != NULL && ui->pushButton_alarm->isChecked()){
|
||||
@ -483,54 +484,64 @@ void MainWindow::sendUpgradePackage(int slot)
|
||||
// 读取文件内容
|
||||
QByteArray fileData = file.readAll();
|
||||
int fileSize = fileData.size();
|
||||
qDebug() << "fileSize1" << fileSize;
|
||||
fileSize = myHtonl(fileSize);
|
||||
qDebug() << "fileSize2" << fileSize;
|
||||
//fileSize = myHtonl(fileSize);
|
||||
|
||||
qDebug() << "fileSize" << fileSize <<endl;
|
||||
// 创建 PackageHead 结构体
|
||||
PackageHead header = { {0xAA, 0x55, 0xAA}, 3, fileSize,0,{} };
|
||||
// 计算文件的 CRC 校验和
|
||||
|
||||
qDebug() << "filheader.file_md5" << slot <<endl;
|
||||
UpgradeCardReq upgrade_car_req;
|
||||
|
||||
uint8_t card_id;
|
||||
if(slot == 0)
|
||||
upgrade_car_req.card_id = 0xFF;
|
||||
card_id = 0xFF;
|
||||
else
|
||||
upgrade_car_req.card_id = slot & 0xFF;
|
||||
card_id = slot & 0xFF;
|
||||
|
||||
header.crc = calculate_crc(upgrade_car_req.card_id,fileData);
|
||||
|
||||
header.len = fileSize;
|
||||
qDebug() << "filheader.crc" << header.crc;
|
||||
// 发送头部数据
|
||||
QByteArray packet(reinterpret_cast<char*>(&header), sizeof(PackageHead));
|
||||
//QByteArray packet(reinterpret_cast<char*>(&header), sizeof(PackageHead));
|
||||
|
||||
// 发送文件内容
|
||||
socket.write(packet); // 发送头部
|
||||
// socket.write(packet); // 发送头部
|
||||
// socket.waitForBytesWritten();
|
||||
|
||||
// QByteArray packet2(reinterpret_cast<char*>(&upgrade_car_req), sizeof(UpgradeCardReq));
|
||||
// socket.write(packet2); // 发送头部
|
||||
// socket.waitForBytesWritten();
|
||||
|
||||
// socket.write(fileData); // 发送文件数据
|
||||
// socket.waitForBytesWritten();
|
||||
//QByteArray send_buf;
|
||||
char *send_buf = NULL;
|
||||
send_buf = (char *)malloc(sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size() + 1);
|
||||
memset(send_buf,0,sizeof(PackageHead) + sizeof(UpgradeCardReq) + fileData.size() + 1);
|
||||
memcpy(send_buf, &header, sizeof(PackageHead));
|
||||
memcpy(send_buf + sizeof(PackageHead), &card_id, 1);
|
||||
memcpy(send_buf + sizeof(PackageHead) + 1, fileData.data(), fileData.size());
|
||||
socket.write(send_buf);
|
||||
socket.waitForBytesWritten();
|
||||
// 发送头部
|
||||
// qDebug() << "File sent successfully";
|
||||
// // 等待服务器响应(根据需要处理响应)
|
||||
|
||||
QByteArray packet2(reinterpret_cast<char*>(&upgrade_car_req), sizeof(UpgradeCardReq));
|
||||
socket.write(packet2); // 发送头部
|
||||
socket.waitForBytesWritten();
|
||||
|
||||
socket.write(fileData); // 发送文件数据
|
||||
socket.waitForBytesWritten();
|
||||
|
||||
qDebug() << "File sent successfully";
|
||||
// 等待服务器响应(根据需要处理响应)
|
||||
|
||||
if (socket.waitForReadyRead()) {
|
||||
QByteArray response = socket.readAll();
|
||||
UpgradeRsp resp;
|
||||
QByteArray byteArray = response.mid(sizeof(PackageHead));
|
||||
QDataStream stream(&byteArray, QIODevice::ReadOnly);
|
||||
stream >> resp.code ;
|
||||
if(resp.code == 1){
|
||||
QMessageBox::information(this, QStringLiteral("提示"), "上传成功!");
|
||||
}
|
||||
qDebug() << "Server response: " << resp.code;
|
||||
}
|
||||
// if (socket.waitForReadyRead()) {
|
||||
// QByteArray response = socket.readAll();
|
||||
// UpgradeRsp resp;
|
||||
// QByteArray byteArray = response.mid(sizeof(PackageHead));
|
||||
// QDataStream stream(&byteArray, QIODevice::ReadOnly);
|
||||
// stream >> resp.code ;
|
||||
// if(resp.code == 1){
|
||||
// QMessageBox::information(this, QStringLiteral("提示"), "上传成功!");
|
||||
// }
|
||||
// qDebug() << "Server response: " << resp.code;
|
||||
// }
|
||||
// 关闭文件和连接
|
||||
file.close();
|
||||
socket.disconnectFromHost();
|
||||
if(send_buf != NULL)
|
||||
free(send_buf);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user