TC35学习5------基于STM32f103下的GSM数据采集

原创 2011年10月12日 19:15:12

      现在完成了对DHT11数据读取并将数据传给TFT屏。而且用户如果有来电的话,程序会提取来电信息,把其号码作为发送信息的目标号码,将当前的DHT11的数据传给用户。

 

 

int main(void)
{
 
 
  //由于使用UCOS,一下的初始化虽然可以在OS运行之前运行,但注意别使能任何中断.
  ChipHalInit(); //片内硬件初始化
  ChipOutHalInit(); //片外硬件初始化
  OSInit();  //UCOS INIT~
 
  os_err = OSTaskCreate(Task0,                   //第一个任务0
                       (void *)0,           //不带参数
                       (OS_STK *)&Task0Stk[128 - 1],//堆栈指针
                       (INT8U )TASK1PRIO);       //优先级
                  
  OSStart();  
  while(1);
}

void Task0(void *p_arg)
{
  //u8 os_err; 
 
  OS_CPU_SysTickInit(); //使能SYSTICK中断 
#if (OS_TASK_STAT_EN > 0)
 // OSStatInit();           /*这东西可以测量CPU使用量 */
#endif
 
  //创建事件和标志
  CreatFlags();
  //创建信号量
  CreatSem();
 
  os_err = OSTaskCreate(Task1,       //任务1
                       (void *)0,             //不带参数
                       (OS_STK *)&Task1Stk[128 - 1],//堆栈指针
                       (INT8U)TASK2PRIO);             //优先级                       
 
  os_err = OSTaskCreate(Task2,              //任务2
                       (void *)0,      //不带参数
                       (OS_STK *)&Task2Stk[128 - 1],//堆栈指针
                       (INT8U)TASK3PRIO);             //优先级                        

  os_err = OSTaskCreate(Task3,       //任务3
                       (void *)0,       //不带参数
                       (OS_STK *)&Task3Stk[128 - 1],//堆栈指针
                       (INT8U)TASK4PRIO);      //优先级 
                                                     
 
  OSTaskNameSet(TASK1PRIO, (INT8U *)"Task1", &err);
  OSTaskNameSet(TASK2PRIO, (INT8U *)"Task2", &err);
  OSTaskNameSet(TASK3PRIO, (INT8U *)"Task3", &err);
     OSTimeDlyHMSM(0,0,2,0);   //等待两秒  配置TC35
  TC35_AT();
  OSTimeDlyHMSM(0,0,0,500);
  TC35_CNMI();
  OSTimeDlyHMSM(0,0,0,500);
  TC35_CLIP();
  OSTimeDlyHMSM(0,0,0,500);  
  TC35_CMGF(1);
  OSTimeDlyHMSM(0,0,0,500);      
  for(;;)
  {
   

    if(Choice==1)
   TC35_CMGD(1);
    if(Choice==2)
     TC35_CMGR(1);
 OSTimeDlyHMSM(0,0,2,0);   //等待两秒 
  }
}


void Task1(void *p_arg)
{

  for(;;)
  {
  OSTimeDlyHMSM(0,0,5,0);   //等待5秒
  DHT11_Init();
     Start_Signal();//主机发开始信号
     if(Read_Response())
   {
    Read_Byte();//读字节数
  }
//     PutChar(120,220,Tempreture+31,White,Magenta); 
//  PutChar(120,250,Humidity+31,White,Magenta);
//  strcat(s_temp1,"'C");

  GUI_Text(120,220,s_temp1,White,Magenta);
  GUI_Text(132,220,"'C",White,Magenta);

  strcat(s_temp2,"%");
  GUI_Text(120,250,s_temp2,White,Magenta);
    OSTimeDlyHMSM(0,0,10,0);   //等待10秒
  }
}

void Task2(void *p_arg)
{
 
  INT32U TM;
  uint8_t string[5]={0,0,0,0,0};
  LED2_OFF;
  OSTimeDlyHMSM(0,0,3,0);   //等待两秒
  GUI_Text(30,10,"XinJiang  University",Red,White);
  GUI_Text(20,40, "AT:            OK",Black,White);
  GUI_Text(20,70, "AT+CSMS=GSM:   OK",Black,White);
  GUI_Text(20,100,"AT+CMGF=1:     OK",Black,White);
  GUI_Text(20,130,"AT+CLIP=1:     OK",Black,White);
  GUI_Text(20,160,"AT+CNMI=2,1:   OK",Black,White);
  GUI_Text(20,190,"Have A Call:   NO",Black,White);
  GUI_Text(20,220,"Tempreture:",Black,White);
  GUI_Text(20,250,"Humidity  :",Black,White);
  GUI_Text(20,280,"Time has passed:",Black,White);
  PutChar(200,280,'S',Black,White);
  for(;;)
  {
   //  OSFlagPend(FlagPtr,(OS_FLAGS) 1,OS_FLAG_WAIT_SET_ALL,0,&err);
//  LED2_ON; 
    TM = OSTimeGet();
 TM=TM/1001;
 sprintf((char *)string,"%d",TM);
 GUI_Text(160,280,string,Black,White);
    OSTimeDlyHMSM(0,0,1,0);   //等待1秒 
  }
}

void Task3(void *p_arg)
{
    char Send_String[20];
  for(;;)
  {
 /*     OSTimeDlyHMSM(0,0,2,0);   //等待两秒
  if(Tempreture>25&&Send_T==0)
  {
  TC35_ATD("13565809332");
    //TC35_CMGS("");
   Send_T=1;
  }
*/
          OSSemPend(ring_semp,0,&err);
          strncpy(TEL,&RxBuffer1[14],11);
    GUI_Text(120,190,TEL,Red,White);
    OSTimeDlyHMSM(0,0,1,0);   //等待两秒  挂机
    TC35_ATH();///挂机
    OSTimeDlyHMSM(0,0,8,0);   //等待8秒 发送信息
    strcpy(Send_String,"Tempreture:");
    strcat(Send_String,s_temp1);
    strcat(Send_String,"'C \rHumidity:");  
          strcat(Send_String,s_temp2);    
    TC35_CMGS(Send_String);           
  }
}

 

 

