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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6413|回復: 5
打印 上一主題 下一主題
收起左側

程序編譯錯誤 stc15單片機關于sim800c gsm模塊的控制代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:202655 發表于 2019-4-25 16:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于stc15的GSM模塊,接收短信來控制你想控制的的東西

單片機源程序如下:

  1. #include "stc15.h"
  2. #include "delay.h"
  3. #include "main.h"
  4. #include "uart2.h"
  5. #define Success 1U
  6. #define Failure 0U

  7. //定義變量
  8. unsigned long  Time_Cont = 0;       //定時器計數器

  9. char phoneNumber[] = "xxxxxxxxxx";                //替換成需要被撥打電話的號碼
  10. char msg[] = "xxxxxxxxxxx";                //短信內容

  11. char xdata messageBuffer2[100];
  12. //bit isTimeOut2 = 0;
  13. #define MAIN_Fosc                22118400L        
  14. #define u16        unsigned int        
  15. void delay2_ms(unsigned int  ms)
  16. {
  17.    u16 i;
  18.          do{
  19.                  
  20.             i = (u16)(MAIN_Fosc / 13000);
  21.                   while(--i)        ;   //14T per loop
  22.      }while(--ms);
  23. }





  24. void main()
  25. {

  26.     Uart_Init2();

  27.         if (sendCommand2("AT\r\n", "OK\r\n", 3000, 10) == Success);
  28.         else errorLog2();
  29.         delay2_ms(10);

  30.         if (sendCommand2("AT+CMGF=1\r\n", "OK\r\n", 1000, 10) == Success);
  31.         else errorLog2();
  32.         delay2_ms(10);

  33.         if (sendCommand2("AT+CSCS=\"GSM\"\r\n", "OK\r\n", 1000, 10) == Success);
  34.         else errorLog2();
  35.         delay2_ms(10);

  36.         if (sendCommand2("AT+CNMI=2,2\r\n", "OK\r\n", 3000, 10) == Success);
  37.         else errorLog2();
  38.         delay2_ms(10);

  39. //        sendMessage(phoneNumber,msg);                //發送短信


  40.         while(1)
  41.         {        
  42.                 if(isStartGetMessage2)
  43.                 {
  44.                         isStartGetMessage2 = 0;
  45.                         Time_Cont = 0;
  46.                         
  47.                         while (Time_Cont < 1000)        //等待1s接收短信數據
  48.                         {
  49.                                 delay2_ms(100);
  50.                                 Time_Cont += 100;
  51.                         }
  52.                         isGetMessage2 =         Success;
  53.                 }
  54.                 if( isGetMessage2 == Success)
  55.                 {
  56.                         parseMessage2();
  57.                                 
  58.         
  59.                         if(strstr(messageBuffer2, "reboot conditioner") != NULL || strstr(messageBuffer2, "5F00542F7A7A8C03") != NULL)        //55F00 542F 7A7A 8C03  //開啟空調
  60.                         {
  61. //                                  relay2 = 1;
  62.                                 //這里嵌入信息
  63.                         }
  64.         
  65.         
  66.                         if(strstr(messageBuffer2, "Turn off conditioner") != NULL || strstr(messageBuffer2, "517395ED7A7A8C03") != NULL)        //5173 95ED 7A7A 8C03 //關閉空調
  67.                         {
  68. //                                relay1 = 0;
  69.                                 //這里也是嵌入信息
  70.                         }
  71.                         isGetMessage2 = Failure        ;
  72.                 }
  73.         }
  74. }

  75. void parseMessage()
  76. {
  77.         char *messageHead=NULL;
  78.         char *messageEnd1=NULL;
  79.         char *messageEnd2=NULL;

  80.         memset(messageBuffer2, 0, sizeof(messageBuffer2)-1);         //清空短信內容緩沖區
  81.         messageHead = strstr(Rec_Buf2, "CMT");
  82.         if (messageHead != NULL)
  83.         {
  84.                 messageEnd1 = strstr(messageHead, "\n");
  85.                 if (messageEnd1 != NULL)
  86.                 {
  87.                         messageEnd1 ++;
  88.                         messageEnd2 = strstr(messageEnd1, "\n");
  89.                         if (messageEnd2 != NULL)
  90.                         {        
  91.                                 memcpy(messageBuffer2, messageEnd1, messageEnd2 - messageEnd1);
  92.         
  93.                         }
  94.                 }

  95.         }

  96.         CLR_Buf2();
  97. }



  98. void sendMessage(char *number,char *msg)
  99. {
  100.         xdata char send_buf[20] = {0};
  101.         memset(send_buf, 0, 20);    //清空
  102.         strcpy(send_buf, "AT+CMGS=\"");
  103.         strcat(send_buf, number);
  104.         strcat(send_buf, "\"\r\n");
  105.         if (sendCommand2(send_buf, ">", 3000, 10) == Success);
  106.         else errorLog2();

  107.         SendString2(msg);

  108.         SendData2(0x1A);
  109. }

  110. void phone(char *number)
  111. {
  112.         char send_buf[20] = {0};
  113.         memset(send_buf, 0, 20);    //清空
  114.         strcpy(send_buf, "ATD");
  115.         strcat(send_buf, number);
  116.         strcat(send_buf, ";\r\n");

  117.         if (sendCommand2(send_buf, "SOUNDER", 10000, 10) == Success);
  118.         else errorLog2();
  119. }

  120. void errorLog()
  121. {
  122.         while (1)
  123.         {
  124.                   if (sendCommand2("AT\r\n", "OK", 100, 10) == Success)
  125.                 {
  126.                         soft_reset2();
  127.                 }
  128.                 delay2_ms(200);
  129.         }
  130. }

  131. void soft_reset(void)         //制造重啟命令
  132. {
  133.    ((void (code *) (void)) 0x0000) ();
  134. }

  135. unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry)
  136. {
  137.         unsigned char n;
  138.         CLR_Buf2();
  139.         for (n = 0; n < Retry; n++)
  140.         {
  141.                 SendString2(Command);                 //發送GPRS指令

  142.                 Time_Cont = 0;
  143.                 while (Time_Cont < Timeout)
  144.                 {
  145.                         delay2_ms(100);
  146.                         Time_Cont += 100;
  147.                         if (strstr(Rec_Buf2, Response) != NULL)
  148.                         {
  149.                                 
  150.                                 CLR_Buf2();
  151.                                 return Success;
  152.                         }
  153.                         
  154.                 }
  155.                 Time_Cont = 0;
  156.         }
  157.         
  158.         CLR_Buf2();
  159.         return Failure;
  160. }
