亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? new_communication.c

?? 基于S3C4510的家庭網(wǎng)關的通訊進程程序源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/********************************************************************
*以下為串口通訊進程                                                 *
*功能:實現(xiàn)家庭網(wǎng)絡中網(wǎng)關與各子節(jié)點通訊                             *
*進程名:communication.c                                            *
*此程序為測試版 版號:1.1                                            *
*完成日期:2004.7.18                                                *
*進程包含主要函數(shù)有:                                               *
*1、 main函數(shù)                //主函數(shù)                               *
*2、 Signal_Handler_IO       //信號處理函數(shù),響應主動上報的報警信息 *
*3、 Alarm_Inf               //報警信息處理函數(shù)                     *
*4、 Renew_Html_Inf          //網(wǎng)頁中小區(qū)信息處理函數(shù)               *
*5、 Renew_Html              //動態(tài)網(wǎng)頁刷新函數(shù)                     *
*6、 Control_Order_Send      //接收并向下轉(zhuǎn)發(fā)控制命令函數(shù)           *
*7、 Receive_Packet          //接收子節(jié)點脈沖量、模擬量函數(shù)         *
*8、 Send_Mail_packet        //發(fā)送郵件數(shù)據(jù)包函數(shù)                   *     
*9、 Get_Mail_Address        //獲取郵件服務器IP地址                 * 
*10、Get_User_Inf            //獲取用戶信息                         *
*11、Get_Collect_Time        //從IIC中讀出數(shù)據(jù)采集設定時間參數(shù)      *
*12、Anniu_Inf_Send          //緊急報警按鈕信息發(fā)送郵件函數(shù)         *
*13、Judge_Node_Type         //判斷節(jié)點類型函數(shù)                     *
*14、Select_Time_Interval    //網(wǎng)關定時采集數(shù)據(jù)時間判斷函數(shù)         *
*進程包含自定義頭文件有:                                            *   
*maillip.h                   //郵件函數(shù)庫頭文件                     *
*iic.h                       //I2C函數(shù)庫頭文件                      *
*htmllib.h                   //動態(tài)網(wǎng)頁函數(shù)庫文件                   * 
*ds1302.h                    //ds1302實時時鐘函數(shù)頭文件             *   
*communication.h             //進程子定義函數(shù)庫頭文件               *   
*********************************************************************/
#include  <stdio.h>  
#include  <string.h>
#include  <unistd.h>
#include  <fcntl.h>
#include  <errno.h>
#include  <termios.h>
#include  <sys/types.h>
#include  <sys/stat.h>
#include  <stdlib.h>
#include  <signal.h>

#include "maillip.h"
#include "iic.h"
#include "htmllib.h"
#include "ds1302.h"
#include "new_communication.h"
/******************************************************************** 
*信號處理函數(shù)                                                      * 
*功能:有信號到來,則調(diào)用此函數(shù)。                                   *
*返回值: wait_flag = FALSE                                         * 
*********************************************************************/ 
void Signal_Handler_IO (int status) 
{ 
 printf("received SIGIO signal.\n"); 
 wait_flag = FALSE; 
} 

