梅科尔工作室—罗森—鸿蒙笔记4

本文介绍了在OHOS系统中进行路由管理的方法,包括页面跳转的三种方式,如push和replace,以及页面返回功能。同时,详细讲解了数据请求模块,如何创建HTTP请求,设置请求参数,并处理响应。此外,还提到了弹窗模块的使用,如显示Toast提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.路由跳转模块

import router from '@ohos.router';

首先需要导入包

页面跳转

1.方式一

router.push({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
})

创建新页面,页面栈数量会加1

2.方式二

router.push({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
}, router.RouterMode.Single)

可以将mode参数配置为router.RouterMode.Single单实例模式和router.RouterMode.Standard标准模式。

在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近的同url页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存在栈中,页面栈数量不变;如果目标页面的url在页面栈中不存在同url页面,按标准模式跳转,页面栈数量会加1。

3.方式三

router.replace({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
})

替换后无法返回

页面返回

router.back({ url: 'pages/index' })回到指定一个页面

router.back()回到上一个页面

二.数据请求模块

import http from'@ohos.net.http';

import http from '@ohos.net.http';

// 每一个httpRequest对应一个http请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅http响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});
httpRequest.request(
    // 填写http请求的url地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
    "EXAMPLE_URL",
    {
        method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
        // 开发者根据自身业务需要添加header字段
        header: {
            'Content-Type': 'application/json'
        },
        // 当使用POST请求时此字段用于传递内容
        extraData: {
            "data": "data to send",
        },
        connectTimeout: 60000, // 可选,默认为60s
        readTimeout: 60000, // 可选,默认为60s
    }, (err, data) => {
        if (!err) {
            // data.result为http响应内容,可根据业务需要进行解析
            console.info('Result:' + data.result);
            console.info('code:' + data.responseCode);
            // data.header为http响应头,可根据业务需要进行解析
            console.info('header:' + JSON.stringify(data.header));
            console.info('cookies:' + data.cookies); // 8+
        } else {
            console.info('error:' + JSON.stringify(err));
            // 当该请求使用完毕时,调用destroy方法主动销毁。
            httpRequest.destroy();
        }
    }
);

需要权限ohos.permission.INTERNET

加入

"reqPermissions": [

{

"name": "ohos.permission.INTERNET"

}

]

三.弹窗模块

prompt.showToast({
          message:"获取失败",//弹窗信息
          duration:2000,//停留时间
        });

四.绑定事件

1.

2.

3.

4.

好的,STM32F103C8T6 使用标准库读取 VL53L0X 测距传感器的数据涉及多个步骤。VL53L0X 是一款基于飞行时间 (ToF) 技术的距离测量传感器,能够精确地测量物体距离。 ### 硬件连接 首先需要将 VL53L0X 和 STM32 进行硬件连接: | **VL53L0X 引脚** | **STM32 引脚** |-------------------|------------------- | VCC | 3.3V 或者通过稳压电路提供的电压 | GND | GND | SCL | I²C_SCL | SDA | I²C_SDA 确保您的接线图准确无误,并且电源稳定可靠。 ### 软件配置 接下来,在软件上我们需要做以下几件事: #### 1. 初始化I2C外设 使用 STM32 标准库初始化 I2C 接口,通常会创建一个包含特定设置的结构体并调用 `I2C_Init` 函数完成初始化过程。 ```c #include "stm32f1xx_hal.h" // 定义全局变量用于保存I2C句柄. static I2C_HandleTypeDef hi2c1; void MX_I2C1_Init(void) { __HAL_RCC_I2C1_CLK_ENABLE(); // 配置I2C参数. hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 400000; // 设置传输速度为400kHz hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0xFF; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; HAL_I2C_Init(&hi2c1); } ``` #### 2. 加载 VL53L0X 库文件 从 STMicroelectronics 的官网上下载适用于 STM32 平台的 VL53L0X 固件包,解压缩并将必要的头文件和源代码添加到项目中。 #### 3. 编写主程序逻辑 编写应用程序的主要部分,包括初始化 VL53L0X 模块、启动测距操作以及获取结果等。 ```c #include <vl53l0x_api.h> VL53L0X_Error Status; uint8_t status_int = GPIO_PIN_SET; int distance_mm = -1; void setup() { // 初始化系统时钟和其他外围设备... // 初始化I2C通信接口. MX_I2C1_Init(); // 初始化VL53L0X模块. if ((Status = vl53l0x_init()) == 0) { printf("VL53L0X Initialization Success\n"); // 开始连续测距模式. if((Status = vl53l0x_start_continuous(5)) == 0){ printf("Continuous Ranging Start Successful.\n"); } else { printf("Failed to start continuous ranging!\n"); } }else{ printf("VL53L0X Initialization Failed.\n"); } } while (true) { // 获取最新的测量值. distance_mm = vl53l0x_get_distance(); if(distance_mm > 0 && distance_mm <= MAX_DISTANCE_MM){ printf("Distance is %d mm \r\n",distance_mm); } delay_ms(1000); // 延迟一秒再下一次检测 } // 具体实现细节参考官方文档及API手册. ``` 注意:上述代码片段仅为示例用途,实际应用还需要结合具体的环境条件做出调整优化;另外还需查阅相关资料了解如何处理异常情况下的错误恢复机制等问题。 --- ### 相关问题:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rosen6664

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值