#include "sensor_star.h" #include "orbit_info.h" #include "GNCFunction.h" #include "libconvert.h" #include "liblog.h" #include // #include // #include // #include double Star1QuatInstall[4] = { 0.454717549603582 ,0.541041969225232 ,0.454793640506779 ,-0.541911692228529 }; double Star2QuatInstall[4] = { 0.454717962112787 ,-0.541835255189012 ,0.453848239109489 ,0.541911346092208 }; void GetStar1Meas(double MeasStar1[4], int* Star1Flag, double Star1QuatInstall[4], double QuatECI[4], double AttiVelECI[3]); void GetStar2Meas(double MeasStar2[4], int* Star2Flag, double Star2QuatInstall[4], double QuatECI[4], double AttiVelECI[3]); /// @brief 生成星敏1遥测帧 /// @param frame:生成的遥测帧数据 /// @return uint8_t generate_star_1_frame(uint8_t *frame, double QuatECI[4], double AttiVelECI[3]) { CAK_TLM_1_STRUCT star; memset(frame,0,CAK_TLM_1_Info_Length); memset((uint8_t *)&star.FRAME_HEAD,0,CAK_TLM_1_Info_Length); double MeasStar1[4]; int Star1Flag = 0; GetStar1Meas(MeasStar1, &Star1Flag, Star1QuatInstall, QuatECI, AttiVelECI); //printf("MeasStar1 is %10.3f \t %10.3f \t %10.3f \t %10.3f\r\n", MeasStar1[0], MeasStar1[1], MeasStar1[2], MeasStar1[3]); //printf("Star1Flag is %10.3d\r\n", Star1Flag); spdlog::info("MeasStar1为:{1:10.6f},{2:10.6f},{3:10.6f},{4:10.6f},星敏有效标志为{5:d}",__FUNCTION__, MeasStar1[0], MeasStar1[1], MeasStar1[2], MeasStar1[3],Star1Flag); star.FRAME_HEAD = 0xA18A; star.TLM_FRAME_ID = 0; star.q0 = htonl((int32_t)(MeasStar1[0] *2147483647.5)); star.q1 = htonl((int32_t)(MeasStar1[1] *2147483647.5)); star.q2 = htonl((int32_t)(MeasStar1[2] *2147483647.5)); star.q3 = htonl((int32_t)(MeasStar1[3] *2147483647.5)); star.STAR_NUM_D = 100; star.WD_CNT = 12; star.STAR_NUM_T = 23; star.para1 = 0x91; uint8_t checksum = 0; uint8_t *buffer = (uint8_t *)&star.FRAME_HEAD; for(int kc = 0;kc