完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在上周的文章中介绍了一款因作者想要学习Linux而动手DIY的终端设备V3S-PI, 《梦回2004!我用全志V3s做了个成本100元,功能媲美MP4的随身终端》:https://bbs.aw-ol.com/topic/4940/ 并详细解析了项目的硬件设计部分,本文将着重介绍项目的软件适配部分,并挑选其中几个普适性较强的外设功能来进行介绍。 V3S-PI是基于全志V3s设计的开发板,V3s芯片包含专用视频引擎以提供高级多媒体应用程序和服务,开发板设计之初就预留了屏幕、音频等接口,作者本人给这块开发板增加适配的外设以及功能有将近10个:获取天气、连耳机播放音乐、10M/100M以太网接口、连wifi、接入SD卡、调整屏幕亮度、按键控制、外接其他设备、1转4USB HUB...... 而在适配了屏幕,移植了LVGL以及各种外设驱动后,开发板摇身一变成为功能可以媲美MP4的随身终端。 libcurl获取天气信息方式为了丰富功能,作者还通过libcurl库实现了获取天气信息的功能,通过回调函数处理获取到的JSON数据,并使用lvgl库显示天气信息。 这里需要用到一个回调函数,用于解析获取到的JSON格式的天气信息。它首先使用cJSON库对获取到的数据进行解析,并找到对应的天气信息字段。 // 解析json数据 cJSON * json = cJSON_ParseWithLength(ptr, size * nmemb); if(!json) { goto end; } json = cJSON_GetObjectitem(json, "now"); if(!json) { goto end; } cJSON * temp = cJSON_GetObjectItem(json, "temp"); cJSON * humidity = cJSON_GetObjectItem(json, "humidity"); cJSON * text = cJSON_GetObjectItem(json, "text"); cJSON * pressure = cJSON_GetObjectItem(json, "pressure");然后使用其它函数进行线程锁定,以防止多线程冲突,接着利用LVGL库的相关函数将天气信息设置到对应的标签上。 pthread_mutex_lock(&mutex); if(cJSON_IsString(text)) { lv_label_set_text_fmt(label1, "当前天气n%s", text->valuestring); } if(cJSON_IsString(pressure)) { lv_label_set_text_fmt(label2, "气压n%s hPa", pressure->valuestring); } if(cJSON_IsString(temp)) { lv_label_set_text_fmt(label3, "室外温度n%s ℃", temp->valuestring); } if(cJSON_IsString(humidity)) { lv_label_set_text_fmt(label4, "湿度n%s %%", humidity->valuestring); } pthread_mutex_unlock(&mutex); cJSON_Delete(json);end: return size * nmemb;get_now_weather函数首先定义一个URL字符串,其中包含了获取天气信息所需的地址和参数。然后通过curl_easy_init创建一个CURL对象,并配置相应的选项,如设置URL、禁止进度信息、忽略SSL证书校验、设置回调函数等。接着使用curl_easy_perform执行请求,并检查返回的结果。最后使用curl_easy_cleanup清理CURL对象。 char * url = "https://devapi.qweather.com/v7/weather/now?location=" LOCATION "&key=xxx"; CURL * curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L); // curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, now_weather_cb); curl_easy_setopt(curl, CURLOPT_ENCODING, "gzip");需要根据实际情况修改URL字符串中的LOCATION和xxx,并根据天气API的要求进行必要的参数配置和授权等操作。 音频播放Buildroot中集成了alsa,默认声卡会静音状态,打开终端,输入alsamixer,首先解除静音。 在当前界面,选中Headphone,然后按下M键 解除静音,然后使用键盘↑,调整音量到合适大小即可,界面可参考: 调整完成后,输入mpv 文件名 --no-video,插入耳机,即可实现音乐播放: [root@buildroot ~]# mpv 2.flac --no-video Video --vid=1 [P] (mjpeg 500x500 1.000fps) (+) Audio --aid=1 (flac 2ch 48000Hz)File tags: Album: 西厢寻他 Title: 西厢寻他 Track: 1AO: [alsa] 48000Hz stereo 2ch s32A: 00:00:04 / 00:03:43 (2%)Exiting... (Quit)命令提示符显示当前目录,编辑/etc/profile文件,添加一行,然后export /etc/profile重新加载配置即可: export PS1='[u@h w]$ ' |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
467 浏览 0 评论
590 浏览 0 评论
715 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发
1381 浏览 0 评论
全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明
747 浏览 0 评论
全志V85x硬件设计大赛作品精选第二期,快来Pick你心目中的最佳方案
91931浏览 3评论
2837浏览 1评论
5109浏览 1评论
Yuzuki Lizard 全志V851S开发板 –移植 QT5.12.9教程
16393浏览 1评论
关于全志T113开发板接7寸LCD屏幕显示异常问题的解决方案
1127浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 13:15 , Processed in 0.459077 second(s), Total 41, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号