復制代碼

  1. #include "stc15.h"
  2. #include "delay.h"
  3. #include "sim800c.h"
  4. #include "uart2.h"
  5. #define Success 1U
  6. #define Failure 0U

  7. //定義變量
  8. unsigned long  Time_Cont = 0;       //定時器計數器

  9. char phoneNumber[] = "xxxxxxxxxx";                //替換成需要被撥打電話的號碼
  10. char msg[] = "xxxxxxxxxxx";                //短信內容

  11. char xdata messageBuffer2[100];
  12. //bit isTimeOut2 = 0;
  13. #define MAIN_Fosc                22118400L        
  14. #define u16        unsigned int        
  15. void delay2_ms(unsigned int  ms)
  16. {
  17.    u16 i;
  18.          do{
  19.                  
  20.             i = (u16)(MAIN_Fosc / 13000);
  21.                   while(--i)        ;   //14T per loop
  22.      }while(--ms);
  23. }





  24. void sim800c()
  25. {

  26.     Uart_Init2();

  27.         if (sendCommand2("AT\r\n", "OK\r\n", 3000, 10) == Success);
  28.         else errorLog2();
  29.         delay2_ms(10);

  30.         if (sendCommand2("AT+CMGF=1\r\n", "OK\r\n", 1000, 10) == Success);
  31.         else errorLog2();
  32.         delay2_ms(10);

  33.         if (sendCommand2("AT+CSCS=\"GSM\"\r\n", "OK\r\n", 1000, 10) == Success);
  34.         else errorLog2();
  35.         delay2_ms(10);

  36.         if (sendCommand2("AT+CNMI=2,2\r\n", "OK\r\n", 3000, 10) == Success);
  37.         else errorLog2();
  38.         delay2_ms(10);

  39. //        sendMessage(phoneNumber,msg);                //發送短信



  40.                 if(isStartGetMessage2)
  41.                 {
  42.                         isStartGetMessage2 = 0;
  43.                         Time_Cont = 0;
  44.                         
  45.                         while (Time_Cont < 1000)        //等待1s接收短信數據
  46.                         {
  47.                                 delay2_ms(100);
  48.                                 Time_Cont += 100;
  49.                         }
  50.                         isGetMessage2 =         Success;
  51.                 }
  52.                 if( isGetMessage2 == Success)
  53.                 {
  54.                         parseMessage2();
  55.                                 
  56.         
  57.                         if(strstr(messageBuffer2, "reboot conditioner") != NULL || strstr(messageBuffer2, "5F00542F7A7A8C03") != NULL)        //55F00 542F 7A7A 8C03  //開啟空調
  58.                         {
  59. //                                  relay2 = 1;
  60.                                 //這里嵌入信息
  61.                         }
  62.         
  63.         
  64.                         if(strstr(messageBuffer2, "Turn off conditioner") != NULL || strstr(messageBuffer2, "517395ED7A7A8C03") != NULL)        //5173 95ED 7A7A 8C03 //關閉空調
  65.                         {
  66. //                                relay1 = 0;
  67.                                 //這里也是嵌入信息
  68.                         }
  69.                         isGetMessage2 = Failure        ;
  70.                 }
  71.         }


  72. void parseMessage()
  73. {
  74.         char *messageHead=NULL;
  75.         char *messageEnd1=NULL;
  76.         char *messageEnd2=NULL;

  77.         memset(messageBuffer2, 0, sizeof(messageBuffer2)-1);         //清空短信內容緩沖區
  78.         messageHead = strstr(Rec_Buf2, "CMT");
  79.         if (messageHead != NULL)
  80.         {
  81.                 messageEnd1 = strstr(messageHead, "\n");
  82.                 if (messageEnd1 != NULL)
  83.                 {
  84.                         messageEnd1 ++;
  85.                         messageEnd2 = strstr(messageEnd1, "\n");
  86.                         if (messageEnd2 != NULL)
  87.                         {        
  88.                                 memcpy(messageBuffer2, messageEnd1, messageEnd2 - messageEnd1);
  89.         
  90.                         }
  91.                 }

  92.         }

  93.         CLR_Buf2();
  94. }



  95. void sendMessage(char *number,char *msg)
  96. {
  97.         xdata char send_buf[20] = {0};
  98.         memset(send_buf, 0, 20);    //清空
  99.         strcpy(send_buf, "AT+CMGS=\"");
  100.         strcat(send_buf, number);
  101.         strcat(send_buf, "\"\r\n");
  102.         if (sendCommand2(send_buf, ">", 3000, 10) == Success);
  103.         else errorLog2();

  104.         SendString2(msg);

  105.         SendData2(0x1A);
  106. }

  107. void phone(char *number)
  108. {
  109.         char send_buf[20] = {0};
  110.         memset(send_buf, 0, 20);    //清空
  111.         strcpy(send_buf, "ATD");
  112.         strcat(send_buf, number);
  113.         strcat(send_buf, ";\r\n");

  114.         if (sendCommand2(send_buf, "SOUNDER", 10000, 10) == Success);
  115.         else errorLog2();
  116. }

  117. void errorLog()
  118. {
  119.         while (1)
  120.         {
  121.                   if (sendCommand2("AT\r\n", "OK", 100, 10) == Success)
  122.                 {
  123.                         soft_reset2();
  124.                 }
  125.                 delay2_ms(200);
  126.         }
  127. }

  128. void soft_reset(void)         //制造重啟命令
  129. {
  130.    ((void (code *) (void)) 0x0000) ();
  131. }

  132. unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry)
  133. {
  134.         unsigned char n;
  135.         CLR_Buf2();
  136.         for (n = 0; n < Retry; n++)
  137.         {
  138.                 SendString2(Command);                 //發送GPRS指令

  139.                 Time_Cont = 0;
  140.                 while (Time_Cont < Timeout)
  141.                 {
  142.                         delay2_ms(100);
  143.                         Time_Cont += 100;
  144.                         if (strstr(Rec_Buf2, Response) != NULL)
  145.                         {
  146.                                 
  147.                                 CLR_Buf2();
  148.                                 return Success;
  149.                         }
  150.                         
  151.                 }
  152.                 Time_Cont = 0;
  153.         }
  154.         
  155.         CLR_Buf2();
  156.         return Failure;
  157. }
