打印
[开源硬件]

【21ic第二届设计大赛】+ 网络双屏桌面显示器

[复制链接]
6995|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. 项目方案的构想和实施计划
之前用新唐的M453驱动农行金E顺屏成功,准备在这个基础上实现网络内容的抓取和显示,这个12864的屏尺寸较小,满屏是4行,每行16*16 8个汉字,信息量稍小
所以就沿着老任NDS的思路,何不搞个双屏显示,网络的连接首选WIFI模块,就用乐鑫的ESP32模块了,时间若富余的话,还可以控制NUC505播个天气预报什么的,哈哈

总体方案是M453作为主控,控制两个屏和WIFI模块,接入按键,来切换天气和新闻头条,通过串口发送指令到NUC505,播报对应的MP3文件

2. 硬件设计过程  搭建平台 调试流程 就融在一起了 后面再说程序设计和作品展示

首先是之前用UC1604的初始化指令对农行屏操作之后的效果
有很多格子的显示,貌似有规律
并且显示内容倒置,用x-mirror   y-mirror  xy-mirror的指令尝试后,效果依旧,有些郁闷了


经过一番折腾后,使用ST7567的指令初始化并显示正常了,早期拍摄的,没放入ID



下面来说说第二个屏的改造过程
拆掉外壳和USB线,来个总览图



拆掉背面的主控芯片,注意不要伤到其他元器件



背面引线用的洞洞板,先试下尺寸和效果


拆掉背光板,把FPC平展


从红,黑处引出5V和GND,用酒精清理下FPC和板子的连接处


电源和信号都已引出


整理引线,准备焊接到有插针的洞洞板上


焊接完毕


试了下,各线连接可靠,上外壳


背面特写,看着还不错,由于前面屏的铺垫,此次改造很顺利


背光亮起


显示内容




相关帖子

沙发
springvirus|  楼主 | 2018-7-11 11:06 | 显示全部楼层
本帖最后由 springvirus 于 2018-7-16 08:26 编辑

下面说下ESP32模块,模块上印有ESP-WROOM-32,首先看看这个东东的手册ESP32-WROOM-32 is a powerful, generic WIFI+BT+BLE MCU module that targets a wide variety of applications
at the core of this module is the ESP32-D0WDQ6 chip, there are two cpu cores ....
the clock frequency is adjustable from 80MHz to 240MHz ....

支持WIFI BT BLE,双核,主频从80到240可调,来头着实不小



U转串+MAX3232+ESP32


对它发送AT指令,看是否已经烧入AT固件了



看来是没有烧入,折腾烧录过程
下载esp32-wroom-32_at_v1.1_0.zip,里面有很多bin文件,按照download.config来烧录
配置为SPI SPEED 40MHz  SPI MODE DIO  Flash Size 32MBits来烧录
esp32-wroom-32_at_v1.1_0.zip (1.46 MB)


但重启后,发送AT指令,模块无反应
再次搜索到一个厂商的AT固件
ai-thinker_esp32_dio_32mbit_v2.0_20171205.rar (769.93 KB)
还用上面的配置烧录


重启后,发送AT,依旧无反应,嘿嘿有点意思了
看到有说用DOUT 的SPI MODE烧录的,马上尝试
烧录后,重启,115200,终于看到了一大堆的初始化信息,以及最后的
READY


发送AT和AT+GMR,模块返回正常,颇有些
"东风USB雷达跟踪正常,遥感信号正常"的味道了,哈哈



尝试连接WIFI,显示WIFI CONNECTED



最后上一张双屏的显示效果图

使用特权

评论回复
板凳
springvirus|  楼主 | 2018-7-14 14:33 | 显示全部楼层
U转串直接操作ESP32,进行连接WIFI,TCP连接,发送HTTP GET,获取天气情况,成功抓取到数据
进行程序上的流程搭建

使用特权

