#include "sensor_mems.h" #include "orbit_info.h" #include "libconvert.h" #include "liblog.h" #include #include #include #include #include "GNCFunction.h" int32_t Delta_angle_int[3]; uint16_t Integ_Cnt_int[3]; double Gyro2MtxInstall[3][3] = { {-0.000872664182949154, -0.999999237792072, 0.000873425726015331}, {0.999999238456644, -0.000873425726015331, -0.000871902307307135}, {0.000872664515235150, 0.000872664182949154, 0.999999238456644} }; double MemsOutputPeriod = 1.0; void GetGyro2Meas(double MeasGyro2[3], double AttiVelECI[3], double Gyro2MtxInstall[3][3], double MemsOutputPeriod); /// @brief 生成MEMS遥测帧 /// @param frame:生成的遥测帧数据 /// @return uint8_t generate_mems_frame(uint8_t *frame, double AttiVelECI[3]) { MEMS_Frame mems; memset(frame,0,MEMS_FRAME_LENGTH); memset( (uint8_t *)&mems.header,0,MEMS_FRAME_LENGTH); double MeasGyro2[3]; GetGyro2Meas(MeasGyro2, AttiVelECI, Gyro2MtxInstall, MemsOutputPeriod); //printf("MeasGyro2 is %10.3f \t %10.3f \t %10.3f\r\n", MeasGyro2[0], MeasGyro2[1], MeasGyro2[2]); spdlog::info("函数{0}计算MEMS输出为:{1:10.3f},{2:10.3f},{3:10.3f}",__FUNCTION__, MeasGyro2[0], MeasGyro2[1], MeasGyro2[2]); mems.header = 0x97; mems.x_angle_delta[0] = (uint8_t)((Delta_angle_int[0] & 0x00FF0000) >> 16); mems.x_angle_delta[1] = (uint8_t)((Delta_angle_int[0] & 0x0000FF00) >> 8); mems.x_angle_delta[2] = (uint8_t)((Delta_angle_int[0] & 0x000000FF)); mems.x_mems_integral_Cnt = htons(Integ_Cnt_int[0]); mems.y_angle_delta[0] = (uint8_t)((Delta_angle_int[1] & 0x00FF0000) >> 16); mems.y_angle_delta[1] = (uint8_t)((Delta_angle_int[1] & 0x0000FF00) >> 8); mems.y_angle_delta[2] = (uint8_t)((Delta_angle_int[1] & 0x000000FF)); mems.y_mems_integral_Cnt = htons(Integ_Cnt_int[1]); mems.z_angle_delta[0] = (uint8_t)((Delta_angle_int[2] & 0x00FF0000) >> 16); mems.z_angle_delta[1] = (uint8_t)((Delta_angle_int[2] & 0x0000FF00) >> 8); mems.z_angle_delta[2] = (uint8_t)((Delta_angle_int[2] & 0x000000FF)); mems.z_mems_integral_Cnt = htons(Integ_Cnt_int[2]); uint8_t checksum = 0; uint8_t *buffer = (uint8_t *)&mems.header; for(int kc = 0;kc