HarmonyOS鸿蒙Next中官方的uart接口该如何使用

HarmonyOS鸿蒙Next中官方的uart接口该如何使用

#include "hdf_log.h"
#include "uart_if.h"

void UartTestSample(void){
    int32_t ret;
    uint32_t port;
    uint32_t baud;
    DevHandle handle = NULL;
    uint8_t wbuff[5] = { 1, 2, 3, 4, 5 };
    uint8_t rbuff[5] = { 0 };
    struct UartAttribute attribute;
    attribute.dataBits = UART_ATTR_DATABIT_7;                  // UART传输数据位宽,一次传输7个bit
    attribute.parity = UART_ATTR_PARITY_NONE;                  // UART传输数据无校检
    attribute.stopBits = UART_ATTR_STOPBIT_1;                  // UART传输数据停止位为1位
    attribute.rts = UART_ATTR_RTS_DIS;                         // UART禁用RTS
    attribute.cts = UART_ATTR_CTS_DIS;                         // UART禁用CTS
    attribute.fifoRxEn = UART_ATTR_RX_FIFO_EN;                 // UART使能RX FIFO
    attribute.fifoTxEn = UART_ATTR_TX_FIFO_EN;                 // UART使能TX FIFO
    port = 1;                                                  // UART设备端口号,要填写实际平台上的端口号
    handle = UartOpen(port);                                   // 获取UART设备句柄
    if (handle == NULL) {
        HDF_LOGE("UartOpen: open uart_%u failed!\n", port);
        return;
    }
    ret = UartSetBaud(handle, 9600);                           // 设置UART波特率为9600
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("UartSetBaud: set baud failed, ret %d\n", ret);
        goto ERR;
    }
    ret = UartGetBaud(handle, &baud);                          // 获取UART波特率
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("UartGetBaud: get baud failed, ret %d\n", ret);
        goto ERR;
    }
    ret = UartSetAttribute(handle, &attribute);                // 设置UART设备属性
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("UartSetAttribute: set attribute failed, ret %d\n", ret);
        goto ERR;
    }
    ret = UartGetAttribute(handle, &attribute);                // 获取UART设备属性
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("UartGetAttribute: get attribute failed, ret %d\n", ret);
        goto ERR;
    }
    ret = UartSetTransMode(handle, UART_MODE_RD_NONBLOCK);     // 设置UART传输模式为非阻塞模式
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("UartSetTransMode: set trans mode failed, ret %d\n", ret);
        goto ERR;
    }
    ret = UartWrite(handle, wbuff, 5);                         // 向UART设备写入5字节的数据
    if (ret != HDF_SUCCESS) {
        HDF_LOGE("UartWrite: write data failed, ret %d\n", ret);
        goto ERR;
    }
    ret = UartRead(handle, rbuff, 5);                          // 从UART设备读取5字节的数据
    if (ret < 0) {
        HDF_LOGE("UartRead: read data failed, ret %d\n", ret);
        goto ERR;
    }
ERR:
    UartClose(handle);                                         // 销毁UART设备句柄
    return ret;
}

更多关于HarmonyOS鸿蒙Next中官方的uart接口该如何使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,使用官方的UART接口需要遵循以下步骤:

  1. 引入头文件:首先,在代码中引入UART相关的头文件,通常为uart.h

  2. 初始化UART:使用UartInit函数初始化UART接口。该函数需要指定UART的端口号、波特率、数据位、停止位和校验位等参数。

  3. 配置UART:通过UartSetConfig函数配置UART的具体参数,如波特率、数据位、停止位和校验位等。

  4. 发送数据:使用UartWrite函数向UART发送数据。该函数需要指定UART端口号和要发送的数据缓冲区。

  5. 接收数据:使用UartRead函数从UART接收数据。该函数需要指定UART端口号和接收数据的缓冲区。

  6. 关闭UART:使用UartClose函数关闭UART接口,释放相关资源。

以下是一个简单的代码示例:

#include "uart.h"

void uart_example() {
    int uartPort = 0; // UART端口号
    int baudRate = 115200; // 波特率
    int dataBits = 8; // 数据位
    int stopBits = 1; // 停止位
    int parity = 0; // 校验位

    // 初始化UART
    UartInit(uartPort, baudRate, dataBits, stopBits, parity);

    // 配置UART
    UartSetConfig(uartPort, baudRate, dataBits, stopBits, parity);

    // 发送数据
    char sendData[] = "Hello, UART!";
    UartWrite(uartPort, sendData, sizeof(sendData));

    // 接收数据
    char receiveData[100];
    UartRead(uartPort, receiveData, sizeof(receiveData));

    // 关闭UART
    UartClose(uartPort);
}

更多关于HarmonyOS鸿蒙Next中官方的uart接口该如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用UART接口需要先引入@ohos.hardware.uart模块。通过uart.open方法打开指定设备,配置波特率、数据位、停止位等参数。使用uart.write发送数据,uart.read接收数据。最后,使用uart.close关闭设备。示例代码如下:

import uart from '@ohos.hardware.uart';

let uartPort = uart.open('/dev/ttyS0', { baudRate: 9600, dataBits: 8, stopBits: 1 });
uartPort.write(new Uint8Array([0x01, 0x02]));
let data = uartPort.read(2);
uartPort.close();

确保设备权限和路径正确。

回到顶部