medical_SDK/main.cpp

82 lines
3.2 KiB
C++

#include "headfile.h"
std::vector<float> heart_rate;
// 辅助函数:打印多通道数据
void print_multi_channel(const std::vector<std::vector<float>>& channels) {
for (size_t ch = 0; ch < channels.size(); ++ch) {
std::cout << " Channel " << ch << ": ";
for (size_t i = 0; i < channels[ch].size(); ++i) {
std::cout << std::fixed << std::setprecision(2) << channels[ch][i] << " ";
}
std::cout << std::endl;
}
}
// 辅助函数:打印通道数据
void print_channel_data(const std::variant<std::vector<float>, std::vector<std::vector<float>>>& channel_data) {
if (std::holds_alternative<std::vector<float>>(channel_data)) {
const auto& single_channel = std::get<std::vector<float>>(channel_data);
} else if (std::holds_alternative<std::vector<std::vector<float>>>(channel_data)) {
const auto& multi_channel = std::get<std::vector<std::vector<float>>>(channel_data);
print_multi_channel(multi_channel);
}
}
void test_mit_bih() {
try {
// 读取MIT-BIH数据文件
std::vector<uint8_t> file_content = FileManager::readBinaryFile("C:/Users/29096/Desktop/work/mit-bih-arrhythmia-database-1.0.0/222.dat");
// 解析数据
std::vector<SensorData> all_data = parse_device_data(file_content);
// 保存结果
save_to_csv(all_data, "mit_bih_output.csv");
std::cout << "MIT-BIH数据处理完成" << std::endl;
std::cout << "Press Enter to exit..." << std::endl;
std::cin.get();
} catch (const std::exception& e) {
std::cerr << "处理错误: " << e.what() << std::endl;
}
}
void test_try() {
try {
// 1. 读取原始二进制文件
std::vector<uint8_t> file_content = FileManager::readBinaryFile("C:/Users/29096/Documents/WeChat Files/wxid_sh93l5lycr8b22/FileStorage/File/2025-07/ecg_data_raw.dat");
Mapper mapper;
SignalProcessor processor;
MetricsCalculator calculator;
// 2. 解析设备数据包 - 需要实现此函数
std::vector<SensorData> all_data = parse_device_data(file_content);
std::cout<<"1"<<std::endl;
for(auto& mapped_data:all_data)
{
mapped_data = mapper.DataMapper(mapped_data);//通道映射
}
save_to_csv(all_data, "channel_data_mapped_.csv");
for(auto& processed_data:all_data)
{
processed_data = processor.preprocess_signals(processed_data); //十二导联心电
}
for(auto& calculated_data:all_data)
{
heart_rate.push_back(calculator.calculate_heart_rate_ecg(calculated_data,250)); //十二导联心电
}
for(uint16_t i;i<heart_rate.size();i++) std::cout<<heart_rate[i]<<std::endl;
save_to_csv(all_data, "channel_data_processed_.csv");
}catch (const std::exception& e) {
std::cerr << "解析错误: " << e.what() << std::endl;
std::cout << "Press Enter to exit..." << std::endl;
std::cin.get();
return ;
}
std::cout << "Press Enter to exit..." << std::endl;
std::cin.get();
}
int main() {
SetConsoleOutputCP(CP_UTF8);
test_try(); // 测试MIT-BIH数据处理
return 0;
}