Archived
Rename the Project:
1.Update KNZ_Plot 2.Update mpre GUI parts
This commit is contained in:
1 parent
d5a7fd37ce
commit
c6d0e5bb48
11 files changed
+108
-136
No files matched your search
+3
-3
@@ -69,7 +69,7 @@ pos_ts gps_pos(int sPRN, int best_epoch, double GPSsec,
|
||||
/* ------------------------------- GPS卫星位置计算&输出 ------------------------------ */
|
||||
void sat_gps_pos_clac(FILE* result_file,HWND hwndPB,
|
||||
pnav_body nav_b, pobs_epoch obs_e, pobs_body obs_b,pobs_head obs_h,
|
||||
int o_epochnum, int gps_satnum,
|
||||
int o_epochnum, int satnum,
|
||||
char res_file[MAX_PATH], char obs_file[MAX_PATH], char nav_file[MAX_PATH],
|
||||
int ionoption, int trooption)
|
||||
{
|
||||
@@ -88,7 +88,7 @@ void sat_gps_pos_clac(FILE* result_file,HWND hwndPB,
|
||||
result_file = fopen(res_file, "w");
|
||||
fclose(result_file);
|
||||
result_file = fopen(res_file, "a+");
|
||||
fprintf(result_file, "@ GENERATE PROGRAM : SPP Calculate v0.4.7\n");
|
||||
fprintf(result_file, "@ GENERATE PROGRAM : KNZ_Calculate v0.9.7\n");
|
||||
fprintf(result_file, "@ GENERATE TYPE : Satellite Position\n");
|
||||
fprintf(result_file, "@ GENERATE TIME : %s", ctime(&gen_time));
|
||||
fprintf(result_file, "@ OBS FILE PATH : %s\n", obs_file);
|
||||
@@ -129,7 +129,7 @@ void sat_gps_pos_clac(FILE* result_file,HWND hwndPB,
|
||||
{
|
||||
double GPSsec = Time2GPSsec(y, m, d, h, min, sec);//转换为GPS周内秒
|
||||
int sPRN = obs_e[i].sPRN_GPS[j];
|
||||
int best_epoch = select_epoch(GPSsec, sPRN, nav_b, gps_satnum); //遍历N文件GPS卫星数据块,寻找最佳历元
|
||||
int best_epoch = select_epoch(GPSsec, sPRN, nav_b, satnum, GPS); //遍历N文件GPS卫星数据块,寻找最佳历元
|
||||
double detat_toc = GPSsec - nav_b[best_epoch].TOE;//观测时刻 - 参考时刻
|
||||
//计算近似的信号传播时间,接收机钟差已初始化为0(伪距/光速-接收机钟差+卫星钟差)
|
||||
pos_t.delta_t[sPRN] = (obs_b[i].obs_gps[j][Code2Type(C1C, obs_h->obstypenum_gps, obs_h->obscode_gps)] / C_V) - station.delta_TR + nav_b[best_epoch].sa0 + nav_b[best_epoch].sa1 * detat_toc + nav_b[best_epoch].sa2 * pow(detat_toc, 2);
|
||||
|
||||
@@ -1,5 +1,44 @@
|
||||
#ifndef _PUBLIC_H_
|
||||
#define _PUBLIC_H_
|
||||
/*---------------------------------- FOR UI ----------------------------------*/
|
||||
//FILE SELECT DIALOGS
|
||||
#define FILEEXOP TEXT("RINEX OBS(*.o*.*.*obs.*.*d)\0*.*o;*.*obs;*.*d\0"\
|
||||
"All Files(*.*)\0*.*\0\0");
|
||||
|
||||
#define FILEEXNP TEXT("RINEX NAV(*.*nav.*.hnav.*.gnav.*.qnav.*.*n.*.*g.*.*h.*.*q.*.*p)\0*.*nav;*.hnav;*.gnav;*.qnav;*.*n;*.*g;*.*h;*.*q;*.*p\0"\
|
||||
"All Files(*.*)\0*.*\0\0")
|
||||
|
||||
#define FILEEXSV TEXT("Spos Files(*.sp*)\0*.sp\0"\
|
||||
"All Files(*.*)\0*.*\0\0");
|
||||
|
||||
//DEF MAIN WINDOW BUTTONS
|
||||
#define OBSBUTTON 3301
|
||||
#define NAVBUTTON 3302
|
||||
#define CALBUTTON 3303
|
||||
#define OPTBUTTON 3304
|
||||
#define PLOBUTTON 3305
|
||||
#define OBSCLEAR 3306
|
||||
#define OBSRELOD 3307
|
||||
#define NAVCLEAR 3308
|
||||
#define NAVRELOD 3309
|
||||
#define PROGRESS 3310
|
||||
//DEF MAIN WINDOW GNSS NUTTONS
|
||||
#define GPSCHECK 5500
|
||||
#define GLOCHECK 5501
|
||||
#define BEICHECK 5502
|
||||
#define GALCHECK 5503
|
||||
#define SBACHECK 5504
|
||||
#define SYSGROUP 1001
|
||||
//DEF OPTIONS WINDOW CHECK+BOXS
|
||||
#define OPTDFION 7001
|
||||
#define OPTDFTRO 7002
|
||||
#define OPTCONFI 7003
|
||||
|
||||
//DEFINE PROGRESSBAR STATE
|
||||
#define PBSTATENONE 0
|
||||
#define PBSTATEHALF 500
|
||||
#define PBSTATEFULL 1000
|
||||
|
||||
|
||||
/* ------------------------------ WGS-84 CONST ------------------------------ */
|
||||
#define a 6378137.0
|
||||
@@ -9,6 +48,8 @@
|
||||
#define math_e 2.718281828459
|
||||
#define PI 3.141592653589793
|
||||
#define Earth_e 7.2921151467e-5
|
||||
|
||||
|
||||
/* ----------------------------- GPS OBSERV TYPE ---------------------------- */
|
||||
#define C1C 1
|
||||
#define C1S 2
|
||||
@@ -31,6 +72,16 @@
|
||||
#define C5I 17
|
||||
#define C5Q 18
|
||||
#define C5X 19
|
||||
|
||||
|
||||
/* ------------------------------- GNSS CODE -------------------------------- */
|
||||
#define GPS 0
|
||||
#define BDS 1
|
||||
#define CAL 2
|
||||
#define GLO 3
|
||||
#define SBAS 4
|
||||
|
||||
|
||||
/* ------------------------------ FOR CALMOD.H ------------------------------ */
|
||||
#define MAXRINEX 1000
|
||||
//卫星位置结构体
|
||||
|
||||
+9
-45
@@ -243,9 +243,9 @@ extern void read_o_b(FILE* fp_obs, pobs_epoch obs_e, pobs_body obs_b, int type_g
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
/* ---------------------- 获取文件数据块行数,从END OF HEADER后开始起算 --------------------- */
|
||||
int getgpssatnum(FILE* fp_nav)
|
||||
int getsatnum(FILE* fp_nav)
|
||||
{
|
||||
int gps_satnum = 0;
|
||||
int satnum = 0;
|
||||
int flag = 0;
|
||||
char buff[MAXRINEX];//用来存放读取到的字符串
|
||||
char satvar;
|
||||
@@ -263,54 +263,18 @@ int getgpssatnum(FILE* fp_nav)
|
||||
while (fgets(buff, MAXRINEX, fp_nav))
|
||||
{
|
||||
strncpy(&satvar, buff + 0, 1);
|
||||
if (satvar != 'G')
|
||||
if (satvar == 'G' || satvar == 'E' || satvar == 'R' || satvar == 'S' || satvar == 'C' || satvar == 'I' || satvar == 'J')
|
||||
{
|
||||
satnum++;
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (satvar == 'G')
|
||||
{
|
||||
gps_satnum++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return gps_satnum;
|
||||
}
|
||||
|
||||
int getbdssatnum(FILE* fp_nav)
|
||||
{
|
||||
int bds_satnum = 0;
|
||||
int flag = 0;
|
||||
char buff[MAXRINEX];//用来存放读取到的字符串
|
||||
char satvar;
|
||||
char* lable = buff + 60;
|
||||
//fgets函数,读取一行,当读取结束后返回NULL指针,格式如下:
|
||||
//wchar_t * fgets ( wchar_t * str, int num, FILE * stream );
|
||||
while (fgets(buff, MAXRINEX, fp_nav))
|
||||
{
|
||||
if (strstr(lable, "END OF HEADER"))
|
||||
{
|
||||
flag = 1;
|
||||
}
|
||||
if (flag == 1)
|
||||
{
|
||||
while (fgets(buff, MAXRINEX, fp_nav))
|
||||
{
|
||||
strncpy(&satvar, buff + 0, 1);
|
||||
if (satvar != 'C')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (satvar == 'C')
|
||||
{
|
||||
bds_satnum++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return bds_satnum;
|
||||
return satnum;
|
||||
}
|
||||
|
||||
/* -------------------------------- 读取N文件数据头 -------------------------------- */
|
||||
@@ -390,7 +354,7 @@ void read_n_h(FILE* fp_nav, pnav_head nav_h)
|
||||
void read_n_b(FILE* fp_nav, pnav_body nav_b)
|
||||
{
|
||||
int i_g = 0;//第i_g个卫星数据
|
||||
char buff[84] = { 0 };
|
||||
char buff[MAXRINEX] = { 0 };
|
||||
char flag = { 0 };//判断符号
|
||||
while (fgets(buff, MAXRINEX, fp_nav))
|
||||
{
|
||||
|
||||
+12
-9
@@ -10,24 +10,27 @@
|
||||
/// @param SecofWeek 计算得到的观测历元的周内秒
|
||||
/// @param sPRN 需要匹配的该历元卫星号
|
||||
/// @param nav_b 导航文件数据块结构体,与卫星号匹配
|
||||
/// @param gps_satnum 该历元的GPS卫星数量
|
||||
/// @param satnum 广播星历卫星数量
|
||||
/// @param syscode 卫星系统代码,详情见PPUBLIC.H
|
||||
/// @return 返回最佳历元的绝对历元序号
|
||||
/* -------------------------------------------------------------------------- */
|
||||
extern int select_epoch(double SecofWeek, int sPRN, pnav_body nav_b, int gps_satnum)
|
||||
extern int select_epoch(double SecofWeek, int sPRN, pnav_body nav_b, int satnum, int syscode)
|
||||
{
|
||||
int best_epoch = 0;
|
||||
double min = 10000;//初始化最小值
|
||||
double Min;
|
||||
int i;
|
||||
for (i = 0; i < gps_satnum; i++)
|
||||
if (syscode == GPS)
|
||||
{
|
||||
if (sPRN == nav_b[i].sPRN_GPS)
|
||||
for (int i = 0; i < satnum; i++)
|
||||
{
|
||||
Min = fabs(SecofWeek - nav_b[i].TOE);
|
||||
if (Min <= min)
|
||||
if (sPRN == nav_b[i].sPRN_GPS)
|
||||
{
|
||||
best_epoch = i;
|
||||
min = Min;
|
||||
Min = fabs(SecofWeek - nav_b[i].TOE);
|
||||
if (Min <= min)
|
||||
{
|
||||
best_epoch = i;
|
||||
min = Min;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user