📄 dvs-comprotoc.c
字号:
/*
//===============================================================================================
//语法格式: 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 + -