admin 发表于 2013-2-20 13:16:51

用C写的读雷达头文件


半年前在网上找了好久了没有找到一个完整读雷达头文件的程序源码,这几天自己用C语言写了一个读DZT格式的,想读其它格式的头文件,自己把格式结构体改一下就OK了。后面附上一个DZT数据和C源码。


#include "stdio.h"
#include "conio.h"
struct DztRDdate /*DZT格式头文件时间结构体*/
{
unsigned sec2 :5;/*0-30的秒数,显示时要乘2*/
unsigned min:6;
unsigned hour :5;
unsigned day:5;
unsigned month:4;
unsigned year :7;

} radaDate;


struct DztradaHand/*DZT格式头文件结构体*/
{
unsigned short rh_tag; /*DZT头文件标记一般为FF(ASCII为255)*/
unsigned short rh_data; /*DZT格式头文件的数据偏移量(1024XChannel)*/
unsigned short rh_nsamp; /*扫描率(采样率)*/
unsigned short rh_bits;/*数据保存采用的位数(一般为8,16,24,32)*/
short          rh_zero;
float          rh_sps;/*扫描道数/秒*/
float          rh_spm; /*扫描道数/米*/
float          rh_mpm; /*打MARK标记*/
float          rh_position;/*点(ns)*/
float          rh_range;/*时窗*/
unsigned short rh_npass;
struct DztRDdaterh_create;/*创建时间*/
struct DztRDdaterh_modif; /*修改时间*/
unsigned short rh_rgain; /*增益量*/
unsigned short rh_nrgain; /*增益数*/
unsigned short rh_text;
unsigned short rh_ntext;
unsigned short rh_proc;
unsigned short rh_nproc;
unsigned short rh_nchan;/*仪器的通道数量*/
float          rh_epsr;
float          rh_top; /*顶点*/
float          depth; /*所设置时窗的最大深度*/
char         reserved;
char         rh_dtype;
char         rh_antname;/*所采用的天线频率*/
unsigned short rh_chanmask;
char         rh_name;/*文件名*/
unsigned short rh_chksum;
char         variable;

} DztHead;

struct get8/*定义8位存储*/
{
unsigned gdv :8;
}gd8;

struct get16 /*定义16位存储*/
{
unsigned gd :16;
}gd16;


main()
{
    FILE *fp,*fo;/*设置一个打开指针fp,一个保存指针fo*/

    fp=fopen("c:/file1.dzt","rb");/*二进制方式打开DZT格式的文件*/
   fread(&DztHead,sizeof(DztHead),1,fp);/*按头文件大小进行块读取*/

    fclose(fp);
    printf("FileName:%s\nChannel:%d\nAntname:%s\n",DztHead.rh_name,DztHead.rh_nchan,DztHead.rh_antname);
    printf("%d\n",DztHead.rh_data);
    printf("day and time:%d-%d-%d%6d:%d:%d\n%f\n",DztHead.rh_create.month,DztHead.rh_create.day,DztHead.rh_create.year,DztHead.rh_create.hour,DztHead.rh_create.min,2*DztHead.rh_create.sec2,DztHead.rh_sps);

   fo=fopen("c:/test.txt","w");
   fwrite(&DztHead,sizeof(DztHead),1,fo);
   printf("OK");
    fclose(fo);
    getch();
}



页: [1]
查看完整版本: 用C写的读雷达头文件