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

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

?? communication.c

?? 基于S3C4510的家庭網關的通訊進程程序源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/********************************************************************
*以下為串口通訊進程                                               
*功能:實現家庭網絡中網關與各子節點通訊                           
*進程名:communication.c                                          
*此程序為測試版 版號:1.1                                         
*完成日期:2004.7.18                                             
*進程包含主要函數有:                                             
*1、 main函數                //主函數                             
*2、 Signal_Handler_IO      //信號處理函數,響應主動上報的報警信息
*3、 Alarm_Inf               //報警信息處理函數                   
*4、 Renew_Html_Inf          //網頁中小區信息處理函               
*5、 Renew_Html              //動態網頁刷新函數                   
*6、 Control_Order_Send      //接收并向下轉發控制命令函數         
*7、 Receive_Packet          //接收子節點脈沖量、模擬量函數      
*8、 Send_Mail_packet        //發送郵件數據包函數                    
*9、 Get_Mail_Address        //獲取郵件服務器IP地址               
*10、Get_User_Inf            //獲取用戶信息                       
*11、Get_Collect_Time        //從IIC中讀出數據采集設定時間參數    
*12、Anniu_Inf_Send          //緊急報警按鈕信息發送郵件函數       
*13、Judge_Node_Type         //判斷節點類型函數                  
*14、Select_Time_Interval    //網關定時采集數據時間判斷函數       
*進程包含自定義頭文件有:                                           
*maillip.h                   //郵件函數庫頭文件                  
*iic.h                       //I2C函數庫頭文件                    
*htmllib.h                   //動態網頁函數庫文件                 
*ds1302.h                    //ds1302實時時鐘函數頭文件             
*communication.h             //進程子定義函數庫頭文件               
********************************************************************/
#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 "communication.h"
/******************************************************************** 
*信號處理函數                                                     
*功能:有信號到來,則調用此函數。                                 
*返回值: wait_flag = FALSE                                        
*********************************************************************/ 
void Signal_Handler_IO (int status) 
{ 
 printf("received SIGIO signal.\n"); 
 wait_flag = FALSE; 
} 

/*********************************************************************
*報警信息處理函數                                                  
*功能:接收并處理來自子節點的報警或安防信息,并發送郵件            
*返回值:0或1或2或-1                                                  
*返回1表示收到設防信息并設置設防標志;                             
*返回0表示收到撤防信息并設置撤防標志;                            
*返回2表示收到報警信息并設置報警標志;                                
*返回-1表示此數據包有誤;	                                   
**********************************************************************/
int Alarm_Inf(BYTE pac_buffer[20])
{
	BYTE alarm_buf[20];
	BYTE fun_code;               //定義數據包功能碼
	BYTE *alarm_inf,tmp_buf[20];
	BYTE *SendMailStr;	  
        BYTE tittle[30];             //定義郵件的標題   
        BYTE body[50];               //定義郵件的內容 
        BYTE TimeBuffer[8];
        BYTE netwk,node;             //定義網絡號和節點號
        int show_node;       
        
        alarm_inf = tmp_buf;
	strcpy(alarm_buf,pac_buffer);	
	if(alarm_buf[0]==0x44)
	{
          /*網絡中有兩種節點號,Zigbee節點號和撥碼設置節點號  * 
           *在網絡初始后他們建立一一對應關系                  */		
          netwk = (alarm_buf[1]&0xf0);  //將高四位網絡號賦給netwk
	  show_node = (int)(alarm_buf[1]&0x0f);//將低四位Zigbee節點號賦給show_node	
	  fun_code=(alarm_buf[3]&0x0f);
          node=(alarm_buf[3]>>4)&0x0f;//將低四位撥碼設置節點號賦給node		
	  if(fun_code==0x0f)
	   {
	     tmp_buf[0] = alarm_buf[5];
	     tmp_buf[1] = '\0';	
             if(alarm_buf[5] == alarm_set_mode)
	     {
	     /*發送設防郵件*/
	     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)
           {
             /*發送撤防郵件*/
             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)
	    {
	     /*發送報警郵件*/
	     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);}
}
/*************************************************************************** 
*小區信息處理函數                                                          
*功能:刷新網頁中的小區信息。                                               
***************************************************************************/ 
void Renew_Html_Inf(BYTE PipeBuffer1[PIPEBUFFER_SIZE],int num)
{
    BYTE TimeBuffer[8];
    BYTE buffer[30];	
    int i;
    i = num;  //i 表示是小區的第i條信息
    /*獲取小區信息發送時間*/	
    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);	
}
/*************************************************************************** 
*函數名:Renew_Html 動態網頁刷新                                           
* 功能:將數據實時添入網頁中,動態刷新網頁函數                              
***************************************************************************/ 
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);
        /*獲取網頁顯示時間*/
        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>家庭網絡信息:</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++)
            {
             /*子網1中有節點0,而子網0中沒有節點0,有一一對應表*/
             /*子網0中節點0是主節點*/
             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);//顯示節點號
 	           htmlText5(fd1,tmp_buffer,size);
 	           size = sprintf(tmp_buffer,"%u",NetNode[i][j].node_data);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節點采集數據
 	           size = sprintf(tmp_buffer,"%s",NetNode[i][j].show_node_time);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節點采集數據時間
 	           size = sprintf(tmp_buffer,"%d",NetNode[i][j].cell);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節點電池電量
 	           size = sprintf(tmp_buffer,"%s",NetNode[i][j].funtion);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節點功能
 	           size = sprintf(tmp_buffer,"%s",NetNode[i][j].state);
 	           htmlText5(fd1,tmp_buffer,size);//顯示節點狀態
 	           htmlText6(fd1);	
 	          }                  
    	       }
 	    }
 	    htmlText7(fd1);
 	    htmlTextHead1(fd1);
 	    for(i=0;i<SetInfNum+1;i++)
 	    { 
 	    	/*用是否顯示T來區分信息是否讀過*/
 	    	if(PipeInfBuffer[i][0]=='T')
 	    	{ 	    			    	
 	        size = sprintf(tmp_buffer,"小區信息:%s",PipeInfBuffer[i]);
 	        htmlText1(fd1,tmp_buffer,size);}/*未讀過的小區信息顯示*/
 	        else
 	        {size = sprintf(tmp_buffer,"小區信息:%s",PipeInfBuffer[i]);
 	        htmlText(fd1,tmp_buffer,size);}/*已讀過的小區信息顯示*/
            }
            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); 
} 