评论回复
地板
springvirus|  楼主 | 2018-7-14 14:40 | 显示全部楼层
抓取到数据包的打印和注释如下
hex->[0]7b [1]22 [2]72 [3]65 [4]73 [5]75 [6]6c [7]74 [8]73 [9]22 [10]3a [11] 5b [12]7b [13]22 [14]6c [15]6f [16]63 [17]61 [18]74 [19]69 [20]6f [21]6e [22] 22 [23]3a [24]7b [25]22 [26]69 [27]64 [28]22 [29]3a [30]22 [31]57 [32]57 [33] 47 [34]51 [35]44 [36]43 [37]57 [38]36 [39]54 [40]42 [41]57 [42]31 [43]22 [44] 2c [45]22
[46]6e [47]61 [48]6d [49]65 -> name
[50]22 [51]3a [52]22 -> ":"
[53]e5 [54]a4 [55]a9 [56]e6 [57]b4 [58]a5   ->天津
[59]22 [60]2c [61]22 -> ","
[62]63 [63]6f [64]75 [65]6e [66]
74 [67]72 [68]79 [69]22 [70]3a [71]22 [72]43 [73]4e [74]22 [75]2c [76]22 [77] 70 [78]61 [79]74 [80]68
[81]22 [82]3a [83]22
[84]e5 [85]a4 [86]a9 [87]e6 [88]b4 [89]a5  ->天津
[90]2c [91]e5 [92]a4 [93]a9 [94]e6 [95]b4 [96]a5  ->天津
[97]2c
[98]e4 [99]b8 [100]ad [101]e5 [102]9b [103]bd  -> 中国


进行UTF8转GBK的函数测试

memset(utf, 0x00, sizeof(utf));
memset(gbk, 0x00, sizeof(gbk));
memcpy(utf, "\xe5\xa4\xa9\xe6\xb4\xa5", 6);
       
SwitchToGbk(utf, 6, gbk , &outlen);

printbuf("switch to GBK tianjin", gbk, 10);

memset(utf, 0x00, sizeof(utf));
memset(gbk, 0x00, sizeof(gbk));
memcpy(utf, "\xe4\xb8\xad\xe5\x9b\xbd", 6);

SwitchToGbk(utf, 6, gbk , &outlen);
                       
printbuf("switch to GBK zhongguo", gbk, 10);


打印如下

switch to GBK tianjin->[0]cc [1]ec [2]bd [3]f2 [4]00 [5]00 [6]00 [7]00 [8]00 [9]00

switch to GBK zhongguo->[0]d6 [1]d0 [2]b9 [3]fa [4]00 [5]00 [6]00 [7]00 [8]00 [9]00


经查GBK编码表,转换正常可用

GBK编码表.zip (62.53 KB)

使用特权

评论回复
5
springvirus|  楼主 | 2018-7-15 15:06 | 显示全部楼层
抓取的天气预报内容


双屏的显示



使用特权

评论回复
6
springvirus|  楼主 | 2018-7-15 15:08 | 显示全部楼层
总体有个效果了,后面继续完善

使用特权

评论回复
7
springvirus|  楼主 | 2018-7-18 12:22 | 显示全部楼层
一路向北lm 发表于 2018-7-18 08:15
屏线一共多少根,屏是iic的驱动吗?哪里的资料?

https://bbs.21ic.com/icview-2525114-1-1.html

使用特权

评论回复
8
springvirus|  楼主 | 2018-7-20 09:06 | 显示全部楼层
本帖最后由 springvirus 于 2018-7-20 09:08 编辑

感谢各位顶贴!

使用特权

评论回复
9
springvirus|  楼主 | 2018-7-21 14:46 | 显示全部楼层
开机显示的**图和整体方案的实物图



使用特权

评论回复
10
springvirus|  楼主 | 2018-7-21 15:13 | 显示全部楼层
本帖最后由 springvirus 于 2018-7-21 15:22 编辑

大赛主题要求显示至少两种信息,这里加入超级大乐透的开奖信息,通过按键切换显示最近四期的信息,视频如下
屏的背光稍强,手机摄像头有些吃力



使用特权

评论回复
11
springvirus|  楼主 | 2018-7-28 13:23 | 显示全部楼层
向NUC505的UART1发送指令,播放相关WAV文件正常,后面跟M453进行联调
在屏显示天气预报的同时,进行语音播报

使用特权

评论回复
12
springvirus|  楼主 | 2018-7-29 09:57 | 显示全部楼层
本帖最后由 springvirus 于 2018-7-29 10:24 编辑

控制NUC505相对简单,只是通过串口发送指令,协议可以灵活制定,数据部分包括今天明天类型字节,天气情况类型字节,最高温,最低温
使用相关软件制作WAV音频文件,存储到TF卡的目录下,路径随意,只要和程序里的获取文件目录保持一致就可以了,NUC505收到指令并解析后,播放对应的音频文件


类型字节和温度数据范围,制定协议供给主从MCU使用,至此,一个相对完整的作品就完成了

视频如下






使用特权

