久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4165|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM32安卓APP控制+單片機(jī)315M/433M無線解碼的十路遙控開關(guān)源碼_學(xué)習(xí)型_成品

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
手機(jī)控制由易安卓5.8編寫的。
APP原理圖與線路圖由PADS9.5編輯。
一些調(diào)試工具由易語言編輯。

http://www.zg4o1577.cn/bbs/dpj-54638-1.html 單路
http://www.zg4o1577.cn/bbs/dpj-54161-1.html 四路
模擬315M/433M 2272解碼程序
工作頻率:72M
說明:10路繼電器輸出,10LED指示,1LED電源指示,1微動開關(guān)K1。
          按K1進(jìn)入編輯模式,LED指示燈全亮。
          在編輯模式下 ,按下遙控器鈕,LED1亮>>LED2亮>>....>>LED10亮>>全亮(此模式存儲的遙控碼是關(guān)閉所有的LED)>>退出編輯模式。
          在編輯模式下 ,按K1退出編輯模式或存儲有效的遙控碼。
          在編輯模式下 ,長按K1 (3S) 調(diào)整遙控模式。   
          在正常模式下,長按K1 (3S) 刪除所有存儲的遙控碼。      
          在正常模式下 , 按下遙控器鈕,及相應(yīng)的LED.繼電器亮滅。
注意: 同一條遙控碼 在同一個LED上存兩條,相當(dāng)于亮了又滅,無動作。
優(yōu)點(diǎn): 能接收2262的1.2M-4.7M電阻編碼,幾乎所有的315M遙控器都兼容。
         由于定時讀引腳,抗干擾能力強(qiáng) ,和硬件解碼距離無區(qū)別。

成品由洞洞板制作。
STM32選用STM32103C8T6最小系統(tǒng)開發(fā)板。
WiFI模塊選用ESP8266 ESP-07,軟件升級到V1.62版。
無線模塊選用315M或433M超外差模塊
3.3V選用DC12-DC3.3轉(zhuǎn)換模塊



所有資料51hei提供下載:
STM32-v1.62.7z (5.07 MB, 下載次數(shù): 77)
8266升級資料.7z (1.39 MB, 下載次數(shù): 57)

