⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 measure.h

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 H
字号:
#ifndef _MEASURE_H
#define _MEASURE_H

#include "wintype.h"
#include "mes_svr.h"

//图形信息
#define MAP_RIGHT				573
#define MAP_BOTTOM				352

//点的信息
#define POINT_NUM_MAX			100
#define RELAT_POINT_NUM_MAX		6

// 测量状态
#define STATE_SURVEY			1
#define STATE_STOP				2
#define STATE_RECORD_PROPERTY	3
#define STATE_MOVING			4

#define MAX_CITY_NUM		50
#define MAX_COUNTY_NUM		50
#define MAX_COUNTRYSIDE_NUM	50
#define MAX_VILLAGE_NUM		50

//缩放状态
#define ZOOM_IN				1
#define ZOOM_OUT			2
#define	ZOOM_ZERO			0

/*
//读串口时的判断
#define BE_READ				1
#define NOT_BE_READ			0
#define NOTUSED				0
#define BEUSED				1
#define REST				1		//读的电文不全
#define NOREST				0		//读的电文恰好全了
#define BUF_LEN				200		//读串口时buffer的大小
//#define	WM_START			1		//消息,开始读串口
//#define WM_STOP				2		//消息,停止读串口
*/

//地图起始/终结经纬度(经度经过10^6扩展,纬度经过10^7扩展)
//#define MAP_TOP_LATITUDE		320639407//原值为32.0639407
//#define MAP_BOTTOM_LATITUDE		320521726//原值为32.0521726
//#define MAP_LEFT_LONGITUDE		118776381//原值为118.776381
//#define MAP_RIGHT_LONGITUDE		118791426//原值为118.791426
#define PI_VALUE				3.1415926
#define MAP_TOP_LATITUDE		32.0639407
#define MAP_BOTTOM_LATITUDE		32.0521726
#define MAP_LEFT_LONGITUDE		118.776381
#define MAP_RIGHT_LONGITUDE		118.791426
#define MAP_WIDTH_LONGITUDE		(MAP_RIGHT_LONGITUDE - MAP_LEFT_LONGITUDE)//为0.015045
#define MAP_HEIGHT_LATITUDE		(MAP_TOP_LATITUDE - MAP_BOTTOM_LATITUDE)//为0.0117681

//返回值
#define GPS_ERROR			-1

//Precision
#define PRECISION			7

//存储数据在flash中的起始地址
//#define CMC_START_ADDRESS		0x9c0000	//在flash中所有的起始地址
#define FILE_START_ADDRESS		0x9e0000
//#define FLASH_LENGTH			0x10000		//64K大小

//#define NO20Address		//保存20号电文,既.cmc文件
//#define NO22Address		//保存22号电文,既.cmc文件
//#define NO22Address		//保存23号电文,既.cmc文件
//#define Parameter		//保存设置的参数,既.wbg文件
//#define POINTINOF		//保存点的信息,既.pot文件
//#define ROOTDIR		//保存总的文件目录

//存储文件的类型
//#define CMC_FILE		1
#define WBG_FILE		2
#define POT_FILE		3
#define NO_FILE			0

/*
#ifdef DEBUG
#define WriteRecord( Src, Des, length )	do {\
	memcpy( Des, Src, length );\
} while(0)
#else
//#define INIT(name1, name2, length)	drv_flash_write( (unsigned char *)(name1), (unsigned int )(name2), length )
extern void FlashEraseBlock(unsigned int Address);
typedef void (*	FBP)(unsigned int Address);
extern FBP FlashLockBlockP;
extern FBP FlashUnlockBlockP;
typedef unsigned int (* FWBP)(unsigned int,unsigned int,unsigned int);
extern FWBP FlashWriteBlockP;

#define WriteRecord(Src, Des, length)\
do{\
	(*FlashUnlockBlockP)((unsigned int )(Des));\
	(*FlashWriteBlockP)( (unsigned int )(Des), (unsigned int)(Src), (length) );\
	(*FlashLockBlockP)( (unsigned int )(Des) );\
}while(0)

#define ERASEAREA(area)		\
do{\
		(*FlashUnlockBlockP)(area);\
		FlashEraseBlock((unsigned int)(area));\
		(*FlashLockBlockP)( area );\
}while(0)

#endif
*/
/*
//存储格式
typedef struct{
	BYTE	file_type;
	char	file_name[31];
	DWORD	file_address;
	DWORD	file_length;
} ROOT_DIR;
*/
struct _district 	// 行政区结构
{
	unsigned long		code;		// 行政区代码
	char				*name;		// 行政区名称
	struct _district	*sub;		// 下级行政区列表
	unsigned char		subnum;		// 下级行政区个数
};
typedef struct _district	DISTRICT;

struct _terrain_type 	// 土地类型结构
{
	unsigned long			code;		// 土地类型代码
	char					*name;		// 土地类型名称
	struct _terrain_type	*sub;		// 土地子类型列表
	unsigned char			subnum;		// 土地子类型个数
};
typedef struct _terrain_type	TERRAINTYPE;

typedef struct	// 参数选择结构
{
	unsigned char	code[5];
	
	unsigned char	terrain;
}PARSELECT;

//记录结构
//权属拐点
typedef struct
{
	int			index;			//记录号		
	int			magic;			//调查要素类别码
	float		longitude;		//注记点经度
	float		latitude;		//注记点纬度
	int			level;			//权属拐点级别
	int			charact;		//权属拐点性质
	char		end_flag[2];	//结束符
}INFLEXION_INFO_S;

//权属及境界线
typedef struct {
	int			index;			//记录号
	int			magic;			//调查要素类别码
	float		longitude;		//注记点经度
	float		latitude;		//注记点纬度
	int			level;			//权属境界线级别
	int			charact;		//权属境界线性质
	char		left_reg[60];	//左侧行政区
	char		right_reg[60];	//右侧行政区
	char		end_flag[2];	//结束符
} BORDER_LINE_INFO_S;