/*************************************************************************** 
*函數名:Control_Order_Send 接收并向下轉發控制命令函數                     
*功能:接收控制網頁通過管道(pipe)傳送控制命令,并將按通信協議打包發送     
***************************************************************************/ 
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};//發送幀格式
	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)
    {
    	/*網頁中確認按鈕動作,用戶已看到報警信息     *
         *因而給報警節點發送命令關掉報警燈           */
    	 con_order_flag = 0;/*無需給網頁返回應答信息因而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
    {
    	/*收到網頁發送的控制命令,按不同類型組成命令幀,準備發送*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区不卡| 日韩精品一区二区三区四区| 久久草av在线| 亚洲成av人**亚洲成av**| 亚洲影院理伦片| 亚洲尤物视频在线| 午夜精品久久久久久久99水蜜桃| 一区二区三区免费在线观看| 一区二区三区中文字幕精品精品| 夜夜嗨av一区二区三区网页| 亚洲国产美女搞黄色| 天堂一区二区在线免费观看| 麻豆91在线播放| 国产精品一区二区在线播放| 国产.欧美.日韩| 色婷婷精品大在线视频| 欧美日韩国产另类一区| 日韩一级片在线播放| 久久久久久久久97黄色工厂| 亚洲欧洲www| 香蕉成人伊视频在线观看| 日韩黄色免费网站| 国产精品一区二区男女羞羞无遮挡| 国产寡妇亲子伦一区二区| 91一区二区三区在线播放| 精品视频在线视频| 久久久久一区二区三区四区| 亚洲人成在线观看一区二区| 日韩vs国产vs欧美| 粉嫩13p一区二区三区| 在线欧美日韩精品| 精品99一区二区三区| 亚洲少妇中出一区| 精品亚洲国产成人av制服丝袜 | 亚洲欧美在线aaa| 亚洲国产综合色| 国产一区二区不卡在线 | 国产精品久久久久影院老司| 亚洲欧美日韩电影| 国产又粗又猛又爽又黄91精品| 91在线无精精品入口| 精品国产一区二区三区久久久蜜月 | 1024成人网色www| 视频一区免费在线观看| www.色综合.com| 欧美精品一区二区三区蜜桃视频| 1区2区3区国产精品| 久久国产精品色| 欧美性猛交xxxxxx富婆| 国产精品三级av在线播放| 日本不卡一区二区| 色婷婷久久综合| 国产精品污www在线观看| 久久精品国产亚洲a| 欧美体内she精高潮| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲免费三区一区二区| 国产精品自在欧美一区| 欧美一区二区久久久| 亚洲成人免费视频| 一本色道久久综合狠狠躁的推荐| 欧美高清在线一区| 国产福利91精品一区| 久久综合色8888| 麻豆91在线播放| 日韩网站在线看片你懂的| 天天亚洲美女在线视频| 欧美日韩精品一区视频| 亚洲网友自拍偷拍| 欧美日韩一区小说| 亚洲愉拍自拍另类高清精品| 色综合网色综合| 亚洲欧美日韩国产中文在线| 99久久精品免费| 亚洲天堂中文字幕| 色噜噜狠狠色综合中国| 亚洲美女淫视频| 欧美怡红院视频| 日欧美一区二区| 日韩欧美综合一区| 免费看欧美美女黄的网站| 欧美大片国产精品| 国产伦精品一区二区三区免费迷 | 欧美最猛性xxxxx直播| 亚洲精品欧美二区三区中文字幕| 91亚洲国产成人精品一区二三| 国产精品国产三级国产普通话蜜臀| 成人免费视频网站在线观看| 国产精品久久久久7777按摩| 96av麻豆蜜桃一区二区| 亚洲一区二区四区蜜桃| 欧美男生操女生| 久久99精品久久久久久国产越南 | 欧美放荡的少妇| 蜜臀久久99精品久久久久宅男| 日韩三级伦理片妻子的秘密按摩| 老司机午夜精品| 国产日韩欧美电影| 色综合天天综合给合国产| 亚洲妇女屁股眼交7| 欧美成人三级在线| 99久久综合色| 日韩电影一区二区三区四区| 久久一留热品黄| 91免费视频网| 免费高清在线一区| 国产精品超碰97尤物18| 91.麻豆视频| 粉嫩绯色av一区二区在线观看| 又紧又大又爽精品一区二区| 欧美一个色资源| 99视频在线观看一区三区| 日韩在线一区二区| 国产欧美日韩另类视频免费观看| 欧美中文字幕亚洲一区二区va在线| 免费看精品久久片| 亚洲精品乱码久久久久久 | 国产精品伦一区| 欧美日本一区二区三区四区 | 国产精品成人免费精品自在线观看| 欧美三级一区二区| 成人国产精品免费观看| 日韩电影在线看| 一区二区免费视频| 中文无字幕一区二区三区 | 激情久久五月天| 亚洲一区二区三区中文字幕| 欧美经典三级视频一区二区三区| 欧美日韩精品一区二区三区四区| 不卡视频一二三| 国产一区二区三区美女| 日韩精品乱码免费| 亚洲一区二区三区视频在线播放| 国产精品欧美久久久久一区二区| 欧美不卡在线视频| 91精品国产黑色紧身裤美女| 在线视频你懂得一区二区三区| 成人高清视频免费观看| 国产乱码精品一区二区三 | 久久精品网站免费观看| 欧美精品三级在线观看| 欧美性大战久久久久久久| 91免费视频网址| 99re热视频精品| 风间由美性色一区二区三区| 激情欧美日韩一区二区| 久99久精品视频免费观看| 麻豆精品一区二区av白丝在线| 亚洲国产精品影院| 亚洲在线一区二区三区| 亚洲一区二区中文在线| 亚洲男同1069视频| 亚洲欧美电影院| 一区二区久久久久久| 亚洲色图在线播放| 亚洲黄色小说网站| 亚洲线精品一区二区三区| 亚洲在线观看免费| 视频一区视频二区中文| 人人爽香蕉精品| 精品一区二区日韩| 丁香亚洲综合激情啪啪综合| 成人国产在线观看| 欧美综合欧美视频| 91精品国产综合久久福利| 日韩精品一区二区三区视频| 精品国产乱码久久久久久蜜臀 | 婷婷开心激情综合| 日本亚洲三级在线| 国产麻豆成人精品| a4yy欧美一区二区三区| 日本精品一级二级| 欧美一区二区三区四区五区| 亚洲精品一线二线三线| 中文字幕在线不卡国产视频| 亚洲综合在线电影| 美女任你摸久久| 成人一道本在线| 欧美日韩精品一区二区在线播放| 日韩一区二区三区视频| 中文字幕免费一区| 亚洲第四色夜色| 国产麻豆精品在线观看| 欧美综合在线视频| 久久久久久亚洲综合影院红桃 | 免费观看30秒视频久久| 国产91精品一区二区麻豆网站| 色呦呦国产精品| 日韩视频在线永久播放| 18成人在线视频| 天天av天天翘天天综合网| 风流少妇一区二区| 欧美理论片在线| 国产精品久久久久久久久免费丝袜| 亚洲成人av资源| 丁香六月久久综合狠狠色| 欧美剧情电影在线观看完整版免费励志电影| 日韩精品一区二区三区中文不卡| 亚洲欧洲成人av每日更新| 久久福利资源站|