/*********************************************************************	
*報警信息處理函數(shù)                                                    *
*功能:接收并處理來自子節(jié)點的報警或安防信息,并發(fā)送郵件              *
*返回值:0或1或2或-1                                                 *    
*返回1表示收到設防信息并設置設防標志;                               * 
*返回0表示收到撤防信息并設置撤防標志;                               *
*返回2表示收到報警信息并設置報警標志;                               *    
*返回-1表示此數(shù)據(jù)包有誤;	                                     *
**********************************************************************/
int Alarm_Inf(BYTE pac_buffer[20])
{
	BYTE alarm_buf[20];
	BYTE fun_code;               //定義數(shù)據(jù)包功能碼
	BYTE *alarm_inf,tmp_buf[20];
	BYTE *SendMailStr;	  
        BYTE tittle[30];             //定義郵件的標題   
        BYTE body[50];               //定義郵件的內(nèi)容 
        BYTE TimeBuffer[8];
        BYTE netwk,node;             //定義網(wǎng)絡號和節(jié)點號
        int show_node;       
        
        alarm_inf = tmp_buf;
	strcpy(alarm_buf,pac_buffer);	
	if(alarm_buf[0]==0x44)
	{
          /*網(wǎng)絡中有兩種節(jié)點號,Zigbee節(jié)點號和撥碼設置節(jié)點號   * 
           *在網(wǎng)絡初始后他們建立一一對應關系                   */		
          netwk = (alarm_buf[1]&0xf0);  //將高四位網(wǎng)絡號賦給netwk
	  show_node = (int)(alarm_buf[1]&0x0f);//將低四位Zigbee節(jié)點號賦給show_node	
	  fun_code=(alarm_buf[3]&0x0f);
          node=(alarm_buf[3]>>4)&0x0f;//將低四位撥碼設置節(jié)點號賦給node		
	  if(fun_code==0x0f)
	   {
	     tmp_buf[0] = alarm_buf[5];
	     tmp_buf[1] = '\0';	
             if(alarm_buf[5] == alarm_set_mode)
	     {
	     /*發(fā)送設防郵件*/
	     sprintf(tittle,"she fang xin xi");
	     sprintf(body,"an fang xi tong qi dong");
	     SendMailStr = Send_Mail_Packet(netwk,node,alarm_inf);	                           
	     mail(DstStr,SrcStr,tittle,body,SendMailStr);
	     NetNode[(int)netwk][show_node].state="設防";                  
	     Get_Time(&TimeBuffer[0]);
             sprintf(NetNode[(int)netwk][show_node].show_node_time, \
             "(%02i/%02i;%02i:%02i)",ds_1302_time.month,ds_1302_time.date, \
             ds_1302_time.hour,ds_1302_time.min);
             /*點亮安防信息指示燈*/
             leddev = open("/dev/led",O_RDWR | O_NOCTTY );
             if ( leddev == -1 )
             {
                 printf("why not open file \n");
                 //exit(0);
             } 
              alarm_flag=1;    	/*設防標志為置1*/
              return(1);
           }
	   else if(alarm_buf[5] == alarm_cancel_mode)
           {
             /*發(fā)送撤防郵件*/
             sprintf(tittle,"che fang xing xi");
	     sprintf(body,"an fang xi tong guan bi");
	     SendMailStr = Send_Mail_Packet(netwk,node,alarm_inf);	                           
	     mail(DstStr,SrcStr,tittle,body,SendMailStr);
             NetNode[(int)netwk][show_node].state="撤防";
	     Get_Time(&TimeBuffer[0]);
             sprintf(NetNode[(int)netwk][show_node].show_node_time, \
             "(%02i/%02i;%02i:%02i)",ds_1302_time.month,ds_1302_time.date, \
             ds_1302_time.hour,ds_1302_time.min);
             if(alarm_flag==1)
             {
                 close(leddev); /*熄滅安防信息指示燈*/
             }
             alarm_flag = 0;     /*設防標志為置0*/
	     return(0);
           }
           else
           {printf("alarm data error");return(-1);} 
         }
         else if((fun_code==0x04)||(fun_code==0x05))/*傳送一路報警信息*/
         {
	    if(alarm_flag==0)/*未設防不進行報警處理*/
	    {
		return(2);	
	    }
	    else if(alarm_flag==1)
	    {
	     /*發(fā)送報警郵件*/
	     tmp_buf[0] = alarm_buf[5];
	     tmp_buf[1] = '\0';
	     sprintf(tittle,"jie dian bao jing");
	     sprintf(body,"you jie dian bao jing");
	     SendMailStr = Send_Mail_Packet(netwk,node,alarm_inf);	                           
	     mail(DstStr,SrcStr,tittle,body,SendMailStr);
	     AlarmNodeNum = show_node;
	     AlarmNetNum = (int)netwk;
	     alarm_tran_flag = 1;
	     NetNode[AlarmNetNum][AlarmNodeNum].state="報警";
	     /*獲取報警時間*/	                        
	     Get_Time(&TimeBuffer[0]);
             sprintf(NetNode[(int)netwk][show_node].show_node_time, \
             "(%02i/%02i;%02i:%02i)",ds_1302_time.month,ds_1302_time.date, \
             ds_1302_time.hour,ds_1302_time.min);	                        	 		
	     return(2);
	    }
            else
            {printf("alarm_flag error\n");return(-1);}
          }
          else
	    {printf("fun_code error\n");return(-1);} 
      }
      else
	{printf("information error\n");return(-1);}
}
/*************************************************************************** 
*小區(qū)信息處理函數(shù)                                                          *
*功能:刷新網(wǎng)頁中的小區(qū)信息。                                              * 
***************************************************************************/ 
void Renew_Html_Inf(BYTE PipeBuffer1[PIPEBUFFER_SIZE],int num)
{
    BYTE TimeBuffer[8];
    BYTE buffer[30];	
    int i;
    i = num;  //i 表示是小區(qū)的第i條信息
    /*獲取小區(qū)信息發(fā)送時間*/	
    Get_Time(&TimeBuffer[0]);		
    memset(PipeInfBuffer[i],'\0',sizeof(PipeInfBuffer[i]));	
    sprintf(buffer,"T(%02i-%02i %02i:%02i)",  \
    ds_1302_time.month,ds_1302_time.date,ds_1302_time.hour,ds_1302_time.min);
    strcat(PipeInfBuffer[i],buffer);	
    strcat(PipeInfBuffer[i],PipeBuffer1);	
}
/*************************************************************************** 
*函數(shù)名:Renew_Html 動態(tài)網(wǎng)頁刷新                                           *
* 功能:將數(shù)據(jù)實時添入網(wǎng)頁中,動態(tài)刷新網(wǎng)頁函數(shù)                             * 
***************************************************************************/ 
void Renew_Html(void)
{
	int fd1,i,j,restr,size;
	BYTE TimeBuffer[8];
	BYTE tmp_buffer[PIPEBUFFER_SIZE+1];
	
	fd1= open("/tmp/index.html", O_WRONLY | O_CREAT | O_TRUNC,0666 ); 
	if (fd1<0) {printf("can't open index.html");}
        htmlHeader(fd1);               
        htmlBody(fd1);
        htmlFormStr(fd1);
        /*獲取網(wǎng)頁顯示時間*/
        Get_Time(&TimeBuffer[0]);
        size = sprintf(tmp_buffer,"時間: %s 20%02i-%02i-%02i %02i:%02i:%02i",   \
        &my_1302_days[TimeBuffer[5]-1][0],ds_1302_time.year,ds_1302_time.month, \
        ds_1302_time.date,ds_1302_time.hour,ds_1302_time.min,ds_1302_time.sec);
	htmlText(fd1,tmp_buffer,size);
	htmlTextHead(fd1);
        htmlText(fd1,"<P><font face=\"宋體\" size=\"4\" color=\"#FF00FF\"><b>個人信息:</b></font></P>",73);
        htmlText(fd1,"<P><font face=\"楷體_GB2312\" size=\"3\" color=\"#008080\"></font></P>",64);
        size = sprintf(tmp_buffer,"用戶名: %s",NameStr);
        htmlText(fd1,tmp_buffer,size);                
        size = sprintf(tmp_buffer,"家庭地址: %s",AddressStr);
        htmlText(fd1,tmp_buffer,size);
        htmlTextEnd(fd1);  
        htmlText(fd1,"<P><font face=\"宋體\" size=\"4\" color=\"#FF00FF\"><b>家庭網(wǎng)絡信息:</b></font></P>",77);
        htmlText(fd1,"<P><font face=\"楷體_GB2312\" size=\"3\" color=\"#008080\"></font></P>",64);
        htmlText2(fd1);
        for(i=0;i<NetNum;i++)
            {
             /*子網(wǎng)1中有節(jié)點0,而子網(wǎng)0中沒有節(jié)點0,有一一對應表*/
             /*子網(wǎng)0中節(jié)點0是主節(jié)點*/
             if(i!=0)
 	      {j=0;}
 	     else
 	      {j=1;}    
 	     for(;j<NodeNum;j++)
 	       {
 	         if(NetNode[i][j].flag==1)
 	         {
 	           restr = (int)(NetNode[i][j].real_node>>4)&0x0f;
 	           htmlText3(fd1); 	             	      
 	           size = sprintf(tmp_buffer,"%d",i);
 	           htmlText5(fd1,tmp_buffer,size);
 	           size = sprintf(tmp_buffer,"%d",restr);//顯示節(jié)點號
 	           htmlText5(fd1,tmp_buffer,size);
 	           size = sprintf(tmp_buffer,"%u",NetNode[i][j].node_data);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節(jié)點采集數(shù)據(jù)
 	           size = sprintf(tmp_buffer,"%s",NetNode[i][j].show_node_time);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節(jié)點采集數(shù)據(jù)時間
 	           size = sprintf(tmp_buffer,"%d",NetNode[i][j].cell);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節(jié)點電池電量
 	           size = sprintf(tmp_buffer,"%s",NetNode[i][j].funtion);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節(jié)點功能
 	           size = sprintf(tmp_buffer,"%s",NetNode[i][j].state);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節(jié)點狀態(tài)
 	           htmlText6(fd1);	
 	          }                  
    	       }
 	    }
 	    htmlText7(fd1);
 	    htmlTextHead1(fd1);
 	    for(i=0;i<SetInfNum+1;i++)
 	    { 
 	    	/*用是否顯示T來區(qū)分信息是否讀過*/
 	    	if(PipeInfBuffer[i][0]=='T')
 	    	{ 	    			    	
 	        size = sprintf(tmp_buffer,"小區(qū)信息:%s",PipeInfBuffer[i]);
 	        htmlText1(fd1,tmp_buffer,size);}/*未讀過的小區(qū)信息顯示*/
 	        else
 	        {size = sprintf(tmp_buffer,"小區(qū)信息:%s",PipeInfBuffer[i]);
 	        htmlText(fd1,tmp_buffer,size);}/*已讀過的小區(qū)信息顯示*/
            }
            htmlTextEnd1(fd1); 
            if(anniu_flag==1)  
              {htmlAnniuStr(fd1,AnniuTimeBuffer,TimeSize);}
            else               
              {htmlAnniuQuit(fd1);}
            htmlText(fd1,"<p><input type=\"submit\" value=\"信息確認\" name=\"B0\"></p>",55); 
            htmlFormEnd(fd1);            
            htmlText4(fd1,"<td width=\"100%\"><p align=center>Copyright&copy; By智園慧家  2002--2003<BR>E-mail:<A href=\"sohu\">ercdc.bjut.edu.cn</A></p></td>",127);        
            htmlFooter(fd1);
            close(fd1); 
} 

