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

📄 wiegand.c

📁 门禁控制器源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	for(i=0; i<10; i++)
		Wait10ms();

	// 发两次保险
	Wiegand_dat=0x000000f2;			// F2命令注销白名单
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<16;

	Wiegand_dat=Wiegand_dat+asctoint(User_id);	// 用户编号

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 获取门控状态
///////////////////////////////////////////////////////////////////////////////
void getdevstate()
{
	Wiegand_dat=0x000000f3;				// F3获取门控状态	
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 防拆报警控制
///////////////////////////////////////////////////////////////////////////////
void tamper_alarm()
{
	Wiegand_dat=0x000000f4;				// F4布防
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 防拆去除报警控制
///////////////////////////////////////////////////////////////////////////////
void tamper_alarm_off()
{
	Wiegand_dat=0x000000f5;				// F5撤防
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 双锁双动控制方式
///////////////////////////////////////////////////////////////////////////////
void lock_22()
{
	idata uchar i;

	Wiegand_dat=0x000000f8;				// F8设置锁控方式命令
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+0;			// 双锁双动

	Send_Wiegand();

	for(i=0; i<10; i++)
		Wait10ms();

	// 发两次保险
	Wiegand_dat=0x000000f8;				// F8设置锁控方式命令
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+0;			// 双锁双动

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 双锁单动控制方式
///////////////////////////////////////////////////////////////////////////////
void lock_21()
{
	idata uchar i;

	Wiegand_dat=0x000000f8;				// F8设置锁控方式命令
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+1;			// 双锁单动

	Send_Wiegand();

	for(i=0; i<10; i++)
		Wait10ms();

	// 发两次保险
	Wiegand_dat=0x000000f8;				// F8设置锁控方式命令
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+1;			// 双锁单动

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 双锁联动控制方式
///////////////////////////////////////////////////////////////////////////////
void lock_2inter()
{
	idata uchar i;

	Wiegand_dat=0x000000f8;				// F8设置锁控方式命令
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+2;			// 双锁联动

	Send_Wiegand();

	for(i=0; i<10; i++)
		Wait10ms();

	// 发两次保险
	Wiegand_dat=0x000000f8;				// F8设置锁控方式命令
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+2;			// 双锁联动

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 自定义正常操作发送合法用户号
///////////////////////////////////////////////////////////////////////////////
void normal_send()
{
	idata uchar i;

	Wiegand_dat=areaaddr;				// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<16;

	Wiegand_dat=Wiegand_dat+asctoint(User_id);	// 用户编号

	Send_Wiegand();

	for(i=0; i<7; i++)
		Wait10ms();

	// 发两次保险
	Wiegand_dat=areaaddr;				// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<16;

	Wiegand_dat=Wiegand_dat+asctoint(User_id);	// 用户编号

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 26位韦根正常操作发送合法用户号
///////////////////////////////////////////////////////////////////////////////
void send26()
{
	Wiegand_dat=decaddr;				// 设备地址
	Wiegand_dat=Wiegand_dat<<16;

	Wiegand_dat=Wiegand_dat+asctoint(User_id);	// 用户编号

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 34位韦根正常操作发送合法用户号
///////////////////////////////////////////////////////////////////////////////
void send34()
{
	Wiegand_dat=areaaddr;				// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<16;

	Wiegand_dat=Wiegand_dat+asctoint(User_id);	// 用户编号

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 注册终端地址
///////////////////////////////////////////////////////////////////////////////
void addr_reg()
{
	idata uchar i;

	Wiegand_dat=0x000000f6;				// F6注册终端地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	for(i=0; i<10; i++)
		Wait10ms();

	// 发两次保险
	Wiegand_dat=0x000000f6;				// F6注册终端地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 清空所有白名单
///////////////////////////////////////////////////////////////////////////////
void erase_bill()
{
	idata uchar i;

	Wiegand_dat=0x000000f7;				// F7清空所有白名单
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	for(i=0; i<10; i++)
		Wait10ms();

	// 发三次保险
	Wiegand_dat=0x000000f7;				// F7清空所有白名单
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	for(i=0; i<10; i++)
		Wait10ms();

	// 发三次保险
	Wiegand_dat=0x000000f7;				// F7清空所有白名单
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 电话设置报警控制
///////////////////////////////////////////////////////////////////////////////
void tele_alarm()
{
	Wiegand_dat=0x000000f9;				// F9电话布防
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 电话去除报警控制
///////////////////////////////////////////////////////////////////////////////
void tele_alarm_off()
{
	Wiegand_dat=0x000000fa;				// FA电话撤防
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 注册报警电话
///////////////////////////////////////////////////////////////////////////////
void reg_tele()
{
	idata uchar i;
	idata uchar temp;

	Wiegand_dat=0x000000fb;				// FB登记报警电话

	for(i=0;i<3;i++)
	{
		Wiegand_dat=Wiegand_dat<<8;

		temp=0;
		if(tele_code[2*i]>0x39)			// 共计12位定长电话号码
			temp=tele_code[2*i]-0x37;
		else
			temp=tele_code[2*i]-0x30;

		temp=temp<<4;

		if(tele_code[2*i+1]>0x39)
			temp=temp+(tele_code[2*i+1]-0x37);
		else
			temp=temp+(tele_code[2*i+1]-0x30);
	
		Wiegand_dat=Wiegand_dat+temp;
	}

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;

	for(i=0;i<10;i++)
		Wait10ms();				// 发送第二部分电话号码

	Wiegand_dat=0x000000fb;				// FB登记报警电话

	for(i=3;i<6;i++)
	{
		Wiegand_dat=Wiegand_dat<<8;

		temp=0;
		if(tele_code[2*i]>0x39)			// 共计12位定长电话号码
			temp=tele_code[2*i]-0x37;
		else
			temp=tele_code[2*i]-0x30;

		temp=temp<<4;

		if(tele_code[2*i+1]>0x39)
			temp=temp+(tele_code[2*i+1]-0x37);
		else
			temp=temp+(tele_code[2*i+1]-0x30);
	
		Wiegand_dat=Wiegand_dat+temp;
	}

	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

///////////////////////////////////////////////////////////////////////////////
// 清除报警电话号码
///////////////////////////////////////////////////////////////////////////////
void erase_tele()
{
	Wiegand_dat=0x000000fc;				// FC清电话报警号码
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+areaaddr;	// 分组地址
	Wiegand_dat=Wiegand_dat<<8;

	Wiegand_dat=Wiegand_dat+decaddr;	// 设备地址
	Wiegand_dat=Wiegand_dat<<8;
	Send_Wiegand();

	Wiegand_dat=0;
	Wgnd_count=0;
}

⌨️ 快捷键说明

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