zoukankan      html  css  js  c++  java
  • 8-51单片机ESP8266学习-AT指令(单片机采集温湿度数据通过8266发送给C#TCP客户端显示)

    http://www.cnblogs.com/yangfengwu/p/8785516.html

    先写单片机端的程序

    先把源码和资料链接放到这里

    链接: https://pan.baidu.com/s/1jpHZjW_7pQKNfN9G4B6ZjA     密码:nhn3 

     

    咱先用TCP调试助手给单片机发指令,然后看一下回传的数据

    先做单片机程序,就在上一篇的基础上增加功能

    /**
    * @brief  WIFI模块发送数据的命令
    * @param  id--发给哪一个连接的设备
    * @param  Length--数据的长度
    * @param  *SendData--数据
    * @retval Overtime--接收命令的超时时间ms
    * @example 
    **/
    void ESPSendData(unsigned char id,unsigned char Length,unsigned char *SendData,int Overtime)
    {
      unsigned char Send [20];
        int SendLength = 0;
      sprintf (Send, "AT+CIPSEND=%d,%d
    ",(int)id, (int)Length);
        
        SendLength = 16;
        if(Length>=10){ SendLength = 17;}
        if(Length>=100){ SendLength = 18;}
      
        UartSendTI(Send,SendLength);//发送发送数据的命令
        while(Overtime--)
        {
            if(UsartFlage == 1)
            {
                UsartFlage = 0;
                if(strstr(UsartReceive, ">"))//收到回复
                {
                    DelayMs(50);
                    break;
                }
        }
            DelayMs(1);
      }
        
        if(Overtime>0)//没有超时
        {
         UartSendTI(SendData,Length);
      }
    }

     这地方

    SendLength = 16;
        if(Length>=10){ SendLength = 17;}
      if(Length>=100){ SendLength = 18;}

    是因为

    AT+CIPSEND=0,8
       数据少于10个    16个字符
    AT+CIPSEND=0,12
       数据少于10个    17个字符
    AT+CIPSEND=0,103
       数据少于10个    18个字符
    主函数里面

    也就增加了这一点内容..........

    哦哦哦忘了,上次说的时候忘了....自己先用串口助手配置了

     现在用手机连接模块的无线--先用调试助手测试,即使是做项目也是先用调试助手测试...

     

    还记得咱规定的命令不

    启动服务器成功以后就进入while(1) 循环,

    接收到数据  0xaa,0x55,0x01,0x01  则发送自己的温湿度数据   0xaa,0x55,温度(16进制表示),湿度(16进制表示)

    假设 接收到 0xaa,0x55,0x01,0x01   温度10度,湿度50%       0xaa,0x55,,0x01,0x0a,0x32 

    这一节不加任何的校验位,后期再加

    接收到数据  0xaa,0x55,0x02,0x00   控制小灯熄灭

    接收到数据  0xaa,0x55,0x02,0xff     控制小灯点亮

     

    现在试一下

    数据是  返回的数据是  aa 55 01 15 1C   15化成十进制是21度    1C是28%   温度21度   相对湿度28%

    说明可以采集了也能返回数据了,咱现在做C#采集端

    说一下,自己想了想就不用委托和回调了,因为想起了自己以前学C#,感觉对于初学者而言怎样简单就怎样做,不要去太追究规则和约束,等真正入门了再去考虑那些东西.

    其实这节是看着高大上但是却最是最简单的....

    咱前些日子写到

    现在增加几句话

    收到aa5501回复aa5501,对于为什么说不直接接收数据显示,因为你要先确定好确实可以接收,用串口调试助手先测试,

    可能有人直接就接收显示了,也可以,不过以经验来说,最好还是先这样做,因为自己这样上过当,反正C#的串口接收就必须用空闲中断类似

    的函数接收才行,因为每次接收到的不一定是一条数据..........

    我就先连接我的手机的TCP服务器调试一下,关于软件的使用可以看使用说明

     

     

    现在自己的APP还是有点问题

    会产生多余的发送任务,所以点击了一下发送,发送了好几次....................

    上一版本的没有这种情况,但是测试发现上一版本在5.1版本上任务却不让那样用,,,,郁闷,后期再找解决方法

    先不管它,先做现在的上位机

    现在添加一个定时器,每隔1S发送一次命令

            private void timer1_Tick(object sender, EventArgs e)
            {
                SendBuffer[0] = 0xaa;
                SendBuffer[1] = 0x55;
                SendBuffer[2] = 0x01;
                SendCnt = 3;
            }

    现在测试一下是不是每隔1S发送一次数据

    连接手机测试

     好现在显示温湿度

    自己用调试助手发的数据

    现在可以连接模块了

    模块初始化默认的网关是192.168.4.1,当然是可以修改的,后期再说

    我吹口气

     

    也可以控制点灯

     

    看了看我的单片机程序

    采集温湿度的命令是aa 55 01 

     

    http://www.cnblogs.com/yangfengwu/p/8871464.html

  • 相关阅读:
    再次写给我们这些浮躁的程序员
    SecureCRT的安装与破解,详细过程
    【SecureCRT】SecureCRT 护眼配色
    [Shell]常用语法
    [mysql]查看mysql执行情况的几种方法
    [vbs]脚本启动
    js 获取 网页屏幕高度 窗口高度 元素高度 滚动高度
    angular2 ng build --prod 报错:Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
    npm install warning: no description; no repository field
    vscode: Visual Studio Code 常用快捷键
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/8798512.html
Copyright © 2011-2022 走看看