|
半年前在网上找了好久了没有找到一个完整读雷达头文件的程序源码,这几天自己用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 DztRDdate rh_create;/*创建时间*/
struct DztRDdate rh_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[31];
char rh_dtype;
char rh_antname[14];/*所采用的天线频率*/
unsigned short rh_chanmask;
char rh_name[12];/*文件名*/
unsigned short rh_chksum;
char variable[896];
} 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();
} |
getRadaHead.rar
(12.94 KB, 下载次数: 2)
|
|
|