【PocketBeagle2】②利用USB虚拟网卡,让板子尽情冲浪
https://forum.eepw.com.cn/thread/394015/1
在第2篇分享贴子中,我们尝试共享PC网络,让开发板的USB虚拟网卡共享上网。
本片就顺着这个路子,让板子联网功能尽情发挥。
1.·查时间
直接在串口中输入Shell指令
curl https://api.xiaole.work/api/time/time.php?type=json
什么是 curl 命令
curl(Client URL)是一个强大的命令行工具,用于在 Linux/Unix 系统中传输数据。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等,是开发者和系统管理员日常工作中不可或缺的工具。
curl 的主要特点
多协议支持:支持几乎所有主流网络协议
无界面操作:纯命令行工具,适合脚本和自动化任务
功能丰富:支持文件上传下载、表单提交、Cookie 处理等
跨平台:在 Linux、macOS、Windows 上均可使用
运行结果:
可以看到获取的时间跟PC机上的时间一致:
2.·查天气
直接在串口中输入Shell指令
curl http://t.weather.sojson.com/api/weather/city/101280601
运行结果:
深圳天气(CityID:101280601),
可以显示今天天气:湿度、PM2.5、PM10、空气质量、温度,基本都是准的。
可以预报未来2周天气(9/2~9/16)
3. 查新闻
前面查时间、查天气,都有免费API可用。
查新闻这部分稍微复杂点,涉及到平台,而且如果直接使用curl指令,获取的信息就非常杂乱。
新闻是利用了聚合数据平台:
各位可自行注册,使用免费资源:
新闻头条,每天免费查询50次。
curl参数如下:
笔者使用免费注册的Key,用以下指令
curl v.juhe.cn/toutiao/index?key=5f78766a1e82f665528a474b411a59dc&type=top&page=20&page_size=&is_filter=
得到结果如下:
可见非常杂乱。
那就需要介绍今天的重点了:python、requests、json
python就不多说,本开发板的固件集成了Python 3.11.2,也就是电脑上python能干的事他都能干。
Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。
JSON(JavaScript Object Notation,JavaScript对象表示法)是基于ECMAScript的一个子集设计的,是一种开放标准的文件格式和数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON独立于语言设计,很多编程语言都支持JSON格式的数据交换。JSON是一种常用的数据格式,在电子数据交换中有多种用途,包括与服务器之间的Web应用程序的数据交换。其简洁和清晰的层次结构有效地提升了网络传输效率,使其成为理想的数据交换语言。
经测试,python和json 系统中已经自带了,无需安装直接使用,requests需要联网安装。
安装命令如下图:
sudo apt install python3-requests
然后编写python程序进行新闻标题解析:
#!/usr/bin/python import json import requests # 基本参数配置 apiUrl = 'http://v.juhe.cn/toutiao/index' apiKey = '5f78766a1e82f665528a474b411a59dc' # 接口请求入参配置 requestParams = { 'key': apiKey, 'type': 'top', 'page': '20', 'page_size': '', 'is_filter': '', } # 发起接口网络请求 response = requests.get(apiUrl, params=requestParams) # 解析响应结果 if response.status_code == 200: responseResult = response.json() # 网络请求成功。可依据业务逻辑和接口文档说明自行处理。 i=0 while(i<30): print(responseResult['result']['data'][i]['title']) #这步是json解析的关键 i=i+1 else: # 网络异常等因素,解析结果异常。可依据业务逻辑自行处理。 print('请求异常')
print(responseResult['result']['data'][i]['title']) #这步是json解析的关键
我们可以借助JSON在线格式化工具,帮忙梳理其中的层级。
可以看到要获取某一新闻标题,需进入4个层级:
['result'] ['data'] [i] ['title']
将该文件命名为X.py,直接copy至 此电脑\BeagleBoard.org\Boot Partition\ 下面的某个目录
比如我自己建了个文件夹python专门用于存放自己写的程序:
通过串口进到 /boot/firmware/python目录就可以看到放进去的python程序
运行以下指令,就可以获取新闻标题了。
python p2.py