Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【LwIP学习营】【第二周】 telnet+获取天气预报
发布于 2018-05-27 22:25:27 浏览:1730
订阅该版
* 本帖最后由 sengsong 于 2018-5-27 22:25 编辑 * 硬件平台: 安富莱V6开发板,STM32F429BIT6。 开发环境: MDK5.25.2.0,evn0.7.0,rtt3.0.4(github) 零、说明 主要是学习:1)使用telnet完成远程访问;2)在telnet启动weather命令,获取当地实时天气并打印出来。 一、telnet 在menuconfig里面使能telnet组件: ![微信截图_20180527215136.png](/uploads/201805/27/215202g1d36dnas2sbs8az.png) 这里使用的是Lwip1.4.1,在msh里运行telnet命令会在sockets.c中报错,这里是因为使能了RT_USING_POSIX和RT_USING_DFS_NET。如果不使能则telnet正常运行。 二、获取天气 1、这里使能了webclient和cJSON组件: ![微信截图_20180527215625.png](/uploads/201805/27/215652t9umm3qzlalllywb.png) 2、修改webclient_file.c webclient组件里原来的webclient_file.c是调用webclient_session *webclient_open(const char *URI)函数用GET方法获取URI指定的网页,将该网页打印到msh并保存到文件系统。因为我这边没实现文件系统,所以我只把获取到的网页存到buffer中。 ![微信截图_20180527220820.png](/uploads/201805/27/220843bo62uullca0344c7.png) 3、用cJSON组件Json格式数据里的天气信息 JSON是用"名称:值"对的格式存储数据的一种格式。cJSON是一个用C语言解析、生成JSON格式数据的库。RT-thread的贡献者已经为我们适配好了。cJSON的使用方法在网上有一些帖子讲的很详细[https://www.cnblogs.com/catgatp/p/6379955.html](https://www.cnblogs.com/catgatp/p/6379955.html)。这里先调用cJSON_Parse()解析JSON字符串得到格式化的数据root。然后用cJSON_GetObjectItem()方法获取指定名称的值。这里简单写了解析天气网站返回的JSON格式天气信息的函数。 void weather_prase(char * jsonStr) { cJSON * root = NULL; cJSON * sk_info =NULL; cJSON * cityName =NULL; cJSON * temp =NULL; cJSON * wd =NULL; cJSON * ws =NULL; cJSON * sd =NULL; root = cJSON_Parse(jsonStr); if (!root) { rt_kprintf("Error before: [%s]
",cJSON_GetErrorPtr()); } else { rt_kprintf("%s
", "获得的天气,Json格式:"); rt_kprintf("%s
", cJSON_Print(root)); sk_info = cJSON_GetObjectItem(root, "sk_info"); cityName = cJSON_GetObjectItem(sk_info, "cityName"); rt_kprintf("城市: %s
", cJSON_Print(cityName)); temp = cJSON_GetObjectItem(sk_info, "temp"); rt_kprintf("温度: %s
", cJSON_Print(temp)); wd = cJSON_GetObjectItem(sk_info, "wd"); rt_kprintf("风向: %s
", cJSON_Print(wd)); ws = cJSON_GetObjectItem(sk_info, "ws"); rt_kprintf("风速: %s
", cJSON_Print(ws)); sd = cJSON_GetObjectItem(sk_info, "sd"); rt_kprintf("湿度: %s
", cJSON_Print(sd)); } } 三、效果 效果如下图: ![微信截图_20180527214242.png](/uploads/201805/27/221654xzk3acjbk3rkazpb.png) 四、总结 1、还是那句话:rtt的丰富的组件的确是很不错。 2、bsp适配得并不是很完善,使用过程中会出现一些问题,一时半会找不到原因,这对于初学者来说很是打击。。。 3、感觉rtt团队应该准备市面上常见的开发板,由rtt团队或者招募志愿者维护。或者每个或者每个MCU架构的开发板组件一个微信群,这样效果会比较好。不然真的是很伤自信。。。 4、很多细节待以后慢慢体会。
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.7k
关于作者
sengsong
这家伙很懒,什么也没写!
提问
5
回答
3
被采纳
0
关注TA
发私信
相关问题
1
【LWIP学习营】第一关开发环境搭建
2
LWIP学习营第一周入门移植问题汇总贴
3
【LWIP学习营】f407+lan8720A小结
4
【LwIP学习营】【第一周】仅零散记录,无主题
5
【LWIP学习营】正点原子探索者F407+LAN8720第一周小结
6
【LwIP学习营】【第一周】网络通信基础及实现TCP 聊天客户端
7
【LwIP学习营】【第一周】LWIP移植
8
【LwIP学习营】【第一周】LWIP移植
9
【LwIP学习营】【第一周】开发板适配
10
【LwIP学习营】【第一周】环境搭建和配置验证
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
NXP MCXN947 测评(2)基于GPIO 控制实现DHT11 温湿度采集
2
RT-Thread Vision Board - Bare Metal Project with VSCode/PyOCD/Cortex-Debug
3
【学习分享】libc切换 -- 从newlib切换到mlibc
4
FRDM-MCXN947开发板之i2c应用
5
esp32 s3使用cherryusb cdc
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
编译报错
socket
keil_MDK
GD32
MicroPython
msh
Debug
ulog
SFUD
flashDB
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
用户名由3_15位
19
个答案
3
次被采纳
踩姑娘的小蘑菇
16
个答案
3
次被采纳
xiaorui
7
个答案
3
次被采纳
sakumisu
5
个答案
3
次被采纳
三世执戟
32
个答案
1
次被采纳
本月文章贡献
比特饼干
3
篇文章
9
次点赞
Z_Y
2
篇文章
5
次点赞
xusiwei1236
2
篇文章
3
次点赞
yinxiangxv
2
篇文章
3
次点赞
Alipay
2
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部