UART

UART,是 Universal Asynchronous Receiver/Transmitter(通用异步收发传输器)的缩写,是一种常见的硬件接口,用于处理器与外部设备间异步通信。

如果想更多的了解 UART,可以到这里

前提条件

使用 UART

请根据外设的数据手册,确定外设的接口类型为 UART。

配置driver.json

确定自己的硬件接口是 UAT 后,需要声明硬件接口类型为 UART。在 driver.json 文件里的 inputs,声明接口的类型为 UART。

{
...
"inputs": {
"uart": {
"type": "uart",
"args": {
"baudRate": 57600,
"stopBits": 1,
"dataBits": 8,
"parity": "none",
"flowControl": "none"
}
}
}
}

接口属性

UART 接口还可以配置如下属性:

  • baudRate 设置 UART 传输波特率
  • stopBits 设置停止位
  • dataBits 设置数据位
  • parity 设置奇偶校验:
    • none 取消奇偶校验
    • odd 奇校验
    • even 偶校验
  • flowControl 设置流控制:
    • none 取消流控制
    • hard 硬件流控制
    • soft 软件流控制

编写驱动

读功能

驱动程序可以从 UART 接口中读取数据,下面是一个例子:

var data=0;
...

function readContent(callback) {
uart.read(function (error, data) {
if (error) {
callback(error);
return;
}

callback(undefined, data);
});
}

写功能

驱动程序向 UART 接口中写入数据,下面是一个例子:

function writeContent(data, callback) {
uart.write(data, callback);
}

如果想了解更多细节,请参考其 API 文档

应用示例

下面演示如何为含有 UART 接口的模块编写驱动。在 driver.json 文件中声明一个类型为 UART 的接口,设定波特率为19200 Bd/s,1位停止位,8位数据位,取消奇偶校验和流控制。

"models": [
"waveshare-fingerprint"
],
"inputs": {
"uart": {
"type": "uart",
"args": {
"baudRate": 19200,
"stopBits": 1,
"dataBits": 8,
"parity": "none",
"flowControl": "none"
}
}
}

我们为 UART 模块提供两个接口,分别是写数据(writeText)和读数据(readText),具体实现如下:

  • writeText,向 UART 口写入数据
  • readText,从 UART 口读取数据
'use strict';

var driver = require('ruff-driver');

module.exports = driver({
attach: function (inputs) {
this._uart = inputs['uart'];
},
exports: {
writeText: function (data, callback) {
this._uart.write(data, callback);
},

readText: function (callback) {
this._uart.read(function (error, data) {
if (error) {
callback(error);
return;
}

callback(undefined, data.toString());
});
}
}
});