62 lines
2.8 KiB
C++
62 lines
2.8 KiB
C++
#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;
|
|
}
|