/*************************************************************************** 
*函數(shù)名:Control_Order_Send 接收并向下轉(zhuǎn)發(fā)控制命令函數(shù)                     *
*功能:接收控制網(wǎng)頁通過管道(pipe)傳送控制命令,并將按通信協(xié)議打包發(fā)送    * 
***************************************************************************/ 
void Control_Order_Send(int fd,BYTE PipeBuffer[BUFFER_SIZE])
{
	int i,res,con_len;
	BYTE con_ch;
	WORD con_netwk,con_node,re;
	BYTE TimeBuffer[8];
	int read_flag = 0;
	int con_order_flag;
	BYTE data_buf[20];
	int alarm_return;
	int client_fd,show_node;
	int open_mode2=O_WRONLY|O_NONBLOCK;
	BYTE SenConData[10];
        BYTE ResDevData[7]={0x44,0x00,0x02,0x00,0x98,0x00,0x00};//發(fā)送幀格式
	BYTE PipeBuf[BUFFER_SIZE];
	BYTE some_data[BUFFER_SIZE];
	
    strcpy(PipeBuf,PipeBuffer);
    con_len=strlen(PipeBuf);
    PipeBuf[con_len] = '\0';
    if(strcmp(PipeBuf,"ok") == 0)
    {
    	/*網(wǎng)頁中確認按鈕動作,用戶已看到報警信息     *
         *因而給報警節(jié)點發(fā)送命令關掉報警燈           */
    	 con_order_flag = 0;/*無需給網(wǎng)頁返回應答信息因而con_order_flag置0*/
    	 memset(SenConData,'\0',sizeof(SenConData));
    	 SenConData[0] = 0x44;
         SenConData[1] = NetNode[AlarmNetNum][AlarmNodeNum].zigbee_node;
         SenConData[2] = 0x03;
	 SenConData[3] = NetNode[AlarmNetNum][AlarmNodeNum].real_node;
         SenConData[4] = set_relay_order;
         SenConData[5] = 0x3f;
         SenConData[6] = Bit_Xor(6,SenConData);
    }
    else
    {
    	/*收到網(wǎng)頁發(fā)送的控制命令,按不同類型組成命令幀,準備發(fā)送*/
    	con_order_flag = 1;/*需給網(wǎng)頁返回應答信息因而con_order_flag置1*/
    	/*打開應答管道,命令控制成功則返回應答信息給網(wǎng)頁*/
	client_fd = open(CLIENT_NAME,open_mode2);/*打開返回應答管道*/
	if(client_fd == -1){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影在线一区二区三区| 色综合色综合色综合色综合色综合| 国产成a人亚洲精| 欧洲中文字幕精品| 欧美激情一区在线| 久久成人麻豆午夜电影| 在线观看日韩毛片| 亚洲欧洲色图综合| 国产精品自产自拍| 欧美va在线播放| 日韩和欧美一区二区三区| 91精品福利在线| 国产精品久久久久久久久晋中| 久草热8精品视频在线观看| 欧美日韩亚洲丝袜制服| 亚洲精品菠萝久久久久久久| 粗大黑人巨茎大战欧美成人| 久久无码av三级| 男人的天堂亚洲一区| 欧美日韩一区不卡| 亚洲一区在线播放| 在线这里只有精品| 一区二区在线观看不卡| 91在线视频免费观看| 国产精品伦理一区二区| 成人av午夜影院| 中文字幕日本乱码精品影院| 丁香亚洲综合激情啪啪综合| 久久久久久电影| 国产精品自拍在线| 国产精品青草久久| 成人精品视频一区二区三区| 亚洲国产成人午夜在线一区| 国产精品18久久久久| 久久免费精品国产久精品久久久久| 久久97超碰国产精品超碰| 日韩欧美一级二级三级| 精品午夜一区二区三区在线观看| 日韩视频123| 国产综合久久久久久久久久久久| 精品国产伦理网| 国产精品综合一区二区| 国产网站一区二区三区| 成人午夜免费av| 亚洲人成伊人成综合网小说| 在线免费观看一区| 午夜精品一区二区三区电影天堂| 欧美一区二区在线免费观看| 伦理电影国产精品| 亚洲国产精品传媒在线观看| 91 com成人网| 肉肉av福利一精品导航| 精品久久一二三区| 99精品国产热久久91蜜凸| 亚洲美女在线国产| 欧美一区二区三区精品| 国产成人综合在线播放| 亚洲女女做受ⅹxx高潮| 欧美精品少妇一区二区三区| 国产一区视频网站| 亚洲精品视频在线| 精品国产乱码久久久久久图片| 岛国精品一区二区| 午夜影院久久久| 国产午夜三级一区二区三| 91国产成人在线| 国产原创一区二区| 一区二区三国产精华液| 精品国产三级电影在线观看| 99久久久久久99| 久久99精品一区二区三区三区| 中文字幕视频一区| 日韩欧美你懂的| 色综合婷婷久久| 国产一区二区三区观看| 亚洲一区二区精品视频| 欧美国产日产图区| 91精品欧美综合在线观看最新| 成人福利在线看| 美女精品一区二区| 亚洲乱码国产乱码精品精98午夜| 日韩欧美国产综合| 欧美综合在线视频| 成人永久免费视频| 奇米影视一区二区三区小说| 亚洲视频电影在线| 国产亚洲1区2区3区| 制服丝袜激情欧洲亚洲| 色老综合老女人久久久| 国产成人精品免费| 久国产精品韩国三级视频| 亚洲国产欧美一区二区三区丁香婷| 国产拍揄自揄精品视频麻豆 | 一区二区三区精品在线| 欧美激情综合五月色丁香小说| 8x8x8国产精品| 欧美日韩一区二区三区在线| 91视频xxxx| 不卡的av在线播放| 国产一二精品视频| 精品一区二区三区不卡| 欧美a一区二区| 日韩精品免费专区| 午夜精品一区二区三区免费视频 | 18成人在线观看| 国产亚洲va综合人人澡精品| 精品国产乱码久久久久久久久| 91精品中文字幕一区二区三区| 欧美影院一区二区| 在线看不卡av| 欧美自拍丝袜亚洲| 欧美三区免费完整视频在线观看| 色婷婷综合视频在线观看| 91在线你懂得| 在线视频亚洲一区| 欧美性色欧美a在线播放| 91黄色激情网站| 欧美亚男人的天堂| 欧美精品在线观看播放| 欧美精品1区2区| 日韩一区二区中文字幕| 精品久久久久久久久久久久久久久| 精品欧美一区二区三区精品久久| 精品国产乱码91久久久久久网站| 久久一区二区视频| 国产精品水嫩水嫩| 亚洲男人的天堂在线aⅴ视频| 亚洲精品免费一二三区| 亚洲第一综合色| 麻豆视频观看网址久久| 国产原创一区二区三区| 懂色av噜噜一区二区三区av| 91蜜桃网址入口| 欧美日韩大陆一区二区| 日韩午夜激情av| 国产免费久久精品| 亚洲色欲色欲www| 亚洲影视在线播放| 久久成人久久鬼色| jlzzjlzz亚洲女人18| 欧美性高清videossexo| 亚洲精品一区二区三区四区高清| 亚洲国产精品av| 午夜伦欧美伦电影理论片| 国模套图日韩精品一区二区 | 国产精品视频你懂的| 一区二区成人在线| 91麻豆国产福利在线观看| 在线观看91av| 日本一区二区成人在线| 天天综合网天天综合色| 国产在线不卡一区| 在线一区二区视频| 久久美女高清视频| 亚洲电影一区二区三区| 粉嫩av亚洲一区二区图片| 欧美性色欧美a在线播放| 久久精品视频在线看| 亚洲高清在线视频| 高清久久久久久| 欧美美女直播网站| 国产精品久久久久久妇女6080| 婷婷丁香激情综合| 91在线观看高清| 精品电影一区二区| 亚洲成人一区二区在线观看| 国产91综合一区在线观看| 91精品国产综合久久精品图片| 国产精品私房写真福利视频| 天天色图综合网| 91精品福利视频| 日本一区二区不卡视频| 蜜桃在线一区二区三区| 欧美日韩在线播| 亚洲四区在线观看| 国产精品1024久久| 精品美女被调教视频大全网站| 亚州成人在线电影| 色婷婷久久久综合中文字幕| 欧美极品xxx| 国产一区二区三区最好精华液| 欧美日韩免费一区二区三区| 国产精品国产三级国产专播品爱网| 久久99日本精品| 日韩欧美一区二区三区在线| 丝袜美腿成人在线| 欧美专区在线观看一区| 最新不卡av在线| 99久久精品一区| 中文字幕综合网| av亚洲精华国产精华精华| 久久亚区不卡日本| 国产呦萝稀缺另类资源| 亚洲一二三四久久| 色悠悠久久综合| 亚洲女人小视频在线观看| 91蜜桃视频在线| 亚洲精品国产一区二区三区四区在线| 波多野结衣一区二区三区 | 日韩精品一区二|