medical_SDK/main.cpp

62 lines
2.8 KiB
C++
Raw Normal View History

2025-07-28 11:56:50 +08:00
#include "headfile.h"
// 辅助函数:打印多通道数据
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_try() {
try {
// 1. 读取原始二进制文件
std::vector<uint8_t> file_content = FileManager::readBinaryFile("C:/Users/29096/Desktop/work/data1.dat");
Mapper mapper;
// 2. 解析设备数据包 - 需要实现此函数
std::vector<SensorData> all_data = parse_device_data(file_content);
// 3. 创建信号处理器实例
SignalProcessor processor;
// 4. 遍历所有数据包
for (auto& data : all_data) {
// 打印原始数据信息
// print_parsed_result(data); // 需要实现此函数
std::cout << "Before mapping (ECG-12):" << std::endl;
std::cout << "Packet SN: " << data.packet_sn << ", Data Type: " << static_cast<int>(data.data_type) << std::endl;
SensorData mapped_ecg_12lead = mapper.DataMapper(data);
SensorData processed_ecg_12_lead = processor.preprocess_signals(mapped_ecg_12lead);
std::cout << "After mapping (ECG-12):" << std::endl;
std::cout << "Packet SN: " << mapped_ecg_12lead.packet_sn << ", Data Type: " << static_cast<int>(mapped_ecg_12lead.data_type) << std::endl;
print_channel_data(mapped_ecg_12lead.channel_data);
std::cout << "After processed (ECG-12):" << std::endl;
std::cout << "Packet SN: " << mapped_ecg_12lead.packet_sn << ", Data Type: " << static_cast<int>(mapped_ecg_12lead.data_type) << std::endl;
print_channel_data(processed_ecg_12_lead.channel_data);
}
}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();
return 0;
}