Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
网络学习营
【LwIP学习营】【第二周】 telnet+获取天气预报
发布于 2018-05-27 22:25:27 浏览:1826
订阅该版
* 本帖最后由 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.8k
关于作者
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
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
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
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部