//图斑
typedef struct {
	int			index;					//记录号
	int			magic;					//调查要素类别码
	float		longitude;				//注记点经度
	float		latitude;				//注记点纬度
	char		owner[60];				//所属权属单位
	char		location_owner[60];		//座落权属单位
	char		ter_char[3];			//权属性质代码
	char		terrain_name[4];		//地类名称代码
	char		end_flag[2];			//结束符
} MAP_BLOCK_INFO_S;

//线状地物
typedef struct {
	int			index;				//记录号
	int			magic;				//调查要素类别码
	float		longitude;			//注记点经度
	float		latitude;			//注记点纬度
	char		earmark[12];		//权属特征
	char		terrain_char[3];	//权属性质代码
	char		terrain_name[4];	//地类名称代码
	float		left_width;			//左侧宽度
	float		right_width;		//右侧宽度
	int			offset;				//偏移参数
	char		end_flag[2];		//结束符
} LINEEAR_TERRAIN_INFO_S;

//零星地物
typedef struct {
	int			index;				//记录号
	int			magic;				//调查要素类别码
	float		longitude;			//注记点经度
	float		latitude;			//注记点纬度
	char		owner_index[12];	//所属权属单位代码
	char		terrain_char[3];	//权属性质代码
	char		terrain_name[4];	//地类名称代码
	char		end_flag[2];		//结束符
} PIECES_TERRAIN_INFO_S;

//变更线
typedef struct {
	int			index;				//记录号
	int			magic;				//调查要素类别码
	float		longitude;			//注记点经度
	float		latitude;			//注记点纬度
	char		left_owner[60];		//左侧权属单位
	char		left_ter_char[3];	//左侧权属性质
	char		left_land_name[4];	//左侧地类名称代码
	char		right_owner[60];	//右侧权属单位
	char		right_ter_char[3];	//右侧权属性质
	char		right_land_name[4];	//右侧地类名称代码
	char		end_flag[2];		//结束符
} ALTER_LINE_INFO_S;

typedef struct {
	SHORT		mantissa;
	SHORT		exponent;
} DOUBLE_S;
/*
//提取20号电文
typedef struct {
	BYTE		hour;
	BYTE		minute;
//	DOUBLE_S	second;
	double		second;
	BYTE		day;
	BYTE		month;
	WORD		year;
//	DOUBLE_S	latitude;
//	DOUBLE_S	longitude;
	double		latitude;
	double		longitude;
	WORD		hdop;
	WORD		vdop;
	BYTE		star_num;
} MESSAGE_20;

//读取电文时的标志体
typedef struct {
	BYTE	type;
	BYTE	length;
} FLAG;

//保存电文
typedef struct {
	FLAG	flag;
	BYTE	data[150];
} CMC_MESSAGE;
*/
//保存关联点的信息
typedef struct {
	POINTS		relat_point;
	WORD		relat_serial;//记录与之关联的点号
	BYTE		relat_flag;
}RELAT_POINT;

//保存点的信息
typedef struct {
	POINTS		point;
	DWORD		cur_pos;//记录relat数组中当前位置
	RELAT_POINT	relat[RELAT_POINT_NUM_MAX];
} POINT_INFO;

//.pot文件格式
typedef struct {
	WORD	index;
	WORD	year;
	BYTE	month;
	BYTE	day;
	BYTE	starthour;
	BYTE	startminute;
	BYTE	startsecond;
	BYTE	endhour;
	BYTE	endminute;
	BYTE	endsecond; 
	double	latitude;
	double	longitude;
	WORD	connection[6];   
}POINT_FILE;


//保存设置的参数
typedef struct {
	BYTE		zoom;				//放大倍数
	BYTE		frequence;			//间隔时间
	BYTE		continuance;		//连续测量时间
	BYTE		terrain_type;		//新旧地类
} PARAMETER;

extern PARSELECT	ParSelect;
extern DISTRICT		ChinaDistrict[];
extern TERRAINTYPE	TerrainType[];
//extern BYTE			NO20Address[];
//extern BYTE			NO22Address[];
//extern BYTE			NO23Address[];
//extern BYTE			PointInfo[];
//extern BYTE			Parameter[];
/*
extern DWORD		Current_Address;
extern MESSAGE_20	mes20;
extern ROOT_DIR		rootdir[];
extern BYTE			DirPos;
extern BYTE	cmcarea[];//用来预存CMC文件
extern BYTE	*cur_cmcarea;
extern BYTE	area[];//定义全局数组来预存相关的文件
extern BYTE	*cur_area;//定义一个全局变量来指向全局数组
extern DWORD	FileCurrentAddress;//定义一个全局变量用来控制每次保存文件的起始地址
*/



extern void RecordInflexion( void );
extern void RecordBorderline( void );
extern void RecordLinearTerrain( void );
//extern char *SelectTerrainType( void );
extern char *SelectTerrainType( unsigned long *code );
extern void RecordPiecesTerrain( void );
extern void RecordMapBlock( void );
extern void RecordAlterLine( void );

//extern int read_message( CMC_MESSAGE *cmc_message, MESSAGE_20 *mes20, int *read_length, int *head, int *offset, int *mesflag, INT *rest_flag );
extern void Int2Char( DWORD inti, char *caption );
extern void Double2Char( double src, char *caption );
extern void Unite2Char( BYTE hour, BYTE minute, char *caption );
//extern void deal_float( BYTE *Source, DOUBLE_S *Destination );
//extern void deal_double_float( BYTE *Source, DOUBLE_S *Destination );


//#define DEBUG
//#define PC

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -