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

📄 main.h

📁 程序概述: 这是个具体产品程序
💻 H
📖 第 1 页 / 共 2 页
字号:
	Status_SetupPasswordVerify,     // 确认输入的密码
//
	Status_SetupAddTempCardByCard,  // 通过刷卡增加临时刷卡用户
	Status_SetupAddTempCardByNum,   // 通过输入卡号增加临时刷卡用户
	Status_SetupAddTempCardDoor,    // 输入该卡号所允许进入的单元号
	Status_SetupAddTempCardEndTime, // 设置临时卡的使用期限

	Status_SetupDelTempCardByCard,  // 通过刷卡删除临时刷卡用户
	Status_SetupDelTempCardByNum,   // 通过输入卡号删除临时刷卡用户
//
	Status_SetupDoubleClickTime,    // 正在设置按键双击间隔时间
	Status_SetupCheckDoorIntervalTime,  // 正在设置管理机轮检门口机的时间间隔

	Status_FindMenu,                // 进入到查询的主菜单界面
	Status_FindAlarmRecord,         // 查询报警记录
	Status_DelAlarmRecordFirst,     // 询问是否删除当前这项报警记录
	Status_DelingAlarmRecord,       // 正在删除这项报警记录

	Status_Busy = 0x40,             // 对方忙标志,这一位置'1'表示返回方现在忙
	Status_Ack = 0x80               // 应答标志,这一位置'1'表示是返回的应答信号
} e_SystemStatus;

// 定义记录刷卡用户的结构体,每条信息16字节
typedef struct
{
	BYTE CardAddr[2];                       // 该卡所适用的单元地址
	BYTE CardNum[4];                        // 存放卡号,用4位存储
	t_Time EndTime;                         // 该卡的有效期限,6字节
	BYTE NotUsed[16-2-4-sizeof(t_Time)];	// 凑齐16个字节
}t_RFCardUser;


// 定义记录存放各个单元的卡号的地址的表格项的结构体
typedef struct
{
	UINT Door;                  // 这个单元的单元号,以xx栋xx单元来表示,高字节表示栋,低字节表示单元号
	UINT Address;               // 用于存放这个单元的所有卡号的I2C存储器首地址
	UINT nLength;               // 用于存放这个单元的所有卡号所使用的存储器空间长度
	UINT NotUsed;               // 凑齐8个字节
}t_DoorCard;

// 定义小区的路由信息结构体,该路由信息由计算机或EEROM提供,每条信息8字节
typedef struct
{
	BYTE House;                 // 楼栋号
	BYTE Door;                  // 单元号
	BYTE RouteAddr;             // 路由器地址
	BYTE DoorAddr;              // 门口机地址
	BYTE StartNum;              // 起始房号
	BYTE EndNum;                // 终止房号

	BYTE Floor;                 // 楼层号
	BYTE User;                  // 分机号
}t_RouteInfo;

// 定义记录报警信息的结构体,每条记录需要16字节
typedef struct
{
	t_Time Time;                // 报警开始时间: 年、月、日、时、分、秒
	UINT Index;                 // 报警序号,指示这条记录是所有报警记录中的第几条报警记录
	BYTE Addr[4];               // 报警的用户房号,4个字节表示,0x00、楼栋、楼层、房号
	UINT PreRecord;             // 上一条记录地址
	UINT NextRecord;            // 下一条记录地址,起始指向当前删除地址
}t_AlarmRecord;

// 定义结构体类型的系统状态
typedef struct
{
	e_SystemStatus Status;      // 表示的系统状态
	e_SystemStatus PreStatus;   // 在ShowingMessage状态取消后回到的状态
	BYTE lParam;                // 该状态所包含的参数,如菜单状态下第一行菜单在数组中的序号
	BYTE wParam;                // 该状态所包含的参数,如菜单状态下当前选中的菜单为第几行
} t_SystemStatus;

// 定义菜单结构体,包含上一级和下一级的菜单项以及该菜单项对应的执行函数
typedef struct 
{
	BYTE Caption[16];           // 第一行显示的提示信息
	BYTE NextMenu;              // 下一个菜单
	BYTE Parent;                // 父菜单
	BYTE Child;                 // 子菜单
	void *MenuFunction;         // 选择该菜单对应执行的程序 
} t_Menu;

/*----------------------------------------------------------------------------+
| Global Variables                                                            |
+----------------------------------------------------------------------------*/
extern code t_RouteInfo RouteInfoTable[];

extern bit bHandleUp;					// 指示手柄是否提起,TRUE为提起状态,FALSE为压下状态
extern bit LineIdle;

extern data t_SystemStatus SystemStatus;// 系统状态

extern code UINT SystemPasswordAddress;	// 用于存放系统管理员密码的I2C地址,长度为16个字节,用一页来存放

extern data UINT RS485SendWaitTimer;	// RS485总线应答超时计数器,当这个数减计数到0的时候表示对方没有应答

extern data UINT MessageShowTimer;		// 消息显示的时间长短计数器,当这个数减到0的时候清除显示的消息并回到之前的状态

extern data UINT BeepTimer;				// 蜂鸣器发声定时器

extern idata BYTE WDT_Counter;			// 看门狗狗粮

extern idata UINT RingTimeCounter;		// 振铃信号持续时间,超过这个时间就会停止振铃

extern idata UINT ViewTimeCounter;		// 监视定时器,当这个计数器减计数到0的时候向门口机发送取消监视请求的命令

extern idata UINT LineIdleWaitTime;		// 等待485总线空闲需要等待的时间, 根据地址而各不相同

extern idata BYTE DoubleKeyPressTimer;	// 设定双击按键的时间间隔,以10ms为单位
extern idata BYTE CheckDoorIntervalTimer;		// 设定管理机轮检门口机的时间间隔

extern idata UINT AlarmRecordStartAddr;	// 存放的报警记录的首地址
extern idata UINT AlarmRecordLength;	// 存放的报警记录的长度 

extern idata UINT RouteInfoStartAddr;	// 用于存放各个用户的路由信息的表格在I2C存储器中的起始地址
extern idata UINT RouteInfoLength;		// 用于存放各个用户的路由信息的表格的长度

extern idata UINT RFCardTabStartAddr;	// 用于存放各个单元所有卡号对应的I2C地址的表格的头地址,即表格的地址
extern idata UINT RFCardTabLength;		// 用于存放各个单元所有卡号对应的I2C地址的表格的长度的地址

extern xdata t_RouteInfo RouteInfo;		// 路由信息缓冲区

extern xdata BYTE ConnectingAddr[4];	// 正在和管理机连接的目的地址,包括门口机地址和室内机地址

extern xdata BYTE CardBuffer[Card_BUF_LENGTH+1];

extern xdata BYTE KeyBuffer[KEY_BUF_LENGTH+1];	// 按键缓冲

extern xdata BYTE SystemPassword[MAX_SYSTEM_PASSWORD_LENGTH+1]; // 存放系统管理员密码,第一个字节为密码长度

extern xdata BYTE I2CBuffer[I2C_PAGE_SIZE];		// 读写I2C存储器的内存缓冲
extern xdata BYTE CheckDoorIntervalArray[];		// 管理机轮检各个门口机所用到的数据缓存,每一个门口机对应一个字节
extern data  UINT DoorNumber;					// 在I2C存储器中设置的单元的数量,根据这个数量管理机决定需要对多少个门口机进行轮检

extern xdata t_RFCardUser RFCardUser;			// 定义记录刷卡用户的结构体,包括卡号,用户名
extern idata t_RFCardUser *p_RFCardUser;

extern xdata t_AlarmRecord AlarmRecord;			// 报警记录缓冲区
extern idata t_AlarmRecord *pAlarmRecord;		// 指向报警记录的指针

extern code BYTE NullString[];					// 常量空字符串

/*----------------------------------------------------------------------------+
| Function Prototype                                                          |
+----------------------------------------------------------------------------*/

void CopyDefaultSettings(void);
void Delayus(BYTE timer) reentrant;
void Delayms(BYTE timer);

void RS485RxFrameHandler(PMSG msg);
void RS232RxHandler(PMSG msg);


void WaitForLineIdle(void);
BOOL UartSendData(BYTE Addr, BYTE bData);

void ClearConnectingAddr(void);

/*----------------------------------------------------------------------------+
| End of header file                                                          |
+----------------------------------------------------------------------------*/
#endif // __MAIN_H__
/*------------------------ Nothing Below This Line --------------------------*/

⌨️ 快捷键说明

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