代码框架
包含两个模块相互配合,分别为地面站和通信节点;
其中逻辑就是两个模块的通信交互,地面站和Prometheus收发程序的其余功能多数都是基于此进行的扩展开发。
地面站和通信节点的代码框架以及流程可以参考下图:(注:此地面站为专业版地面站)
注意:Prometheus收发程序为Prometheus通信节点
接口介绍
主要介绍一下地面站中一些核心接口函数,介绍如下:
/**
* @brief 模版函数,编码函数
*
* @param send_mode 发送方式,TCP或者UDP
* @param msg 进行编码的结构体
* @param id 该数据的发送者ID,输入为0时,则按初始化中的无人机ID为准
* @return int 返回编码后的长度
*/
template <typename T>
int encodeMsg(int8_t send_mode, T msg,int id = 0);
/**
* @brief 解码函数
*
* @param buff 接收到的数据
* @param send_mode 接收到的方式,TCP或者UDP
* @return int 返回解码后得到的结构体对应的ID
*/
int decodeMsg(char *buff,int8_t send_mode);
/**
* @brief 返回结构体ID
*
* @param msg 结构体
* @return uint8_t 结构体对应的ID
*/
template <typename T>
uint8_t getMsgId(T msg);
/**
* @brief UDP发送函数
*
* @param msg_len 发送的数据的长度
* @param target_ip 发送的目标地址
*/
void sendMsgByUdp(int msg_len, std::string target_ip);
/**
* @brief TCP发送函数
*
* @param msg_len 发送的数据的长度
* @param target_ip 发送的目标地址
*/
void sendMsgByTcp(int msg_len, std::string target_ip);
/**
* @brief 创建TCP服务端并返回socket标识符
*
* @param port 端口号
* @return int TCP服务端socket标识符
*/
int waitConnectionFromGroundStation(const int port);
/**
* @brief 创建UDP服务端并返回socket标识符
*
* @param port 端口号
* @return int UDP服务端socket标识符
*/
int waitConnectionFromMulticast(const int port);