復制代碼

程序編譯錯誤 如何修改 求大神:
總控制結合備份部.rar (57.78 KB, 下載次數: 113)


評分

參與人數 2黑幣 +54 收起 理由
dzbj + 4 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:521807 發表于 2019-4-25 21:51 | 只看該作者
謝謝分享!
回復

使用道具 舉報

板凳
ID:251061 發表于 2019-5-3 09:07 | 只看該作者
這個函數有點不明白
void parseMessage()
{
        char *messageHead=NULL;
        char *messageEnd1=NULL;
        char *messageEnd2=NULL;
下面的有點看不明白,誰能給解釋一下,謝謝!
        memset(messageBuffer2, 0, sizeof(messageBuffer2)-1);         //清空短信內容緩沖區
        messageHead = strstr(Rec_Buf2, "CMT");
        if (messageHead != NULL)
        {
                messageEnd1 = strstr(messageHead, "\n");
                if (messageEnd1 != NULL)
                {
                        messageEnd1 ++;
                        messageEnd2 = strstr(messageEnd1, "\n");
                        if (messageEnd2 != NULL)
                        {        
                                memcpy(messageBuffer2, messageEnd1, messageEnd2 - messageEnd1);
        
                        }
                }

        }

        CLR_Buf2();
}
回復

使用道具 舉報

