【行空板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": "[email protected]",
  "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字段。

测试结果

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

相关推荐
矿渣渣38 分钟前
ZYNQ处理器在发热后功耗增加的原因分析及解决方案
嵌入式硬件·fpga开发·zynq
小智学长 | 嵌入式2 小时前
单片机-STM32部分:13-1、蜂鸣器
stm32·单片机·嵌入式硬件
UpUpUp……2 小时前
Linux--JsonCpp
linux·运维·服务器·c++·笔记·json
#金毛2 小时前
六、STM32 HAL库回调机制详解:从设计原理到实战应用
stm32·单片机·嵌入式硬件
欢乐熊嵌入式编程4 小时前
智能手表固件升级 OTA 策略文档初稿
嵌入式硬件·学习·智能手表
欢乐熊嵌入式编程4 小时前
智能手表 MCU 任务调度图
单片机·嵌入式硬件·智能手表
【云轩】4 小时前
电机密集型工厂环境下的无线通信技术选型与优化策略
经验分享·嵌入式硬件
sword devil9005 小时前
将arduino开发的Marlin部署到stm32(3D打印机驱动)
stm32·单片机·嵌入式硬件
GodKK老神灭5 小时前
STM32 变量存储
stm32·单片机·嵌入式硬件
木宁kk5 小时前
51单片机引脚功能概述
单片机·嵌入式硬件