zhange 发表于 2024-5-26 05:43:17

12.上个帖子被审核了



void huoqutianqi(void)
{
        //k780成功               

                Uart3SendStr("AT+RST\r\n");
                Delay1000ms();
                wptr=0;
                Uart4SendStr(buffer);
                memset(buffer,'\0', sizeof(buffer));
                Uart4SendStr("01rst\r\n");
               
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
               
                Uart3SendStr("AT+CIPSTART=\"TCP\",\"域名\",80\r\n");//不懂得看下图   带网址发不出来
                Delay1000ms();
                wptr=0;
                Uart4SendStr(buffer);
                memset(buffer,'\0', sizeof(buffer));
                Uart4SendStr("02lianjie\r\n");
               

                Delay1000ms();
               
                Uart3SendStr("AT+CWMODE=1\r\n");       
                Delay1000ms();
                wptr=0;
                Uart4SendStr(buffer);       
                memset(buffer,'\0', sizeof(buffer));
                Uart4SendStr("03lianjie-fuwuqi\r\n");
               
               
    Delay1000ms();
               
               
                Uart3SendStr("AT+CIPMODE=1\r\n");          //开启透传模式
                Delay1000ms();
                wptr=0;
                Uart4SendStr(buffer);       
                memset(buffer,'\0', sizeof(buffer));
                Uart4SendStr("04kaiqi-touchuan\r\n");
          Delay1000ms();
               
                Uart3SendStr("AT+CIPSEND\r\n");   
                Delay1000ms();
                wptr=0;
                Uart4SendStr(buffer);
                memset(buffer,'\0', sizeof(buffer));               
                Uart4SendStr("05-kaishi\r\n");
                               
                Uart3SendStr("GET 天气获取网址\r\n");//不懂得看下图   带网址发不出来
                Delay1000ms();
                Uart4SendStr(buffer);
               
               
               
               
                Uart4SendStr("06-wangzhi\r\n");
                Delay1000ms();
                Delay1000ms();
                Delay1000ms();
               
}

zhange 发表于 2024-5-26 05:44:49


12.续集图




和12步骤对比下我把key打了马赛克了

zhange 发表于 2024-5-26 05:54:28

13.放到主函数测试频率选择11.0592

电脑打开对应端口不是usb哪个我是用usb转串口 连接的




测试结果




下面开始截取字符串

zhange 发表于 2024-5-26 07:00:44

14.截取字符串用到了jsmn库

网上有教程 有点少基本上都是cjson的

我是先学的cjson c51搞不定(可能是我菜) 又学的jsmn   还行吧   也算简单

这俩货我学了一天




推荐个学习地址:




基本原理:

jsmn 将每一个 json 数据段都抽象为一个 token:一定要明白每个token,方便获取。



比如:看我的图吧1 2 3 获取的时候减去1为0 1 2





再举个例子一层一层的 获取




我已经得到数据




下一步把数据处理下


zhange 发表于 2024-5-26 07:02:47

15.格式化json代码


Delay1000ms();       

    r = jsmn_parse (&p, buffer, strlen (buffer), t, sizeof (t) / sizeof (t));//r   一定要放到获取到buffer后边
               
               
                for(xunhuan = 0; xunhuan <= r ; xunhuan++)
               
                {
                        name_len = t.end - t.start;
                        if (name_len < sizeof(fafa) - 1)
                        { // 确保不会缓冲区溢出
                                strncpy(fafa, (buffer + t.start), name_len);
                                        fafa = '\0'; // 添加字符串终止符
                        }else
                        {
                                strncpy(fafa, "taidale", 7);
                                fafa = '\0'; // 添加字符串终止符
                        }
                                       
                        Uart4SendStr("\r\n === \r\n");                       
                       
                        Delay1000ms();
                        Uart4SendStr(fafa);
                        Delay1000ms();
                        Uart4SendStr("\r\n === \r\n");
                }

zhange 发表于 2024-5-26 07:04:31

16.jsmn别人分享的程序你可以在里边获取到jsmn的头和主程序不用去外网下载了 我就是用的他的





亲测可用我就是用这个学习的。。。。。。{:5_294:}

zhange 发表于 2024-5-26 08:32:26

17.是时候添加上屏幕了


把获取的当天天气情况显示出来




完美就是没加字库有点乱

下一步 整理需要的字库   格式化输出

soma 发表于 2024-5-26 09:00:05

值得借鉴学习

zhange 发表于 2024-5-26 14:52:07

18.白天天气代码参考


//白天
               
                name_len = t.end - t.start;
    if (name_len < sizeof(fafa) - 1)
                { // 确保不会缓冲区溢出
       strncpy(fafa, (buffer + t.start), name_len);
      fafa = '\0'; // 添加字符串终止符
    }
               
                num = atoi(fafa);
       
                if (num == 0 | num == 1)
                {
                        dtbaitian = qing;
                }else if(num == 4 | num == 5 | num == 6 | num == 7 | num == 8)
                {
                        dtbaitian = duoyun;
                }else if( num == 9 )
                {
                        dtbaitian = yin;
                }else if(num == 10 | num == 11 | num == 12 | num == 13 | num == 14 | num == 15 | num == 16 | num == 17 | num == 18 | num == 19 | num == 20)
                {
                        dtbaitian = yu;
                }else if(num == 21 | num == 22 | num == 23 | num == 24 | num == 25 )
                {
                        dtbaitian = xue;
                }else if(num == 30 | num == 31 )
                {
                        dtbaitian = wumai;
                }else if(num == 32 | num == 33 | num == 34 | num == 35 | num == 36 )
                {
                        dtbaitian = feng;
                }else if(num == 37)
                {
                        dtbaitian = leng;
                }else if(num == 38)
                {
                        dtbaitian = re;
                }


zhange 发表于 2024-5-26 14:52:43

19.晚上天气代码参考


//yewan
               
                name_len = t.end - t.start;
    if (name_len < sizeof(fafa) - 1)
                { // 确保不会缓冲区溢出
       strncpy(fafa, (buffer + t.start), name_len);
      fafa = '\0'; // 添加字符串终止符
    }
               
                num = atoi(fafa);
       
                if (num == 0 | num == 1)
                {
                        dtyewan = yqing;
                }else if(num == 4 | num == 5 | num == 6 | num == 7 | num == 8)
                {
                        dtyewan = yduoyun;
                }else if( num == 9 )
                {
                        dtyewan = yyin;
                }else if(num == 10 | num == 11 | num == 12 | num == 13 | num == 14 | num == 15 | num == 16 | num == 17 | num == 18 | num == 19 | num == 20)
                {
                        dtyewan = yyu;
                }else if(num == 21 | num == 22 | num == 23 | num == 24 | num == 25 )
                {
                        dtyewan = yxue;
                }else if(num == 30 | num == 31 )
                {
                        dtyewan = ywumai;
                }else if(num == 32 | num == 33 | num == 34 | num == 35 | num == 36 )
                {
                        dtyewan = yfeng;
                }else if(num == 37)
                {
                        dtyewan = yleng;
                }else if(num == 38)
                {
                        dtyewan = yre;
                }

页: 1 2 [3] 4 5
查看完整版本: Ai32驱动12864显示网络天气学习记录