fix recall

This commit is contained in:
lnk
2025-10-30 20:57:19 +08:00
parent 06a2f3a75b
commit 5e63adc8f9
5 changed files with 509 additions and 69 deletions

View File

@@ -817,7 +817,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
//提取数据
const uint8_t* data_ptr = parser.RecvData.data() + 14;
size_t data_size = parser.RecvData.size() - 14;
size_t data_size = parser.RecvData.size() - 14;
// 如果是第一帧,记录文件名
if (current_frame == 1) {
@@ -873,10 +873,43 @@ void process_received_message(string mac, string id,const char* data, size_t len
file_data.size());
std::cout << "File saved: " << file_path << std::endl;
//调试用
// 若是 .cfg先查看并打印内容限长
{
auto dot = file_path.find_last_of('.');
std::string ext = (dot == std::string::npos) ? "" : file_path.substr(dot);
// 转小写比较
for (auto& c : ext) c = static_cast<char>(std::tolower(static_cast<unsigned char>(c)));
if (ext == ".cfg") {
std::ifstream fin(file_path, std::ios::binary);
if (!fin) {
std::cerr << "[CFG] open failed: " << file_path << " (" << std::strerror(errno) << ")\n";
} else {
// 读取前 8KB 作为预览,避免日志过大
constexpr size_t kMaxPreview = 8 * 1024;
std::string buf;
buf.resize(kMaxPreview);
fin.read(&buf[0], static_cast<std::streamsize>(kMaxPreview));
std::streamsize got = fin.gcount();
buf.resize(static_cast<size_t>(got));
std::cout << "================ [CFG PREVIEW BEGIN] ================\n";
std::cout << "path=" << file_path << ", size=" << file_data.size()
<< " bytes, preview=" << got << " bytes\n";
// 直接打印文本预览;如果包含不可见字符,会按原样输出
std::cout.write(buf.data(), static_cast<std::streamsize>(buf.size()));
if (static_cast<size_t>(got) == kMaxPreview && fin.peek() != EOF) {
std::cout << "\n...[truncated]\n";
}
std::cout << "\n================ [CFG PREVIEW END] ==================\n";
}
}
}
//使用接口上送文件lnk20250826
std::string filename;
SendFileWebAuto(id, file_path, file_path, filename);//如果是补招文件的下载,下载后也是直接上传,上传成功后更新补招状态即可
std::cout << "File upload: " << filename << std::endl;
//SendFileWebAuto(id, file_path, file_path, filename);//如果是补招文件的下载,下载后也是直接上传,这样单纯补招波形也可以保证传文件
std::cout << "File download success wait for upload: " << filename << std::endl;
//通知文件上传
on_device_response_minimal(static_cast<int>(ResponseCode::OK), id, 0, static_cast<int>(DeviceState::READING_FILEDATA));
@@ -889,7 +922,7 @@ void process_received_message(string mac, string id,const char* data, size_t len
}
//当前文件下载完毕,调整为空闲处理下一项工作(如果这里后续有新文件等待下载,一般已经存入等待队列等候处理了,调成空闲状态后直接就会开始新文件的下载工作)
ClientManager::instance().change_device_state(id, DeviceState::READING_FILEDATA);
ClientManager::instance().change_device_state(id, DeviceState::IDLE);
}
}
@@ -2080,9 +2113,9 @@ void process_received_message(string mac, string id,const char* data, size_t len
<< ", 特征幅值: " << record.fMagntitude << " pu"
<< ", 时间戳: " << record.triggerTimeMs << "ms" << std::endl;
//记录补招上来的暂态事件,如果需要前置自行下载波形才需要这个接口
/*append_qvvr_event(id,event.head.name,
record.nType,record.fPersisstime,record.fMagntitude,record.triggerTimeMs,record.phase);*/
//记录补招上来的暂态事件
append_qvvr_event(id,event.head.name,
record.nType,record.fPersisstime,record.fMagntitude,record.triggerTimeMs,record.phase);
//直接发走暂态事件
transfer_json_qvvr_data(id,event.head.name,
record.fMagntitude,record.fPersisstime,record.triggerTimeMs,record.nType,record.phase,"");
@@ -2092,9 +2125,6 @@ void process_received_message(string mac, string id,const char* data, size_t len
recordlist.push_back(record);
}
//暂时移除CRC校验相关
//// ========== 新增 CRC 验证 ==========