單片機(jī)源程序如下:

  1. /*******************************************************************************
  2. *        
  3. * 軟件功能:         遙控解碼10# 主頻72M
  4. *
  5. *******************************************************************************/
  6. #include "stm32f10x.h"

  7. //-----變量&常量定義-----
  8. #define DaiMaTiaoSu_100  100    //遙控條數(shù)
  9. #define YaoKongSu_5  10         //遙控碼長度
  10. #define Key_600  600            //長按鍵時間計(jì)數(shù),3秒時間

  11. u16 T2RL = 124*2-1;  //定時器重裝值;
  12. u8 ircode[9];               //[0-5]2次脈沖解碼值                [6-8]解碼最終值
  13. u8 Tm1[50];          //0空位 1-24遙控碼脈沖 25同步碼 26-49第二次遙控碼脈沖
  14. u8 Tm_bz[]={ 31 ,156 ,114 ,134 ,2 ,16 ,8 };
  15. //基準(zhǔn):0-1同步碼時間范圍,  2-3 同步碼124a范圍,  4-5 寬窄脈沖碼4-12a范圍,  6        寬窄脈沖

  16. 碼中間值
  17. //遙控碼發(fā)射時鐘=1a,   1M電阻:1a=31us 5M電阻:1a=156us            
  18. //由于stc89c52單片機(jī)中斷時間內(nèi)執(zhí)行指令數(shù)少,只能到 1a=60us.用stc15fXX是1T模式(同時鐘頻率

  19. 下是89c52單片機(jī)6-12倍)————全兼容        

  20. u16 E2BiaoJi;              //Flash空位位置值
  21. u8 ms =1;                         //防止誤觸延時&計(jì)數(shù)
  22. u8 BJ_500ms = 0;     //解碼值有效時間0.5S標(biāo)記
  23. u8 BJ_PulsrGood = 0; //脈沖讀完標(biāo)記
  24. u8 BJ_Traversal=0;         //Flash遍歷標(biāo)記
  25. u8 BJ_edit = 0;             //進(jìn)入編輯標(biāo)記
  26. u8 BJ_KeyLong=0;           //長按鍵標(biāo)記
  27. u8 BJ_KeyShort=0;           //短按鍵標(biāo)記   
  28. u16 Key_JiShu=0;           //長按鍵3秒計(jì)數(shù)
  29. u16 JIBU=0;          //按鍵第幾步標(biāo)記
  30. u16 LED_ZT=0;        //LED狀態(tài)緩存標(biāo)記

  31. u32 Net_No=0;        //定時聯(lián)網(wǎng)檢測處理
  32. u8 WiFi_200=0;             //200MS標(biāo)記
  33. u8 WiFi_OK=0;               //模塊返回?cái)?shù)據(jù)與比對值匹配標(biāo)記
  34. u8 WiFi_Hao;                     //返回消息的通道號
  35. u8 Index;                         //比對值索引;
  36. u8 WiFi_Step=0;      //模塊啟動執(zhí)行到的步數(shù)                           

  37. /*以下為WiFi模塊接收處理函數(shù)*/
  38. void WiFi_initial(void);                       //模塊初始化流程
  39. void WiFi_initial0(u8 dat,u8 Ten, u8 sx);//AT初始化流程_子程序
  40. void WiFi_initial1(u8 dat,u8 Ten, u8 sx);//AT初始化流程_子程序
  41. void Command(u8 *ptr, u8 len);           //命令的匯總處理,收到的數(shù)據(jù)格式
  42. void AT_CIPSEND(u8 *ptr,u8 len);                     //AT命令組裝并發(fā)送
  43. u8 LED_state(u8 *ptr,u8 len);            //LED狀態(tài)提取準(zhǔn)備返回
  44. void Check(u8 *ptr, u8 len, u8 Ten);     //位異或校驗(yàn)
  45.                                                                                                 

  46.                                        
  47. /*以下為模擬2262解碼調(diào)用函數(shù) */
  48. void Configuration_2262(void);//初始化
  49. void BM_KeyLong(void);              //長按鍵處理_刪除遙控碼及處理遙控條碼輸出狀態(tài)
  50. void BM_KeyShort(void);                    //短按鍵處理_進(jìn)入退出編輯模式,存儲遙控條碼等功能
  51. void LED_add(void);                              //編輯模式下LED順序累加
  52. void Decoding(u8 add);              //脈沖解碼 ,接收到脈沖編譯成遙控條碼
  53. void BM_PulsrDecoding(void);       //脈沖解碼>>接收到的兩次編碼比較>>接收的編碼和防止誤

  54. 觸延時編碼比較
  55. void LED_KeyLong_State(void);      //LED長按鍵后的狀態(tài)
  56. void BM_Flash_Traversal(void);     //Flash中查找對應(yīng)值
  57. void LED_Mode(u16 add,u16 add1);         //LED動作程序,LED模式變換


  58. /*************************************************
  59. 函數(shù): int main(void)
  60. 功能: main主函數(shù)
  61. 參數(shù): 無
  62. 返回: 無
  63. **************************************************/
  64. int main(void)
  65. {
  66.         RCC_Configuration();           //復(fù)位和時鐘控制配置72M
  67.         GPIO_Configuration();          //初始化GPIO配置
  68.         delay_init(SYSCLK_MHZ);        //SysTick定時器做為延時函數(shù)的初始化程序

  69. (SYSCLK_MHZ=72)
  70.         ConfigTimer_TIM2(124);               //定時器2配置 1ns
  71.         ConfigTimer_TIM3(5);                 //定時器3配置 1ms
  72.         USART1_Configuration(115200);  //初始化USART1配置
  73.         IWDG_Init_1S();                //初始化獨(dú)立看門狗時間:1S
  74.         Configuration_2262();          //2622模擬解碼初始化               

  75.         //printf("向串口輸出字符串\r\n");
  76.         while (1)
  77.         {                                         //AT流程用
  78.                 UartDriver();                    //調(diào)用串口驅(qū)動 監(jiān)測數(shù)據(jù)幀的接收 有命令

  79. 到達(dá)時
  80.                 if(WiFi_200)                     //200ms進(jìn)入流程標(biāo)記
  81.                 {   
  82.                         WiFi_200=0;                    //200ms標(biāo)記
  83.                         WiFi_initial();                                         //模塊初始化&工

  84. 作流程
  85.                         LED_KeyLong_State();                                   //LED在長按按

  86. 鍵下的狀態(tài)
  87.                 }                  
  88.                                                  //2262模擬解碼流程用
  89.                 if(BJ_PulsrGood)                 //脈沖讀完標(biāo)記
  90.                 { BJ_PulsrGood=0; BM_PulsrDecoding(); }         //2622模擬解碼用
  91.                 if(BJ_Traversal)                               //Flash遍歷標(biāo)記
  92.                 { BJ_Traversal=0; BM_Flash_Traversal(); }//Flash中查找對應(yīng)值                  

  93.       
  94.                 if(BJ_KeyLong)                                 //長按鍵標(biāo)記
  95.                 { BJ_KeyLong=0; BM_KeyLong(); }                  
  96.                 if(BJ_KeyShort)                                 //短按鍵標(biāo)記
  97.                 { BJ_KeyShort=0; BM_KeyShort(); }

  98.         }   
  99. }



  100. /*===============================================================================  
  101.   以下為AT控制流程
  102.   ===============================================================================*/
  103. /*************************************************
  104. 函數(shù): void WiFi_initial()        
  105. 功能: AT初始化流程  200ms進(jìn)入一次中斷標(biāo)記進(jìn)入
  106. 參數(shù): 無
  107. 返回: 無
  108. **************************************************/
  109. void WiFi_initial(void)         
  110. {                              
  111.         switch (WiFi_Step)           //第幾步索引值
  112.         {         //--------------------正常模式-入口---------------------------------
  113.                  case 0:                                 
  114.                         WiFi_initial0(0,1,0);//AT就緒查詢
  115.                         break;
  116.                  case 1:                                 
  117.                         WiFi_initial0(1,2,0);//關(guān)閉回顯
  118.                         break;
  119.                  case 2:
  120.                         WiFi_initial0(7,3,0);//啟用多線程
  121.                         break;
  122.                  case 3:
  123.                         WiFi_initial0(8,4,0);//啟用服務(wù)器功能
  124.                         break;
  125.                  case 4:
  126.                         Index=0; WiFi_Step=5;//比對值索引
  127.                         break;        
  128.                  case 5:        
  129.                         if(Net_No++>1500)
  130.       {Net_No=0; WiFi_Step=6; }//5分鐘聯(lián)網(wǎng)檢測
  131.                         break;
  132.                  case 6:        
  133.                         WiFi_initial0(11,7,4); //查詢網(wǎng)絡(luò)連接信息
  134.                         break;        
  135.                  case 7:        
  136.                         WiFi_initial1(3,13,4); //掃描當(dāng)前可用的 AP
  137.                         break;                        
  138.                  //------------------------退出設(shè)置模式-入

  139. 口-----------------------------
  140.                  case 10:                                 
  141.                         WiFi_initial1(0,11,0); //配置 ESP8266 SoftAP 當(dāng)前參數(shù),保存到

  142. Flash
  143.                         break;
  144.                  case 11:
  145.                         WiFi_initial1(1,12,0); //設(shè)置 ESP8266 Station 的 IP 地址,保存到

  146. Flash
  147.                         break;
  148.                  case 12:
  149.                         WiFi_initial1(2,13,0); //連接 AP,保存到 Flash
  150.                         break;                                 
  151.                  case 13:        
  152.                         WiFi_initial0(9,0,0);  //重啟模塊
  153.                         break;
  154.                   //----------------連接臨時AP后查詢反饋-入

  155. 口---------------------------------
  156.                  case 15:                                   
  157.                         WiFi_initial0(0,16,15);//AT就緒查詢
  158.                         break;                 
  159.                  case 16:
  160.                         if(BJ_edit)
  161.                         WiFi_initial0(10,28,28);//查詢指令連接AP情況
  162.                         else
  163.                         WiFi_initial0(10,0,0);//查詢指令連接AP情況
  164.                         break;
  165.                  //------------------設(shè)置模式-入口-----------------------------------
  166.                  case 20:                        
  167.                         WiFi_initial0(0,21,20);//AT就緒查詢
  168.                         break;
  169.                  case 21:
  170.                         WiFi_initial0(2,22,20);//設(shè)置為AT工作模式        
  171.                         break;
  172.                  case 22:
  173.                         WiFi_initial0(3,23,20);//設(shè)置SoftAP配置        
  174.                         break;
  175.                  case 23:
  176.                         WiFi_initial0(4,24,20);//設(shè)置上電時動連接 AP
  177.                         break;
  178.                  case 24:         
  179.                         WiFi_initial0(5,25,20);//退出與AP的連接
  180.                         break;
  181.                  case 25:
  182.                         WiFi_initial0(6,26,20);//設(shè)置DHCP,不保存到Flash,確保自動獲取IP
  183.                         break;        
  184.                  case 26:
  185.                         WiFi_initial0(7,27,20);//啟用多線程
  186.                         break;
  187.                  case 27:
  188.                         WiFi_initial0(8,28,20);//啟用服務(wù)器功能
  189.                         break;
  190.                  case 28:
  191.                         Index=0;  WiFi_Step=29;//比對值索引
  192.                         break;                        
  193.                 default:
  194.                         break;
  195.         }            
  196. }
  197. /*************************************************
  198. 函數(shù): void WiFi_initial0(u8 dat,u8 Ten, u8 sx)
  199. 功能: AT初始化流程_ 發(fā)往WiFi模塊命令用
  200. 參數(shù): dat-命令索引值 Ten—成功跳轉(zhuǎn)值索引 sx=失敗跳轉(zhuǎn)值
  201. 返回: 無
  202. **************************************************/
  203. void WiFi_initial0(u8 dat,u8 Ten, u8 sx)
  204. {
  205.         static u8 WiFi_0[] = "AT\r\n";                                  //AT就緒查詢
  206.         static u8 WiFi_1[] = "ATE0\r\n";                    //關(guān)閉回顯
  207.         static u8 WiFi_2[] = "AT+CWMODE_DEF=3\r\n";                //設(shè)置為AT模式,保存到

  208. Flash
  209.         static u8 WiFi_3[] = "AT+CWSAP_CUR=\"AT-01\",\"12345678\",8,4\r\n";          //配置

  210. ESP8266 SoftAP 當(dāng)前參數(shù),不保存到Flash
  211.         static u8 WiFi_4[] = "AT+CWAUTOCONN=1\r\n";                //設(shè)置上電時自動連接 AP        

  212. ,保存到Flash
  213.         static u8 WiFi_5[] = "AT+CWQAP\r\n";                      //退出與AP的連接
  214.         static u8 WiFi_6[] = "AT+CWDHCP_CUR=1,1\r\n";                          //設(shè)置 DHCP,不

  215. 保存到Flash ,確保自動獲取IP
  216.         static u8 WiFi_7[] = "AT+CIPMUX=1\r\n";                    //啟用多線程
  217.         static u8 WiFi_8[] = "AT+CIPSERVER=1,19730\r\n";          //啟用服務(wù)器功能
  218.         static u8 WiFi_9[] = "AT+RST\r\n";                        //重啟模塊
  219.         static u8 WiFi_10[] = "AT+CIFSR\r\n";                      //查詢本地 IP 地
  220.         static u8 WiFi_11[] = "AT+CIPSTATUS\r\n";            //查詢網(wǎng)絡(luò)連接信息

  221.         static u8 WiFi_fasong=1;   //命令發(fā)送標(biāo)記
  222.         static u8 JiShi=0;                     //命令發(fā)送時間計(jì)數(shù)
  223.         static u8 WiFi_Len[] = { sizeof(WiFi_0)-1, sizeof(WiFi_1)-1, sizeof(WiFi_2)-1,

  224. sizeof(WiFi_3)-1, sizeof(WiFi_4)-1, sizeof(WiFi_5)-1,
  225.                                                                                 sizeof

  226. (WiFi_6)-1, sizeof(WiFi_7)-1, sizeof(WiFi_8)-1, sizeof(WiFi_9)-1, sizeof(WiFi_10)-1,

  227. sizeof(WiFi_11)-1};
  228.         static u8 * WiFi_Ptr[] = {&WiFi_0[0],  &WiFi_1[0],  &WiFi_2[0],  &WiFi_3[0],  

  229. &WiFi_4[0],  &WiFi_5[0], &WiFi_6[0],  &WiFi_7[0],  
  230.                                                                                 &WiFi_8

  231. [0],  &WiFi_9[0],  &WiFi_10[0],  &WiFi_11[0]};
  232.         static u8 WiFi_syz[] = { 1,1,1,1, 1,1,1,1, 1,1,2,3 };  //WiFi模塊收到數(shù)據(jù)比對值

  233. 索引
  234.         
  235.         Shi_LED2=0;
  236.         Index=WiFi_syz[dat];//比對值索引
  237.         if(WiFi_fasong)            //發(fā)送數(shù)據(jù)
  238.         {  WiFi_fasong=0;  UartWrite(WiFi_Ptr[dat], WiFi_Len[dat]); }
  239.         if(WiFi_OK)                       //比對成功返回標(biāo)記
  240.         {  WiFi_OK=0;  WiFi_fasong=1; JiShi=0;  WiFi_Step=Ten; Shi_LED2=1;return;}
  241.         if(JiShi++>10)                  //超時認(rèn)定失敗
  242.         {  WiFi_fasong=1; JiShi=0; WiFi_Step=sx;}
  243.         Shi_LED2=1;
  244. }

  245. /*************************************************
  246. 函數(shù): void WiFi_initial1(u8 dat,u8 Ten, u8 sx)
  247. 功能: AT初始化流程_ 發(fā)往WiFi模塊命令用
  248. 參數(shù): dat-命令索引值 Ten—成功跳轉(zhuǎn)值索引 sx=失敗跳轉(zhuǎn)值
  249. 返回: 無
  250. **************************************************/
  251. void WiFi_initial1(u8 dat,u8 Ten, u8 sx)
  252. {
  253.         static u8 Zfc_0[]="AT+CWSAP_DEF=\"AT_01\",\""; //配置 ESP8266 SoftAP 當(dāng)前參數(shù),

  254. 保存到 Flash
  255.         static u8 Zfc_1[]="12345678";
  256.         static u8 Zfc_2[]="\",8,4\r\n";
  257.         static u8 Zfc_3[]="AT+CWJAP_DEF=\"";           //連接 AP,保存到 Flash
  258.         static u8 Zfc_4[]="XX0XX";
  259.         static u8 Zfc_5[]="\",\"";
  260.         static u8 Zfc_6[]="\"\r\n";
  261.         static u8 Zfc_7[]="AT+CIPSTA_DEF=\"";          //設(shè)置 ESP8266 Station 的 IP 地址

  262. ,保存到 Flash
  263.         static u8 Zfc_8[]="AT+CWLAP=\"";               //掃描當(dāng)前可用的 AP
  264.         static u8 WiFi_fasong=1;     //命令發(fā)送標(biāo)記        
  265.         static u8 JiShi=0;                       //命令發(fā)送時間計(jì)數(shù)
  266.         static u8 WiFi_syx[] = { 1,1,1,4 }; //WiFi模塊收到數(shù)據(jù)比對值索引
  267.         
  268.         u8 WiFi1[60];
  269.         u8 WiFi1_len=0;
  270.         u8 WiFi1_TAN=0;
  271.   
  272.         Shi_LED2=0;
  273.         Index=WiFi_syx[dat] ;        //比對值索引
  274.         if(WiFi_fasong)              //發(fā)送數(shù)據(jù)
  275.         {   WiFi_fasong=0;
  276.                
  277.                   switch(dat)
  278.                         {                        
  279.                                 case 0: WiFi1_len=Add_Merge0(WiFi1,WiFi1_len,Zfc_0);     

  280.         //配置 ESP8266 SoftAP 當(dāng)前參數(shù),保存到 Flash
  281.                                                                 WiFi1_TAN= WiFi1_len;
  282.                                                                 WiFi1_len=FLASH_read_8

  283. (FLASH_Address[2],WiFi1,WiFi1_len);//FLASH讀出密碼
  284.                                                                 if(WiFi1_TAN==WiFi1_len)
  285.                                                                 WiFi1_len=Add_Merge0

  286. (WiFi1,WiFi1_len,Zfc_1);
  287.                                                                 WiFi1_len=Add_Merge0

  288. (WiFi1,WiFi1_len,Zfc_2);
  289.                                 break;
  290.                                 case 1: WiFi1_len=Add_Merge0(WiFi1,WiFi1_len,Zfc_7);     

  291.         //設(shè)置 ESP8266 Station 的 IP 地址,保存到 Flash
  292.                                                                 WiFi1_TAN= WiFi1_len;
  293.                                                                 WiFi1_len=FLASH_read_8

  294. (FLASH_Address[3],WiFi1,WiFi1_len);//FLASH讀出IP
  295.                                                                 if(WiFi1_TAN==WiFi1_len)
  296.                                                                 WiFi1_len=Add_character

  297. (WiFi1,WiFi1_len,'0');
  298.                                                                 WiFi1_len=Add_Merge0

  299. (WiFi1,WiFi1_len,Zfc_6);
  300.                                 break;
  301.                                 case 2: WiFi1_len=Add_Merge0(WiFi1,WiFi1_len,Zfc_3);     

  302.         //連接 AP,保存到 Flash
  303.                                                                 WiFi1_TAN= WiFi1_len;
  304.                                                                 WiFi1_len=FLASH_read_8

  305. (FLASH_Address[1],WiFi1,WiFi1_len);//FLASH讀出賬號
  306.                                                                 if(WiFi1_TAN==WiFi1_len)
  307.                                                                 WiFi1_len=Add_Merge0

  308. (WiFi1,WiFi1_len,Zfc_4);
  309.                                                                 WiFi1_len=Add_Merge0

  310. (WiFi1,WiFi1_len,Zfc_5);
  311.                                                                 WiFi1_TAN= WiFi1_len;
  312.                                                                 WiFi1_len=FLASH_read_8

  313. (FLASH_Address[2],WiFi1,WiFi1_len);//FLASH讀出密碼
  314.                                                                 if(WiFi1_TAN==WiFi1_len)
  315.                                                                 WiFi1_len=Add_Merge0

  316. (WiFi1,WiFi1_len,Zfc_1);
  317.                                                                 WiFi1_len=Add_Merge0

  318. (WiFi1,WiFi1_len,Zfc_6);
  319.                                 break;
  320.                                 case 3: WiFi1_len=Add_Merge0(WiFi1,WiFi1_len,Zfc_8);     

  321.         //掃描當(dāng)前可用的 AP
  322.                                                                 WiFi1_TAN= WiFi1_len;
  323.                                                                 WiFi1_len=FLASH_read_8

  324. (FLASH_Address[1],WiFi1,WiFi1_len);//FLASH讀出賬號
  325.                                                                 if(WiFi1_TAN==WiFi1_len)
  326.                                                                 WiFi1_len=Add_Merge0

  327. (WiFi1,WiFi1_len,Zfc_4);
  328.                                                                 WiFi1_len=Add_Merge0

  329. (WiFi1,WiFi1_len,Zfc_6);
  330.                                 break;
  331.                                 default:break;
  332.                         }
  333.                         UartWrite(WiFi1, WiFi1_len);
  334.         }
  335.         if(WiFi_OK)                      //比對成功返回標(biāo)記
  336.         {  WiFi_OK=0;  WiFi_fasong=1; JiShi=0; WiFi_Step=Ten; Shi_LED2=1;return;}         
  337.         if(JiShi++>10)                 //超時認(rèn)定失敗
  338.         { WiFi_fasong=1; JiShi=0; WiFi_Step=sx;}
  339.         Shi_LED2=1;
  340. }

  341. /*************************************************
  342. 函數(shù): void UartAction(u8 *ptr, u8 len)
  343. 功能: 串口動作函數(shù),根據(jù)接收到的數(shù)據(jù)響應(yīng)的動作
  344. 參數(shù):  buf-接收到的數(shù)據(jù)幀指針,len-數(shù)據(jù)幀長度
  345. 返回: 無
  346. **************************************************/
  347. void UartAction(u8 *ptr, u8 len)
  348. {
  349.         static u8 cmd0[] = "+IPD,";      //收到數(shù)據(jù)標(biāo)識
  350.         static u8 cmd1[] = "OK";
  351.         static u8 cmd2[] = "STAIP,\"";   //IP查詢返回標(biāo)識
  352.         static u8 cmd3[] = "STATUS:5";   //查詢網(wǎng)絡(luò)連接信息返回標(biāo)識
  353.         static u8 cmd4[] = "+CWLAP:";    //掃描當(dāng)前可用的AP返回標(biāo)識
  354.         static u8 LinS[] = "@@J000.000.000.000";
  355.         u8 cmdLen[] = {  sizeof(cmd0)-1, sizeof(cmd1)-1, sizeof(cmd2)-1, sizeof(cmd3)-1,

  356. sizeof(cmd4)-1};
  357.         u8 *cmdPtr[] = {&cmd0[0],  &cmd1[0],  &cmd2[0],  &cmd3[0],  &cmd4[0]};
  358.         u8 LinS_Tem = 3;
  359.         u8 FanHui,i;
  360.         
  361.         if (len >= cmdLen[Index])  //首先接收到的數(shù)據(jù)長度要不小于對比值長度
  362.         {   
  363.                 FanHui=Compare(ptr,len,cmdPtr[Index],cmdLen[Index]);
  364.                 if (FanHui>0)            //查找到匹配值
  365.                 {
  366.                         switch(Index)
  367.                         {                        
  368.                                 case 0: Command(ptr, FanHui);  //數(shù)據(jù)進(jìn)一步處理
  369.                                 break;
  370.                                 case 1: WiFi_OK=1;
  371.                                 break;
  372.                                 case 2: WiFi_OK=1;                                  //IP

  373. 查詢進(jìn)一步處理
  374.                                         for (i=0; i<16; i++)                        //返

  375. 回臨時IP值
  376.                                                                 { LinS[LinS_Tem++] =

  377. ptr[FanHui++]; }         
  378.                                                                 AT_CIPSEND

  379. (LinS,LinS_Tem);
  380.                                 break;
  381.                                 case 3: WiFi_OK=1;
  382.                                 break;
  383.                                 case 4: WiFi_OK=1;
  384.                                 break;
  385.                                 default:break;
  386.                         }
  387.                 }        
  388.         }        
  389. }


  390. /*************************************************
  391. 函數(shù): void Command(u8 *ptr, u8 len)
  392. 功能: 收到數(shù)據(jù)處理  數(shù)據(jù)格式; +IPD,0,15:@@AAT_00
  393. 參數(shù):  ptr-待處理數(shù)據(jù)  len-處理的起始位
  394. 返回: 無
  395. **************************************************/
  396. void Command(u8 *ptr, u8 len)
  397. {         
  398.         static u8 Zfc_0[]="AT+CWJAP_CUR=";
  399.         static u8 Zfc_1[]="\r\n";
  400.         static u8 Zfc_2[]="-err";
  401.         
  402.         u8 HuiDa[60];                       //回答字符串
  403.         u8 HuiDa_len = 0;      //回答字符串位置
  404.         u8 GeSu;                                       //到達(dá)數(shù)據(jù)長度
  405.         u8 Ten;                //特定標(biāo)記位置
  406.         u16 i;
  407.         u32 Det;
  408.         
  409.         //計(jì)算校驗(yàn)值位置與數(shù)據(jù)長度-------------------
  410.         if ( ptr[len+3]==':' && ptr[len+4]=='@' )
  411.         {
  412.                 Ten=len+5;           //定位命令字位置
  413.                 GeSu =ptr[len+2]-48; //計(jì)算收到數(shù)據(jù)長度
  414.         }
  415.         else if (ptr[len+4]==':' && ptr[len+5]=='@' )
  416.         {  
  417.                 Ten=len+6;                  //定位命令字位置
  418.                 GeSu =(ptr[len+2]-48)*10;
  419.                 GeSu =GeSu+(ptr[len+3]-48); //計(jì)算收到數(shù)據(jù)長度
  420.         }
  421.         else
  422.         return;
  423.         if(GeSu<3)                //收到數(shù)據(jù)長度不夠
  424.         return;        

  425.         //校驗(yàn)數(shù)據(jù)正確性-----------------------------
  426.         ptr[0] = ptr[Ten];              // ptr[0]作為臨時變量使用,存放收到的校驗(yàn)值
  427.         Check(ptr, Ten, GeSu);    // 計(jì)算校驗(yàn)值
  428.         if(ptr[0] != ptr[Ten])          // 收到的校驗(yàn)值與計(jì)算的校驗(yàn)值比對
  429.         return;
  430.         //5分鐘聯(lián)網(wǎng)檢測-----------------------------
  431.         Net_No=0;  
  432.         //發(fā)送數(shù)據(jù)命令頭部組裝-----------------------
  433.         Ten++;                                                  //移到命令位
  434.         GeSu=GeSu-3;                                //去除3位標(biāo)識位
  435.         WiFi_Hao=ptr[len];              //保存收到數(shù)據(jù)的通道號,發(fā)送數(shù)據(jù)用這個通道
  436.         HuiDa_len = Add_character(HuiDa,HuiDa_len,'@');      //待發(fā)送數(shù)據(jù)組裝
  437.         HuiDa_len++;                                         //校驗(yàn)值位
  438.         HuiDa_len = Add_character(HuiDa,HuiDa_len,ptr[Ten]); //待發(fā)送數(shù)據(jù)組裝
  439.         if(ptr[Ten]=='A')                                        //LED狀態(tài)消息處理
  440.         {  
  441.                 if(ptr[++Ten]=='0') ptr[0]=0; else ptr[0]=1;       //ptr[0]作為臨時變量

  442. ……………………

  443. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:89704 發(fā)表于 2021-4-15 19:31 | 只看該作者
謝謝樓主,下載學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

板凳
ID:89704 發(fā)表于 2021-4-15 22:31 | 只看該作者
上張實(shí)物圖看看!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久蜜桃 | 精品视频导航 | 免费一区二区三区 | 成人一级视频在线观看 | 国产中文字幕亚洲 | 欧美在线观看网站 | 欧美中文字幕 | 欧美不卡在线 | 亚洲精品一区在线 | 亚洲精品一区二区在线观看 | 免费在线一区二区 | 国产精品视频在 | 国产激情91久久精品导航 | 一区二区av在线 | 欧美激情亚洲 | 中文字幕乱码一区二区三区 | 日韩欧美操 | 情侣酒店偷拍一区二区在线播放 | 日本一区精品 | 欧美在线观看一区 | 99久久精品免费看国产高清 | 最新高清无码专区 | 午夜伦4480yy私人影院 | 91精品91久久久 | 亚洲精品美女视频 | 国产一区精品在线 | 国产精品久久久久久影院8一贰佰 | 久久国产成人 | 亚洲国产激情 | 激情欧美日韩一区二区 | 国产乱码精品一区二区三区五月婷 | 激情免费视频 | 欧美福利网站 | 三级免费av | 一区免费 | 九九伊人sl水蜜桃色推荐 | 中文字幕亚洲精品 | jlzzxxxx18hd护士| 一区二区三区在线观看视频 | 国产成人免费 | 一区二区不卡 |