66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
#include <iostream>
|
|
#include <cstdlib>
|
|
#include <string>
|
|
#include <unistd.h>
|
|
#include <signal.h>
|
|
|
|
#include "ComHS.h"
|
|
|
|
using namespace std;
|
|
|
|
/* 全局运行标志 */
|
|
static volatile int keep_running = 1;
|
|
|
|
/* 信号处理函数 */
|
|
void signal_handler(int signum)
|
|
{
|
|
keep_running = 0;
|
|
cout << "\n[INFO] Received signal " << signum << ", stopping..." << endl;
|
|
}
|
|
|
|
/*
|
|
* 主函数
|
|
*
|
|
* 命令行参数:
|
|
* argv[1]: 遥控串口设备路径 (默认: /dev/ttyUSB0)
|
|
* argv[2]: 遥测串口设备路径 (默认: /dev/ttyUSB1)
|
|
* argv[3]: 波特率 (默认: 115200)
|
|
*/
|
|
int main(int argc, char *argv[])
|
|
{
|
|
const char *dev_telec = "/dev/ttyUSB0"; /* 遥控串口 */
|
|
const char *dev_telem = "/dev/ttyUSB1"; /* 遥测串口 */
|
|
int baudrate = 115200;
|
|
|
|
/* 从命令行参数获取配置 */
|
|
if (argc >= 3) {
|
|
dev_telec = argv[1];
|
|
dev_telem = argv[2];
|
|
}
|
|
if (argc >= 4) {
|
|
baudrate = atoi(argv[3]);
|
|
}
|
|
|
|
|
|
/* 设置信号处理 */
|
|
signal(SIGINT, signal_handler);
|
|
signal(SIGTERM, signal_handler);
|
|
|
|
/* 启动服务 */
|
|
start_scomm_service(dev_telec, dev_telem, baudrate);
|
|
|
|
while (keep_running) {
|
|
static int counter = 0;
|
|
if (counter++ >= 10) {
|
|
counter = 0;
|
|
}
|
|
|
|
sleep(1);
|
|
}
|
|
|
|
cout << "[INFO] Stopping service..." << endl;
|
|
stop_scomm_service();
|
|
|
|
cout << "[INFO] Service stopped successfully" << endl;
|
|
return 0;
|
|
} |