61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
#include <iostream>
|
|
#include <csignal>
|
|
#include <cstdlib>
|
|
#include <string>
|
|
|
|
#include "MemsHS.h"
|
|
|
|
using namespace std;
|
|
|
|
// 全局变量用于信号处理
|
|
static bool running = true;
|
|
|
|
// 信号处理函数
|
|
void signal_handler(int signal) {
|
|
running = false;
|
|
}
|
|
|
|
int main(int argc, char* argv[]) {
|
|
// 设置信号处理
|
|
signal(SIGINT, signal_handler);
|
|
signal(SIGTERM, signal_handler);
|
|
|
|
// 默认配置文件
|
|
string config_file = "MemsHS.json";
|
|
|
|
cout << "[INFO] Starting MEMS Hardware Service" << endl;
|
|
cout << "[INFO] Loading configuration from: " << config_file << endl;
|
|
|
|
// 解析配置文件
|
|
MemsConfig config;
|
|
int result = parse_mems_config_file(config_file.c_str(), &config);
|
|
if (result != 0) {
|
|
cerr << "[ERROR] Failed to parse config file" << endl;
|
|
// 使用默认配置
|
|
config.device = "/dev/tnt5";
|
|
config.baudrate = 115200;
|
|
cout << "[WARN] Using default config: device=" << config.device
|
|
<< ", baudrate=" << config.baudrate << endl;
|
|
}
|
|
|
|
// 初始化MEMS设备
|
|
result = mems_uart_init(config.device.c_str(), config.baudrate);
|
|
if (result == MEMS_ERR_OK) {
|
|
cout << "[OK] MEMS initialized successfully" << endl;
|
|
} else {
|
|
cerr << "[ERROR] Failed to initialize MEMS" << endl;
|
|
}
|
|
|
|
// 初始化FastDDS
|
|
Fastdds_init(0, "Mems_Hardware_Service");
|
|
|
|
// 主循环
|
|
while (running) {
|
|
usleep(1000000); // 每1秒检查一次
|
|
}
|
|
|
|
// 清理
|
|
MEMS_hardware_cleanup();
|
|
|
|
return 0;
|
|
} |