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

📄 alarm.c

📁 单片机程序代码,经过很详细的测试.呵呵,硬件相关.
💻 C
📖 第 1 页 / 共 3 页
字号:
}


void report_int_alarm(unsigned char portid,unsigned char bufnum){
//发送某一光口的中断告警函数
unsigned char xdata value;
unsigned char xdata num;
	for (num = 0; num <= 3; num++){
		value = (int_alarm[portid][num] >> 4) & 0x0F;
		if (value > 9){                                                                       
			tx_buf[bufnum + 2 * num] = value + 0x37;                                                    
		}
		else tx_buf[bufnum + 2 * num] = value + 0x30;
		value = int_alarm[portid][num] & 0x0F;
		if (value > 9){
			tx_buf[bufnum + 2 * num + 1] = value + 0x37;
		}
		else tx_buf[bufnum + 2 * num + 1] = value + 0x30;
	}
}


void report_int_mcb0(void){
//发送MCB盘的光口1 中断告警函数
	tx_buf[0] = '$';                                                              
	tx_buf[1] = '2';                                                              
	tx_buf[2] = '1';                                                              
	tx_buf[3] = 0x46;						//送命令符F00 
	tx_buf[4] = 0x30;                                                             
	tx_buf[5] = 0x30;                                                             
	tx_buf[6] = '0';						//信息域长度11
	tx_buf[7] = '0';                                                              
	tx_buf[8] = '0';                                                              
	tx_buf[9] = 'B';
	tx_buf[10] = '5';
	tx_buf[11] = '1';
	tx_buf[12] = '1';
	report_int_alarm(0,13);
	tx_buf[21] = '*';
	tx_buf_pointer = 0;	                                     
	while(tx_buf[tx_buf_pointer] != '*'){                        
		SBUF = tx_buf[tx_buf_pointer];                       
		while(tx_done == 0);                                 
		tx_done = 0;                                         
		tx_buf_pointer++;                                    
	}                                                            
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);                                         
	tx_done = 0;
}

void report_int_mcb1(void){
//发送MCB盘的光口2中断告警函数
	tx_buf[0] = '$';                                                              
	tx_buf[1] = '2';                                                              
	tx_buf[2] = '1';                                                              
	tx_buf[3] = 0x46;						//送命令符F00 
	tx_buf[4] = 0x30;                                                             
	tx_buf[5] = 0x30;                                                             
	tx_buf[6] = '0';						//信息域长度11
	tx_buf[7] = '0';                                                              
	tx_buf[8] = '0';                                                              
	tx_buf[9] = 'B';
	tx_buf[10] = '5';
	tx_buf[11] = '1';
	tx_buf[12] = '2';
	report_int_alarm(1,13);
	tx_buf[21] = '*';
	tx_buf_pointer = 0;	                                     
	while(tx_buf[tx_buf_pointer] != '*'){                        
		SBUF = tx_buf[tx_buf_pointer];                       
		while(tx_done == 0);                                 
		tx_done = 0;                                         
		tx_buf_pointer++;                                    
	}                                                            
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);                                         
	tx_done = 0;
}


void report_int_otb2(void){
//发送OTB盘光口1的中断告警函数
	tx_buf[0] = '$';                                                              
	tx_buf[1] = '2';                                                              
	tx_buf[2] = '1';                                                              
	tx_buf[3] = 0x46;						//送命令符F00 
	tx_buf[4] = 0x30;                                                             
	tx_buf[5] = 0x30;                                                             
	tx_buf[6] = '0';						//信息域长度11
	tx_buf[7] = '0';                                                              
	tx_buf[8] = '0';                                                              
	tx_buf[9] = 'B';
	tx_buf[10] = '4';
	tx_buf[11] = '4';
	tx_buf[12] = '1';
	report_int_alarm(2,13);
	tx_buf[21] = '*';
	tx_buf_pointer = 0;	                                     
	while(tx_buf[tx_buf_pointer] != '*'){                        
		SBUF = tx_buf[tx_buf_pointer];                       
		while(tx_done == 0);                                 
		tx_done = 0;                                         
		tx_buf_pointer++;                                    
	}                                                            
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);                                         
	tx_done = 0;
}

void report_int_otb3(void){
//发送OTB盘的光口2中断告警函数
	tx_buf[0] = '$';                                                              
	tx_buf[1] = '2';                                                              
	tx_buf[2] = '1';                                                              
	tx_buf[3] = 0x46;						//送命令符F00 
	tx_buf[4] = 0x30;                                                             
	tx_buf[5] = 0x30;                                                             
	tx_buf[6] = '0';						//信息域长度11
	tx_buf[7] = '0';                                                              
	tx_buf[8] = '0';                                                              
	tx_buf[9] = 'B';
	tx_buf[10] = '4';
	tx_buf[11] = '4';
	tx_buf[12] = '2';
	report_int_alarm(3,13);
	tx_buf[21] = '*';
	tx_buf_pointer = 0;	                                     
	while(tx_buf[tx_buf_pointer] != '*'){                        
		SBUF = tx_buf[tx_buf_pointer];                       
		while(tx_done == 0);                                 
		tx_done = 0;                                         
		tx_buf_pointer++;                                    
	}                                                            
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);                                         
	tx_done = 0;
}