/*

 给用户发送信息代码

* /

/////// TC35发送信息
void TC35_CMGS(char * String)
{
 CMD = CMGS;
  UartPrintf(USART1,"AT+CMGS=");
  UartPrintf(USART1,&RxBuffer1[14]);
   delay(50);
  UartPrintf(USART1,"\r");
 delay(50);
 UartPrintf(USART1,(unsigned char *)String);
 delay(50);
 UartPutchar(USART1,0x1A);
 CMD=0;
}

 

 

/*

提取来电信息,这里使用的TEXT格式,读取来电号码的方法有点笨,(从RxBuffer1[14]----RxBuffer1[24]是电话号码,根据前面对来电信息的分析得出的,太傻太笨了……呵呵 )以后再改进吧

*/

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
   {
     /* Read one byte from the receive data register */
   if(CMD==RING)
   {
    RxBuffer1[RxCounter1++] = USART_ReceiveData(USART1);
    if(RxCounter1==25)
  {
     RxCounter1=0;
     CMD=0;
     OSSemPost(ring_semp);
  }
   }
   else
 R_temp[temp_count++] = USART_ReceiveData(USART1);
 
       /*
     先接收四个字节数据,一般如下情况:
    1、<CR<LF>AT
    2、<CR<LF>RI
    3、<CR<LF>+C
  */
    if(temp_count==4)
     {
   temp_count=0;
      if(R_temp[2]=='A'&&R_temp[3]=='T')
    {
     ////收到返回AT指令
    //RxBuffer1[RxCounter1++] = R_temp;
    }
   else if(R_temp[2]=='R'&&R_temp[3]=='I')
    {
     //有电话呼入
    CMD = RING;
    RxCounter1=0;
    }
   }
  USART_ClearITPendingBit(USART1,USART_FLAG_RXNE);
   }
  
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang_walfred/article/details/6867450

让窗口一直在上面

让窗口一直在上面 http://www.tongyi.net  作者:天涯风铃    点击:419     很多流行软件都有这样一个选项:Always on Top。它可以让窗口在最上面,别的窗口不能...
  • gnuljf
  • gnuljf
  • 2001-05-26 14:32:00
  • 833

基于tc35(GSM模块)与STM32的短信控制程序

  • 2013年04月11日 14:47
  • 4.25MB
  • 下载

MQTT 移植STM32+GPRS(串口透传)(三)

昨天,去参观了AWE(中国家电及消费电子博览会),智能家居,智能插座、智能LED灯、智能摄像头、智能橱柜等等,大开眼界,原来这些别的公司的产品都正式投产了。还顺便打听了几家提供云服务的公司,他们一听M...
  • qq_20251069
  • qq_20251069
  • 2017-03-18 11:46:46
  • 8167

MQTT客户端移植到STM32

将mqtt移植到的单片机
  • Omega_Alpha
  • Omega_Alpha
  • 2016-04-15 10:49:07
  • 12835

MQTT 移植STM32+GPRS(串口透传)(一)

# 硬件智能之 MQTT协议介绍与移植笔记(一) ##MQTT是什么? MQTT(MessageQueuing Telemetry Transport Protocol)即全称消息队列遥感传输...
  • qq_20251069
  • qq_20251069
  • 2017-03-12 21:02:34
  • 4504

python 使用pymssql的基本总结

pymssql 的使用 python 中使用的第三方库 下载pymssql的文件,然后使用pip 命令下载。 连接数据库操作 class MSSQL: def __init__(s...
  • u013266600
  • u013266600
  • 2018-01-23 10:33:22
  • 274

<em>TC35</em>8870各个工作模式驱动配置

<em>TC35</em>8870各个工作模式驱动配置 综合评分:4 收藏(1)评论(3)举报 所需: 3 ...<em>python+</em>selenuim 各个浏览器驱动 立即下载 上传者: 海滨小城vip 时间: 2017-...
  • 2018年04月08日 00:00

通用短信猫SDK以及SDK调用示范(全部源代码),支持所有GSM模块,附TC35/MC39i短信猫开发板电路图

      目前这个SDK是针对我发在http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=1908785里边的DTU写的,只要去掉那个判断型号的指令...
  • hejianhua
  • hejianhua
  • 2011-03-15 09:22:00
  • 2569

9C51单片机(特别是AT89S52)控制GSM模块TC35收发短信的程序

这个程序是已经调完的,并且成功的,功能是定义了一个BUTTON1按键,,按下后就自动发短息,短信内容为nihao,GSM_ATCMGS()函数中有个数组。存入了指令加手机号加0d。把手机好的asc换成...
  • dreamtdp
  • dreamtdp
  • 2012-05-31 18:12:49
  • 5419

基于STM32F103的数据采集系统设计

要求: 1)  可实现16路ADC采样,电压采样范围(0-3.3V,或0-5V),采样时钟自定义; 2)  LCD动态显示16路ADC采样到的电压值; 3)  通过串口将采集到的电压值发送到上位...
  • qq_40966084
  • qq_40966084
  • 2018-01-17 17:00:40
  • 249
收藏助手
不良信息举报
您举报文章:TC35学习5------基于STM32f103下的GSM数据采集
举报原因:
原因补充:

(最多只允许输入30个字)