【行空板K10】获得当前所在城市及JSON库的移植:

目录

引言

通过IP地址获得所在城市

JSON库的移植

JSON库的导入

​编辑Mind+程序编写

测试结果


本文首发于:【行空板K10】获得当前所在城市及JSON库的移植 DF创客社区引言以前没有接触过Mind+编程,这次因为参加"义教信息科技教学活动实践案例征集"活动,上手了行空板K10。分享自己的一个测试项目。项目的目标是上网后,通过ip-api.com的在线服务获得当前IP所在城市。通过IP地址获得所在城市有很多这样的服务,我使用的是ip-api.com。在Windows上使用...https://mc.dfrobot.com.cn/thread-323610-1-1.html

引言

以前没有接触过Mind+编程,这次因为参加"义教信息科技教学活动实践案例征集"活动,上手了行空板K10。分享自己的一个测试项目。项目的目标是上网后,通过ip-api.com的在线服务获得当前IP所在城市。

通过IP地址获得所在城市

有很多这样的服务,我使用的是ip-api.com。在Windows上使用下面的命令就可以获得相关信息:

bash 复制代码
curl http://ip-api.com/json/?lang=zh-CN

返回的结果如下:

可以看出,结果是一个JSON字符串,其中的city字段就是我想要的结果。

JSON库的移植

我本来想用云天的Mind+扩展库,不过这个库在我的Mind+中报错,所以做了一些修改。在config.json中添加了version字段,否则会报错。同时在board字段添加了esp32s3bit。修改后的文件:

bash 复制代码
{
  "name": {
    "zh-cn": "json解析",
    "en": "json"
  },
  "description": {
    "zh-cn": "json是一种轻量级的数据交换格式",
    "en": "json"
  },
  "author": "yuntian",
  "email": "68215552@qq.com",
  "license": "MIT",
  "isBoard": false,
  "id": "json",
  "platform": [
    "win"
  ],
  "version":"0.0.2",
  "asset": {
    "ArduinoC": {
      "dir": "arduinoC/",
      "version": "0.0.1",
      "board": [
        "arduino",
        "esp32",
        "esp32s3bit"
      ],
      "main": "main.ts"
    }
  }
}

main.ts文件中只修改了getjson函数,另外一个没有用到。

TypeScript 复制代码
    //% block="get the json[STR] params[params]" blockType="reporter"
    //% STR.shadow="string" STR.defl="MQTT消息"
    export function getjson(parameter: any, block: any) {
        let str = parameter.STR.code
        let params_val = parameter.params.code
        // Generator.addInclude('json', '#include "ArduinoJson.h"');
        Generator.addObject(`jsonBuffer`, `DynamicJsonBuffer`, `jsonBuffer;`);
        Generator.addCode(`jsonBuffer.parseObject(${str})[${params_val}].asString()`);
    }

这里面注释掉了ArduinoJson.h,这个文件会导致无法生成代码。不过去掉了这个头文件之后,JSON组件必须和WiFi组件一起用,因为WiFi组件会包括这个头文件。好在这个问题不大。

另外一句修改是:Generator.addCode(`jsonBuffer.parseObject({str})\[{params_val}].asString()`);。不加asString会编译错误。删掉掉了阿里云的[params]字段,我用不到。

修改后的JSON库:https://gitee.com/zealsoft/json

JSON库的导入

点击"扩展"按钮,在其中选择用户库,导入用户库,选择json组件所在目录。如果不需要修改,直接选择mepxt文件。如果需要修改,就删除掉mepxt文件,选择config.json文件即可。然后就可以看到json组件了。

Mind+程序编写

Mind+程序如下:逻辑比较简单,就是调用http组件获得网站的响应,然后调用JSON组件提取city字段。

测试结果

程序烧写成功后,运行结果如图所示。

相关推荐
深圳市青牛科技实业有限公司35 分钟前
在电力系统、电子设备制造等领域,变压器测试感量,电桥内阻如何选择
嵌入式硬件·音视频·制造·立体声收录机·盒式录音机·电子烟
充哥单片机设计3 小时前
【STM32项目开源】基于STM32的智能厨房环境监控系统
stm32·单片机·嵌入式硬件
爱倒腾的老唐3 小时前
03、51 单片机介绍
单片机·嵌入式硬件
国科安芯4 小时前
抗辐照MCU芯片在低轨商业卫星原子钟中的适配与优化
单片机·嵌入式硬件·fpga开发·架构·risc-v
赋能大师兄11 小时前
单片机3.3V和5V电压等级
单片机·3.3v·5v
BreezeJuvenile11 小时前
外设模块学习(6)——DHT11温湿度传感器(STM32)
stm32·单片机·dht11·温湿度传感器
桃里桑11 小时前
【嵌入式软件】STM32 UART转485通信问题
stm32·单片机·嵌入式硬件
萧技电创EIIA13 小时前
基于wifi摄像头与单片机的串口透传及二次开发
单片机·51单片机·硬件工程·个人开发
三佛科技-1341638421213 小时前
迷你加湿器方案开发,加湿器/香薰机MCU控制方案开发设计
单片机·嵌入式硬件·智能家居·pcb工艺
hazy1k13 小时前
51单片机基础-矩阵按键
嵌入式硬件·矩阵·51单片机