?? dvs-alar-out.c
字號:
//DVS-ALAR-OUT.C
#include "DVS-V1.0.H"
//============================================ 位定義 ========================================
bit guc_BitTel ; // 拔打電話標致位
//============================================================================================
//=========================================== 函數定義 =======================================
void AlarOut(); //報警輸出
void ComAlarOut(unsigned char auc_ArmNub); //傳感器報警時串口報警信息輸出
//============================================================================================
//=========================================== 外部定義 =======================================
//函數
extern unsigned char RdEEPROM(unsigned char address); //讀EEPROM
extern void WrEEPROM(unsigned char address,unsigned char indata); //寫EEPROM
//extern void RxTCPSame(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);//返回協議
extern void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);
extern void SendDTMEDat(unsigned char auc_data); //DTMF拔號
extern void Delay1Ms(unsigned int auc_time); //延時1MS
extern void SendToData(unsigned char *p,unsigned char Long); //發送命令
extern void SendASC(unsigned char ASC) ; //發送-個ASCII
extern void SuccBuzzer(); //設置成功時發出的聲音
extern void FailBuzzer(); //設置失敗時發出的聲音
extern unsigned char DTMF(); //DTMF解碼
//extern void Greek_Listen_Ctrl(); //現場監聽
//變量
extern unsigned char bdata guc_74HC164LED; //指示燈
extern unsigned int data guc_AlarTi; //報警時間計數器
extern unsigned char data guc_AlarCnt; //拔號時計算器
extern unsigned char data guc_AlarNub; //防區號
extern unsigned int data guc_TiAlar; //警笛時間
extern unsigned int data guc_ERCTI; //放音觸出定時
extern unsigned char idata RsBuf[32]; //接收緩沖區
extern unsigned char data guc_RsPoint; //接收長度
extern unsigned int data guc_Timer0; //拔號按鍵定時計數器
extern unsigned int idata guc_ENCD_TI; //報警后開始放音,放到一定時間后開始打開現場聽
//位
extern bit guc_bitbhOF; //拔號開關
extern bit guc_bit_Alar_led;
extern bit guc_Bit_BuChe; //布撤防:1為布,0為撤
extern bit guc_bit_ERC; //放音開關
extern bit guc_bit_SenAlar; //傳感器報警
extern bit guc_bit_AlLedOF; //報警指示燈閃爍開關
extern bit guc_bit_ReturnAlarPul; //在拔號時用戶想停止報警
extern bit guc_bitENCD; //現場聽
//============================================================================================
extern void SendToData(unsigned char *p,unsigned char Long); //發送命令
//============================================================================================
//語法格式:LiseCtrl()
//實現功能:發生警情時電話遠程監聽
//參數: 無
//返回值: 無
//創建時間:2008-12-30 修改時間:
//創建人員: 修改人員:
//============================================================================================
void LiseCtrl()
{
guc_bitENCD = 0 ; // 清除現場聽標致
guc_bit_ERC = 0; // 關閉放音
Play_Snd = 1; // 關閉放音
Listen_CTRL = 1; //打開現場監聽
// SendToData("25",2);
}
//============================================================================================
//語法格式:Telephone()
//實現功能:拔打電話
//輸入參數:無
//返回參數:無
//創建時間:2009-02-27 修改時間:
//創建人員: 修改人員:
//============================================================================================
void Telephone() // 拔打電話
{
unsigned char idata luc_Len,luc_i;
unsigned char idata luc_Buf[PH_CODE_LEN];
HANDUP = 1; //掛機
Delay1Ms(1000);
for(luc_Len=0 ;luc_Len<PH_CODE_LEN - 1;luc_Len++)
{
luc_Buf[luc_Len] = RdEEPROM(STER_ADDR+PH_CODE_LEN*guc_AlarCnt+luc_Len+1); //第一個字節為'F'
if(luc_Buf[luc_Len]==0xff)break;
}
for(luc_i = 0 ;luc_i <luc_Len ; luc_i++)
{
SendDTMEDat(luc_Buf[luc_i]);
}
}
//============================================================================================
//語法格式:AlarOut()
//實現功能:傳感器報警輸出
//參數: 無
//返回值: 無
//創建時間:2008-11-30 修改時間:
//創建人員: 修改人員:
//============================================================================================
void AlarOut()
{
if(guc_bitbhOF)
{
if((guc_bit_SenAlar)&&(guc_Bit_BuChe)) // 傳感器遙控控制,如果布防了
{
if((guc_BitTel)&&(!ONLINE)) // 如果電話線斷了,也不拔打電話
{
if(RdEEPROM(STER_ADDR+PH_CODE_LEN*guc_AlarCnt)=='F')// 如果沒有電話號碼也不打電話
{
guc_BitTel = 0 ; // 拔打電話標致位清0
Telephone() ; // 拔打電話
guc_ERCTI = REC_PLAY_TIME; // 放音開始定時
guc_bit_ERC = 1; // 拔完號之后開始放音
guc_AlarTi = ALARTIME; // 報警開始定時60秒
guc_ENCD_TI = 32*20; // 20秒后開始現場聽
guc_bitENCD = 1 ; // 現場聽標致
}
}
if((guc_ENCD_TI==0)&&(guc_bitENCD)) LiseCtrl();
if(guc_AlarTi == 0)
{
HANDUP = 0; // 掛機
Delay1Ms(3000); // 延時等待電話線復位
guc_BitTel = 1 ; // 拔打電話標致位
guc_bit_ERC = 0; // 關閉放音
Listen_CTRL = 0; // 關閉現場監聽
guc_AlarCnt++;
}
if(guc_AlarCnt>=9)
{
guc_AlarCnt = 0; // 拔號時計算器
guc_bit_SenAlar = 0; // 關閉傳感器報警
}
}
}
}
//============================================================================================
//語法格式:ComAlarOut()
//實現功能:傳感器報警時串口報警信息輸出
//參數: 防區號
//返回值: 無
//創建時間:2008-12-29 修改時間:
//創建人員: 修改人員:
//============================================================================================
void ComAlarOut(unsigned char auc_ArmNub)
{
unsigned char data luc_temp;
bit bit_ok = 0;
luc_temp = auc_ArmNub-1;
judgeRAYTC(ALARCPP,1,&luc_temp); // 發送警情信息
guc_RsPoint = 0; // 清除接收長度
// Delay1Ms(1000); // 等待傳感器不再發出信號
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -