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

📄 dvs-comprotoc.c

📁 电话报警主机AT89S52单片机并带有网络模块通信协议
💻 C
📖 第 1 页 / 共 2 页
字号:
/*

//===============================================================================================
//语法格式: DelComPhone()
//实现功能: 删除串口电话号码
//参数:		无
//返回:		无
//创建时间:2008-12-29          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void DelComPhone()
{
	unsigned char data luc_i;
	unsigned char data luc_Phone_nub;
	luc_Phone_nub = RsBuf[5];
	for(luc_i = 0 ; luc_i < PH_CODE_LEN; luc_i ++)
	{
		WrEEPROM(STER_ADDR+PH_CODE_LEN*(luc_Phone_nub)+luc_i,0xff);			//保存电话号码
	}
	luc_i = 0x00;
	RxTCPSame(DEL_COM_PHONE,1,&luc_i);										//返回网络模块成功设置
}*/
//===============================================================================================
//语法格式: SetComArmed()
//实现功能: 设置布/撤防
//参数:		无
//返回:		无
//创建时间:2008-12-26          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void SetComArmed()
{
	unsigned char data luc_temp;
	luc_temp = RsBuf[5];
	switch(luc_temp)
	{
		case ARMED		:	BuFan();			break;					//布防处理
		case DISARMED	:	CheFan();			break;					//撤防处理
		default:break;
	}
	luc_temp = 0;
	RxTCPSame(SET_COM_ARMED,1,&luc_temp);								//返回网络模块
}




//===============================================================================================
//语法格式: QueriesComArmed()
//实现功能: 查询串口布/撤防状态
//参数:		无
//返回:		无
//创建时间:2008-12-26          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void QueriesComArmed()
{
	unsigned char data luc_temp;
	if(guc_Bit_BuChe)												//如果guc_Bit_BuChe等于1为布防
	{
		luc_temp = ARMED;											//布防赋值
		RxTCPSame(QUERIES_COM_ARMED,1,&luc_temp);					//返回网络模块布防
	}
	else 															//否则为撤防
	{
		luc_temp = DISARMED;										//撤防赋值
		RxTCPSame(QUERIES_COM_ARMED,1,&luc_temp);					//返回网络模块撤防
	}
}


//===============================================================================================
//语法格式: SetComWarTime()
//实现功能: 设置串口警号声时间
//参数:		无
//返回:		无
//创建时间:2008-12-26          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void SetComWarTime()
{
	unsigned char data luc_temp;
	luc_temp = RsBuf[5];
	if((0<luc_temp)&&(luc_temp<=180))
	{
		WrEEPROM(Alar_TI_Addr,luc_temp);
		luc_temp = 0x00;
		RxTCPSame(SET_COM_WAR_TIME,1,&luc_temp);							//返回网络模块,成功
	}
	else
	{
		luc_temp = 0x01;
		RxTCPSame(SET_COM_WAR_TIME,1,&luc_temp);							//返回网络模块,所带的参数非法
	}
}

//===============================================================================================
//语法格式:	SetTelKeepAlive()	
//实现功能: 心跳
//输入参数:	无
//输出返回:	无
//创建时间:2009-02-20          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
unsigned char code TELKEEP_TAB[4]={0x00,0x01,0x00,0x79};
void SetTelKeepAlive()
{
	unsigned char idata luc_i ; 
	bit lucbitok;
	for(luc_i = 0 ; luc_i < 4 ;luc_i ++ )
	{
		if(RsBuf[luc_i+2] == TELKEEP_TAB[luc_i])	lucbitok = 1;					//如果协议相等则赋1
		else 
		{
			lucbitok = 0 ;															//否则赋0,并退出
			break;	
		}
	}
	luc_i = 0 ;
	if(lucbitok) RxTCPSame(TEL_ALARM_KEEP_ALIVE,1,&luc_i);							//如果协议相等返回心跳									
}




