由于我还没有进行钟差方面的研究,因此就跳过有关于钟差的函数了。先看后面的函数。有了前面的函数作为铺垫,后面的函数好看多了(^_−)☆
老规矩,有参数的先看参数的意义,然后再看有没有子函数,最后看函数本体。出现了一个以前没有见过的结构体。到rtklib.h中查找相应的结构体。(其实这些步骤已经形成固定套路了)
typedef struct { /* rinex control struct type */ gtime_t time; /* message time */ double ver; /* rinex version */ char type; /* rinex file type ('O','N',...) */ int sys; /* navigation system */ int tsys; /* time system */ char tobs[6][MAXOBSTYPE][4]; /* rinex obs types */ obs_t obs; /* observation data */ nav_t nav; /* navigation data */ sta_t sta; /* station info */ int ephsat; /* ephemeris satellite number */ char opt[256]; /* rinex dependent options */ } rnxctr_t;观察结构体定义可以看出,这个结构体就是将之前的导航电文结构体和观测值结构体进行了组合,从而形成了一个能够概括所有RINEX格式文件的结构体。 再回到函数本身,发现函数其实就是将上述的结构体进行初始化,即将指针指向新开辟的内存空间,将其中的各个参数置零,函数本身没有什么好说的。
函数本身没有什么太高深的东西,也并不是很长,但是却给我提了一个醒。我在平时使用C语言的指针的时候,没有注意到内存管理问题,其实应该严格一点,使用完指针和新开辟的内存之后,应该先释放内存,也就是进行free操作,然后将指针指向NULL。这样应该可以避免很多内存泄漏的问题。
这个函数也没有什么太好说的,它是将RINEX文件头中的信息读入rnx参数中。注意,只是文件头的信息。
这个函数是用来将RINEX文件体的信息读入rnx中。从下面的函数体中可以看出,rnx的类型是已知的,那么我们可以推测在调用这个函数的时候应该先调用open_rnxctr函数,解析头文件,然后再使用这个函数。
剩下的rinex.c中的函数大多数是输出函数,也就是将各种信息输出到文件中,也可以说是RINEX文件产生的函数,我个人认为现在没有再看下去的必要了,因为我目前是想要读取现成的RINEX文件,然后掌握导航的各种算法。至于RINEX文件是怎么产生的,可以暂时不用了解,等着以后用到回来再看。下面就进入标准单点定位和精密单点定位的环节吧。这以后就需要导航专业知识的支撑了,所以应该一边学一边看了。以前的东西就是纯粹的C语言知识。最近在写课程的程序,还是尽量抽时间多学一点rtklib吧(*´゚∀゚`)ノ (ps:这篇文章有点水,没什么太多的东西,嘿嘿嘿)