评论回复
13
springvirus|  楼主 | 2018-7-29 10:16 | 显示全部楼层
本次制作涉及到农行屏的驱动,以及字库的下载和存储,以下帖子有详细介绍,以供参考

M453使用自带RTC并驱动农行金e顺变身桌面小时钟  
https://bbs.21ic.com/icview-2525114-1-1.html

M453通过上位机下载GBK字库到AT45DB321成功
https://bbs.21ic.com/icview-2522292-1-1.html

使用特权

评论回复
14
springvirus|  楼主 | 2018-7-29 10:24 | 显示全部楼层
解析天气的函数内容如下

void parse_2days_weather(void)
//parse and display
{

        unsigned int i = 0, k = 0;

        unsigned char dis_buf[20] = {0};

        S_RTC_TIME_DATA_T time;

        unsigned int len, offset;

        unsigned char whichday_flag = 0;
       
       

        unsigned char utf[64] = {0};
        unsigned char gbk[64] = {0};

        unsigned char sdata[4] = {0};
       
        unsigned char temp = 0;
       

        CleanLCD();
        CleanLCD_2();


       
        for(i=0;i<uart1_recv_offset;i++)
        {


                if(uart1_recv_buf[i] == 'n' &&
                        uart1_recv_buf[i+1] == 'a' &&
                        uart1_recv_buf[i+2] == 'm' &&
                        uart1_recv_buf[i+3] == 'e')
                {
                        len = 0;
                        offset = 0;

                        memset(utf, 0x00, sizeof(utf));
                        memset(gbk, 0x00, sizeof(gbk));
               
                        while(uart1_recv_buf[i+7+offset] != '"')
                        {
                                utf[offset] = uart1_recv_buf[i+7+offset];
                                offset++;
                                if(offset >= sizeof(utf))
                                {
                                        break;
                                }
                        }
                       
                       
                        SwitchToGbk(utf, offset, gbk, NULL);

                        memset(city_gbk, 0x00, sizeof(city_gbk));       
                        memcpy(city_gbk, gbk, sizeof(gbk));

                        DisplayCity(gbk);

                       

                }



                //english letter's UTF8 is the same as ASCII
                //由于有
                //"last_update"
                //的关键字,所以这里用
                //"date"
                //来过滤
                if(uart1_recv_buf[i] == '"' &&
                        uart1_recv_buf[i+1] == 'd' &&
                        uart1_recv_buf[i+2] == 'a' &&
                        uart1_recv_buf[i+3] == 't' &&
                        uart1_recv_buf[i+4] == 'e' &&
                        uart1_recv_buf[i+5] == '"')
                {
                       
                        time.u32Year = (uart1_recv_buf[i+8]-0x30)*1000 +
                                (uart1_recv_buf[i+9]-0x30)*100 +
                                (uart1_recv_buf[i+10]-0x30)*10 +
                                (uart1_recv_buf[i+11]-0x30)*1;
                       
                        time.u32Month = (uart1_recv_buf[i+13]-0x30)*10 +
                                (uart1_recv_buf[i+14]-0x30)*1;
                       
                       
                        time.u32Day = (uart1_recv_buf[i+16]-0x30)*10 +
                                (uart1_recv_buf[i+17]-0x30)*1;


                        trace("time.year = %d, month = %d, day = %d \r\n",
                                time.u32Year, time.u32Month, time.u32Day);


                        DisplayDate(time);

                        if((i >= 150) && (i <= 250))
                        {
                                whichday_flag = Today;
                                //today
                        }
                        else
                        {
                                whichday_flag = Tomorrow;
                                //tomorrow
                        }

                }


                if(uart1_recv_buf[i] == 't' &&
                        uart1_recv_buf[i+1] == 'e' &&
                        uart1_recv_buf[i+2] == 'x' &&
                        uart1_recv_buf[i+3] == 't' &&
                        uart1_recv_buf[i+4] == '_' &&
                        uart1_recv_buf[i+5] == 'd' &&
                        uart1_recv_buf[i+6] == 'a' &&
                        uart1_recv_buf[i+7] == 'y')
                {
                       
                        len = 0;
                        offset = 0;

                        memset(utf, 0x00, sizeof(utf));
                        memset(gbk, 0x00, sizeof(gbk));
               
                        while(uart1_recv_buf[i+11+offset] != '"')
                        {
                                utf[offset] = uart1_recv_buf[i+11+offset];
                                offset++;
                                if(offset >= sizeof(utf))
                                {
                                        break;
                                }
                        }
                       
                       
                        SwitchToGbk(utf, offset, gbk, NULL);

                       
                        DisplayDayWeather(gbk);
                       

                        if(gbk[0] == Qing_0 && gbk[1] == Qing_1)
                        {
                                sdata[0] = Qing;
                                display1616_2(6, 0, icon_sunny);
                        }
                        else if(gbk[0] == Yin_0 && gbk[1] == Yin_1)
                        {
                                sdata[0] = Yin;
                                display1616_2(6, 0, icon_cloudy);
                        }
                        else if(gbk[0] == Duo_0 && gbk[1] == Duo_1)
                        {
                                sdata[0] = DuoYun;
                                display1616_2(6, 0, icon_cloudy);
                        }
                        else if(gbk[0] == Xiao_0 && gbk[1] == Xiao_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[0] = XiaoYu;
                                display1616_2(6, 0, icon_rainy);
                        }
                        else if(gbk[0] == Zhong_0 && gbk[1] == Zhong_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)                       
                        {
                                sdata[0] = ZhongYu;
                                display1616_2(6, 0, icon_rainy);
                        }
                        else if(gbk[0] == Da_0 && gbk[1] == Da_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[0] = DaYu;
                                display1616_2(6, 0, icon_heavyrainy);
                        }
                        else if(gbk[0] == Bao_0 && gbk[1] == Bao_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[0] = BaoYu;
                                display1616_2(6, 0, icon_heavyrainy);
                        }
                        else if(gbk[0] == Da_0 && gbk[1] == Da_1 &&
                                gbk[2] == Bao_0 && gbk[3] == Bao_1 &&
                                gbk[4] == Yu_0 && gbk[5] == Yu_1)
                        {
                                sdata[0] = DaBaoYu;
                                display1616_2(6, 0, icon_heavyrainy);
                        }
                        else if(gbk[0] == Te_0 && gbk[1] == Te_1 &&
                                gbk[2] == Da_0 && gbk[3] == Da_1 &&
                                gbk[4] == Bao_0 && gbk[5] == Bao_1 &&
                                gbk[6] == Yu_0 && gbk[7] == Yu_1)
                        {
                                sdata[0] = TeDaBaoYu;
                                display1616_2(6, 0, icon_heavyrainy);
                        }
                        else if(gbk[0] == Zhen_0 && gbk[1] == Zhen_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[0] = ZhenYu;
                                display1616_2(6, 0, icon_rainy);       
                        }
                        else if(gbk[0] == Lei_0 && gbk[1] == Lei_1 &&
                                gbk[2] == Zhen_0 && gbk[3] == Zhen_1 &&
                                gbk[4] == Yu_0 && gbk[5] == Yu_1)
                        {
                                sdata[0] = LeiZhenYu;
                                display1616_2(6, 0, icon_leizhen_rainy);
                        }
                        else if(gbk[0] == Bing_0 && gbk[1] == Bing_1 &&
                                gbk[2] == Bao_0 && gbk[3] == Bao_1)
                        {
                                sdata[0] = BingBao;
                                display1616_2(6, 0, icon_rainy);       
                        }
                        else if(gbk[0] == Mai_0 && gbk[1] == Mai_1)
                        {
                                sdata[0] = Mai;
                                display1616_2(6, 0, icon_cloudy);       
                        }
                        else
                        {
                                sdata[0] = 0x00;
                        }

                       
                }


                if(uart1_recv_buf[i] == 't' &&
                        uart1_recv_buf[i+1] == 'e' &&
                        uart1_recv_buf[i+2] == 'x' &&
                        uart1_recv_buf[i+3] == 't' &&
                        uart1_recv_buf[i+4] == '_' &&
                        uart1_recv_buf[i+5] == 'n' &&
                        uart1_recv_buf[i+6] == 'i' &&
                        uart1_recv_buf[i+7] == 'g' &&
                        uart1_recv_buf[i+8] == 'h' &&
                        uart1_recv_buf[i+9] == 't')
                {
                       
                        len = 0;
                        offset = 0;

                        memset(utf, 0x00, sizeof(utf));
                        memset(gbk, 0x00, sizeof(gbk));
               
                        while(uart1_recv_buf[i+13+offset] != '"')
                        {
                                utf[offset] = uart1_recv_buf[i+13+offset];
                                offset++;
                                if(offset >= sizeof(utf))
                                {
                                        break;
                                }
                        }
                       
                       
                        SwitchToGbk(utf, offset, gbk, NULL);

                       
                        DisplayNightWeather(gbk);


                        if(gbk[0] == Qing_0 && gbk[1] == Qing_1)
                        {
                                sdata[1] = Qing;
                                display1616_2(6, 4*16, icon_sunny);
                        }
                        else if(gbk[0] == Yin_0 && gbk[1] == Yin_1)
                        {
                                sdata[1] = Yin;
                                display1616_2(6, 4*16, icon_cloudy);
                        }
                        else if(gbk[0] == Duo_0 && gbk[1] == Duo_1)
                        {
                                sdata[1] = DuoYun;
                                display1616_2(6, 4*16, icon_cloudy);
                        }
                        else if(gbk[0] == Xiao_0 && gbk[1] == Xiao_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[1] = XiaoYu;
                                display1616_2(6, 4*16, icon_rainy);
                        }
                        else if(gbk[0] == Zhong_0 && gbk[1] == Zhong_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[1] = ZhongYu;
                                display1616_2(6, 4*16, icon_rainy);
                        }
                        else if(gbk[0] == Da_0 && gbk[1] == Da_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[1] = DaYu;
                                display1616_2(6, 4*16, icon_heavyrainy);
                        }
                        else if(gbk[0] == Bao_0 && gbk[1] == Bao_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[1] = BaoYu;
                                display1616_2(6, 4*16, icon_heavyrainy);
                        }
                        else if(gbk[0] == Da_0 && gbk[1] == Da_1 &&
                                gbk[2] == Bao_0 && gbk[3] == Bao_1 &&
                                gbk[4] == Yu_0 && gbk[5] == Yu_1)
                        {
                                sdata[1] = DaBaoYu;
                                display1616_2(6, 4*16, icon_heavyrainy);
                        }
                        else if(gbk[0] == Te_0 && gbk[1] == Te_1 &&
                                gbk[2] == Da_0 && gbk[3] == Da_1 &&
                                gbk[4] == Bao_0 && gbk[5] == Bao_1 &&
                                gbk[6] == Yu_0 && gbk[7] == Yu_1)
                        {
                                sdata[1] = TeDaBaoYu;
                                display1616_2(6, 4*16, icon_heavyrainy);
                        }
                        else if(gbk[0] == Zhen_0 && gbk[1] == Zhen_1 &&
                                gbk[2] == Yu_0 && gbk[3] == Yu_1)
                        {
                                sdata[1] = ZhenYu;
                                display1616_2(6, 0, icon_rainy);       
                        }
                        else if(gbk[0] == Lei_0 && gbk[1] == Lei_1 &&
                                gbk[2] == Zhen_0 && gbk[3] == Zhen_1 &&
                                gbk[4] == Yu_0 && gbk[5] == Yu_1)
                        {
                                sdata[1] = LeiZhenYu;
                                display1616_2(6, 0, icon_leizhen_rainy);
                        }
                        else if(gbk[0] == Bing_0 && gbk[1] == Bing_1 &&
                                gbk[2] == Bao_0 && gbk[3] == Bao_1)
                        {
                                sdata[1] = BingBao;
                                display1616_2(6, 0, icon_rainy);       
                        }
                        else if(gbk[0] == Mai_0 && gbk[1] == Mai_1)
                        {
                                sdata[1] = Mai;
                                display1616_2(6, 0, icon_cloudy);       
                        }
                        else
                        {
                                sdata[0] = 0x00;
                        }
                       
                }

                if(uart1_recv_buf[i] == 'h' &&
                        uart1_recv_buf[i+1] == 'i' &&
                        uart1_recv_buf[i+2] == 'g' &&
                        uart1_recv_buf[i+3] == 'h')
                {
                       
                        memset(dis_buf, 0x00, sizeof(dis_buf));

                        //start
                        if(uart1_recv_buf[i+6] == '"')
                        {       
                                //temperature first bit
                                dis_buf[0] = uart1_recv_buf[i+7];
                                if(uart1_recv_buf[i+8] == '"')
                                {
                                        //end

                                }
                                else
                                {
                                        //temperature second bit
                                        dis_buf[1] = uart1_recv_buf[i+8];               
                                }
                        }

                        DisplayHighTemp(dis_buf);

                        if(dis_buf[0] != 0x00)
                        {
                                temp = dis_buf[0] - 0x30;
                                if(dis_buf[1] != 0x00)
                                {
                                        temp = (temp * 10) + (dis_buf[1] - 0x30);
                                }
                        }

                        sdata[2] = temp;
                       
                       
                }


                if(uart1_recv_buf[i] == 'l' &&
                        uart1_recv_buf[i+1] == 'o' &&
                        uart1_recv_buf[i+2] == 'w')
                {
                       
                        memset(dis_buf, 0x00, sizeof(dis_buf));

                        //start
                        if(uart1_recv_buf[i+5] == '"')
                        {       
                                //temperature first bit
                                dis_buf[0] = uart1_recv_buf[i+6];
                                if(uart1_recv_buf[i+7] == '"')
                                {
                                        //end

                                }
                                else
                                {
                                        //temperature second bit
                                        dis_buf[1] = uart1_recv_buf[i+7];

                                       
                                }
                        }

                        DisplayLowTemp(dis_buf);


                        if(dis_buf[0] != 0x00)
                        {
                                temp = dis_buf[0] - 0x30;
                                if(dis_buf[1] != 0x00)
                                {
                                        temp = (temp * 10) + (dis_buf[1] - 0x30);
                                }
                        }

                        sdata[3] = temp;

                       
                }


                //由于含有
                //"wind_direction_degree"的关键字,所以将其过滤掉
                if(uart1_recv_buf[i] == '"' &&
                        uart1_recv_buf[i+1] == 'w' &&
                        uart1_recv_buf[i+2] == 'i' &&
                        uart1_recv_buf[i+3] == 'n' &&
                        uart1_recv_buf[i+4] == 'd' &&
                        uart1_recv_buf[i+5] == '_' &&
                        uart1_recv_buf[i+6] == 'd' &&
                        uart1_recv_buf[i+7] == 'i' &&
                        uart1_recv_buf[i+8] == 'r' &&
                        uart1_recv_buf[i+9] == 'e' &&
                        uart1_recv_buf[i+10] == 'c' &&
                        uart1_recv_buf[i+11] == 't' &&
                        uart1_recv_buf[i+12] == 'i' &&
                        uart1_recv_buf[i+13] == 'o' &&
                        uart1_recv_buf[i+14] == 'n' &&
                        uart1_recv_buf[i+15] == '"')
                {
                       
                        len = 0;
                        offset = 0;

                        memset(utf, 0x00, sizeof(utf));
                        memset(gbk, 0x00, sizeof(gbk));
               
                        while(uart1_recv_buf[i+18+offset] != '"')
                        {
                                utf[offset] = uart1_recv_buf[i+18+offset];
                                offset++;
                                if(offset >= sizeof(utf))
                                {
                                        break;
                                }
                        }
                       
                       
                        SwitchToGbk(utf, offset, gbk, NULL);

                       
                        DisplayWindDirection(gbk);

                }


                if(uart1_recv_buf[i] == 'w' &&
                        uart1_recv_buf[i+1] == 'i' &&
                        uart1_recv_buf[i+2] == 'n' &&
                        uart1_recv_buf[i+3] == 'd' &&
                        uart1_recv_buf[i+4] == '_' &&
                        uart1_recv_buf[i+5] == 's' &&
                        uart1_recv_buf[i+6] == 'p' &&
                        uart1_recv_buf[i+7] == 'e' &&
                        uart1_recv_buf[i+8] == 'e' &&
                        uart1_recv_buf[i+9] == 'd')
                {
                       
                        memset(dis_buf, 0x00, sizeof(dis_buf));

                        //start
                        if(uart1_recv_buf[i+12] == '"')
                        {       
                                //speed first bit
                                dis_buf[0] = uart1_recv_buf[i+13];
                                if(uart1_recv_buf[i+14] == '"')
                                {
                                        //end

                                }
                                else
                                {
                                        //speed second bit
                                        dis_buf[1] = uart1_recv_buf[i+14];

                                       
                                }
                        }

                        DisplayWindSpeed(dis_buf);
                       
                       
                        if(whichday_flag == Today)
                        {
                               
                                nuc505_send_cmd(Today, sdata);
                               

                                for(k = 0; k < 200; k++)
                                {
                                        delay_test(1000*25);
                                }

                                CleanLCD();
                                CleanLCD_2();

                                //切换到明天时,报文中没有城市名了,所以这里使用全局的city_gbk
                                DisplayCity(city_gbk);
                       
                        }
                        else if(whichday_flag == Tomorrow)
                        {
                               
                                nuc505_send_cmd(Tomorrow, sdata);
               
                        }
                       
               
                       
                }

               

        }
       


}


使用特权

评论回复
15
springvirus|  楼主 | 2018-8-2 15:15 | 显示全部楼层
过来逛逛,哈哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

127

主题

4571

帖子

14

粉丝