地板
ID:47286 發表于 2019-5-3 11:14 | 只看該作者
感謝樓主分享 太及時了 手里的SIM800模塊還沒弄呢 有樓主的程序少走很多彎路啊
回復

使用道具 舉報

5#
ID:264360 發表于 2019-5-5 19:02 | 只看該作者
贊!!!感謝樓主分享
回復

使用道具 舉報

6#
ID:505629 發表于 2020-1-12 22:46 | 只看該作者
編譯不能成功
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线播放网址 | 中文字幕在线播放第一页 | 欧美 日韩 国产 成人 在线 91 | 草草草影院 | 午夜影晥 | 免费在线看黄视频 | 成人免费在线播放 | 国产精品久久久久久久岛一牛影视 | 特级生活片 | 亚洲成人福利在线观看 | 国产三区视频在线观看 | 2020亚洲天堂 | 亚洲成人av| 亚洲国产成人精品女人久久久 | 观看av | 免费观看黄色一级片 | 老外黄色一级片 | 成人免费小视频 | 成人国产一区二区三区精品麻豆 | 欧美日韩在线看 | 日本91av视频 | 日韩国产在线 | 久久看看 | 免费精品久久久久久中文字幕 | 亚洲福利视频一区二区 | 人人玩人人干 | 秋霞电影一区二区 | 在线一区 | 国产高清在线观看 | 在线视频成人 | 日韩一区在线视频 | 搞av.com| 日韩在线小视频 | 亚洲一区二区不卡在线观看 | 国产精品久久久久久久久久久免费看 | 国产95在线 | 亚欧洲精品在线视频免费观看 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 亚洲成人精品在线 | 国产精品久久久久久久久久久免费看 | 日韩在线观看一区 |