//===============================================================================================
//语法格式:	QueriesComAlarTimee()	
//实现功能: 查询警号时间
//参数:		无
//返回:		无
//创建时间:2009-02-14          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void QueriesComAlarTimee()									//查询串口警号声时间
{
	unsigned char idata luc_temp ; 

	luc_temp = RdEEPROM(Alar_TI_Addr) ;
	if((luc_temp>=100)||(luc_temp==0))						//如果数据没在1-99之间,重新获取,默认30					
	{
		luc_temp = ALARSOURTIME ;
		WrEEPROM(Alar_TI_Addr,luc_temp);					//保存警号时间
	}
	RxTCPSame(SET_COM_WAR_TIME,1,&luc_temp)	;				//返回警号声时间
}



//===============================================================================================
//语法格式:	ProbeAlar()	
//实现功能: 探测器报警,又名有线报警
//参数:		无
//返回:		无
//创建时间:2009-02-14          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void ProbeAlar()			// 探测器报警,有线报警
{
	unsigned char idata luc_temp  ;
	guc_AlarCnt = 0;												// 电话号码清0,表示每次报警都从第一组电话号码开始拔
	guc_bit_SenAlar = 1;											// 传感器报警
	guc_BitTel = 1 ;												// 拔打电话标致位
	ONAlarSoun() ; 													// 打开警号
	luc_temp = 0;													// 返回数据区为0
	RxTCPSame(MPROBE_ALAR,1,&luc_temp);								// 返回网络模块
}




//===============================================================================================
//语法格式:	RsDisProtoc()	
//实现功能: 处理串口协议
//参数:		无
//返回:		无
//创建时间:2008-12-26          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void RsDisProtoc()
{
	unsigned char data luc_type;
	luc_type = RsBuf[1];															// 获取命令字
	switch(luc_type)
	{
		case SET_COM_PHONE			:	SetComPhone();				break;			// 设置串口电话号码
		case QUERIES_COM_PHONE		:	QueriesComPhone();			break;			// 查询串口电话号码
//		case DEL_COM_PHONE			:	DelComPhone();				break;			// 删除串口电话号码
		case SET_COM_ARMED			:	SetComArmed();				break;			// 设置串口布/撤防
		case QUERIES_COM_ARMED		:	QueriesComArmed();			break;			// 查询串口布/撤防
		case SET_COM_WAR_TIME		:	SetComWarTime();			break;			// 设置串口警号声时间
		case QUERIES_COM_WAR_TIME	:	QueriesComAlarTimee();		break;			// 查询串口警号声时间
		case TEL_ALARM_KEEP_ALIVE	:	SetTelKeepAlive();			break;			// 心跳	
		case MPROBE_ALAR			:	ProbeAlar() ; 				break;			// 探测器报警,有线报警
		default:break;
	}
}


//===============================================================================================
//语法格式:	ScanComProtoc()	
//实现功能: 扫描串口协议
//参数:		无
//返回:		无
//创建时间:2008-12-24          修改时间:
//创建人员:                    修改人员:
//===============================================================================================
void ScanComProtoc()
{
//	unsigned char data luc_i ; 
	//if(guc_bitRsCom)
	//{
		ES = 0 ;																//关闭接收中断,防止再接收产生的干扰		
		TR2 =  0;																//关闭定时器2
	//	if(RsBuf[1]==TEL_ALARM_KEEP_ALIVE)SetTelKeepAlive();					//心跳
	//	else if(judgeTCPSame())	
		RsDisProtoc();															//判断协议是否相同
		RsBuf[0] = 0x00;
	//	for(luc_i = 0 ; luc_i < 30 ; luc_i ++)
	//	{
	//		RsBuf[luc_i] = 0x00;
	//	}
		ES = 1 ;																//恢复接收	
		TR2 =  1;																//开启定时器2
		guc_bitRsCom = 0;
//	}
}

⌨️ 快捷键说明

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