📄 measure.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 + -