void report_check_mcb(void){
//发送MCB盘的非中断告警函数
unsigned char xdata value;
unsigned char xdata num;
	tx_buf[0] = '$';                                                              
	tx_buf[1] = '2';                                                              
	tx_buf[2] = '1';                                                              
	tx_buf[3] = 0x46;						//送命令符F00 
	tx_buf[4] = 0x30;                                                             
	tx_buf[5] = 0x30;                                                             
	tx_buf[6] = '0';						//信息域长度13
	tx_buf[7] = '0';                                                              
	tx_buf[8] = '0';                                                              
	tx_buf[9] = 'D';
	tx_buf[10] = '5';
	tx_buf[11] = '1';
	tx_buf[12] = '0';
	for (num = 0; num <= 4; num++){
		value = (check_alarm_mcb[num] >> 4) & 0x0F;
		if (value > 9){                                                                       
			tx_buf[13 + 2 * num] = value + 0x37;                                                    
		}
		else tx_buf[13 + 2 * num] = value + 0x30;
		value = check_alarm_mcb[num] & 0x0F;
		if (value > 9){
			tx_buf[13 + 2 * num + 1] = value + 0x37;
		}
		else tx_buf[13 + 2 * num + 1] = value + 0x30;
	}
	tx_buf[23] = '*';
	tx_buf_pointer = 0;	                                     
	while(tx_buf[tx_buf_pointer] != '*'){                        
		SBUF = tx_buf[tx_buf_pointer];                       
		while(tx_done == 0);                                 
		tx_done = 0;                                         
		tx_buf_pointer++;                                    
	}                                                            
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);                                         
	tx_done = 0;
}
	

void report_check_otb(void){
//发送OTB盘非中断告警函数
unsigned char xdata value;
unsigned char xdata num;
	tx_buf[0] = '$';                                                              
	tx_buf[1] = '2';                                                              
	tx_buf[2] = '1';                                                              
	tx_buf[3] = 0x46;						//送命令符F00 
	tx_buf[4] = 0x30;                                                             
	tx_buf[5] = 0x30;                                                             
	tx_buf[6] = '0';						//信息域长度9
	tx_buf[7] = '0';                                                              
	tx_buf[8] = '0';                                                              
	tx_buf[9] = '9';
	tx_buf[10] = '4';
	tx_buf[11] = '4';
	tx_buf[12] = '0';
	for (num = 0; num <= 2; num++){
		value = (check_alarm_otb[num] >> 4) & 0x0F;
		if (value > 9){                                                                       
			tx_buf[13 + 2 * num] = value + 0x37;                                                    
		}
		else tx_buf[13 + 2 * num] = value + 0x30;
		value = check_alarm_otb[num] & 0x0F;
		if (value > 9){
			tx_buf[13 + 2 * num + 1] = value + 0x37;
		}
		else tx_buf[13 + 2 * num + 1] = value + 0x30;
	}
	tx_buf[19] = '*';
	tx_buf_pointer = 0;	                                     
	while(tx_buf[tx_buf_pointer] != '*'){                        
		SBUF = tx_buf[tx_buf_pointer];                       
		while(tx_done == 0);                                 
		tx_done = 0;                                         
		tx_buf_pointer++;                                    
	}                                                            
	SBUF = tx_buf[tx_buf_pointer];          //发送最后一个字符'*'
	while(tx_done == 0);                                         
	tx_done = 0;
}

void report_check_TU(unsigned char boardid,unsigned char portid,unsigned char bufnum){
//发送2M盘的某一支路函数
unsigned char xdata value;
unsigned char xdata num;
	for (num = 0; num <= 1; num++){
		value = (check_alarm_2M[boardid - 1][portid - 1][num] >> 4) &0x0F;
		if (value > 9){
			tx_buf[bufnum + 2 * num] = value + 0x37;
		}
		else tx_buf[bufnum + 2 * num] = value + 0x30;
		value = check_alarm_2M[boardid - 1][portid - 1][num] &0x0F;
		if (value > 9){
			tx_buf[bufnum + 2 * num + 1] = value + 0x37;
		}
		else tx_buf[bufnum + 2 * num + 1] = value + 0x30;
	}
}

void report_check_TU_group(unsigned char boardid,unsigned char groupid){
//发送2M盘7个支路的告警函数

⌨️ 快捷键说明

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