promises

driver. promises

driver.promises API 提供了一组替代的异步驱动方法, 这些方法返回 Promise 对象,而不是使用回调函数。

Methods

(static) getData(address, length) → {Promise}

读取设备标签的数据。

Examples
// Read two bits (for one bit, replace 2 with 1)
try {
    var data = await driver.promises.getData(this.config.a_bit_addr, 2);
    console.log("timestamp:", data.timestamp);
    console.log("buffer.byteLength:", data.buffer.byteLength);
    console.log("buffer as Uint8Array:", new Uint8Array(data.buffer));
    console.log("values:", data.values);
} catch(err) {
    console.log('Error:', err.message);
}
// Expected result:
// [11:23:24] timestamp: 1653362604687 
// [11:23:24] buffer.byteLength: 2 
// [11:23:24] buffer as Uint8Array: { '0': 0, '1': 0 } 
// [11:23:24] values: [ 0, 0 ] 
// Read two unsigned 16-bit integers
try {
    driver.promises.getData(this.config.an_u16_addr, 2);
    console.log("timestamp:", data.timestamp);
    console.log("buffer.byteLength:", data.buffer.byteLength);
    console.log("buffer as Uint16Array:", new Uint16Array(data.buffer));
    console.log("values:", data.values);
} catch (err) {
    console.log('Error:', err.message);
}
// Expected result:
// [11:30:26] timestamp: 1653363026921 
// [11:30:26] buffer.byteLength: 4 
// [11:30:26] buffer as Uint16Array: { '0': 121, '1': 232 } 
// [11:30:26] values: [ 121, 232 ] 
// Read an UTF-8 string
var utf8decoder = new TextDecoder();
try {
    driver.promises.getData(this.config.an_u16_addr, 3);
    console.log("timestamp:", data.timestamp);
    console.log("buffer.byteLength:", data.buffer.byteLength);
    var bufferAsUint8Array = new Uint8Array(data.buffer);
    console.log("string:", utf8decoder.decode(bufferAsUint8Array));
    console.log("values:", data.values);
} catch (err) {
    console.log('Error:', err.message);
}
// Expected result:
// [13:47:12] timestamp: 1653371232533 
// [13:47:12] buffer.byteLength: 6 
// [13:47:12] string: 7747 
// [13:47:12] values: [ 14135, 14132, 0 ] 
Parameters:
Name Type Description
address driver.Address

要读取的第一个设备标签的地址。

length Number

要读取的设备标签数量。

Returns:

一个 Promise 对象。如果读取成功,该 Promise 解析为响应数据。

Type
Promise

(static) setData(address, data) → {Promise}

向设备标签写入数据。

Examples
// Write two bits
var data = [false, true]; // [0, 1] also works here
try {
    await driver.promises.setData(this.config.a_bit_addr, data);
    console.log('Write succeeded');
} catch(err) {
    console.log('Error:', err.message);
}
// Expected result:
// [11:55:36] Write succeeded 
// Write two unsigned 16-bit integers
var data = [10, 11];
try {
    await driver.promises.setData(this.config.an_u16_addr, data);
    console.log('Write succeeded');
} catch(err) {
    console.log('Error:', err.message);
}
// Expected result:
// [11:55:50] Write succeeded 
Parameters:
Name Type Description
address driver.Address

要写入的第一个设备标签的地址。

data Number | Array.<Number> | ArrayBuffer

要写入设备标签的数据。

Returns:

一个 Promise 对象。如果写入成功,该 Promise 解析为 undefined

Type
Promise

(static) setStringData(address, length, data) → {Promise}

将字符串数据写入设备标签。

此函数将计算填充设备标签所需的数据长度(以字节为单位), 范围从[address]到[address + length - 1]。如果data参数的数据长度(以字节为单位):

  • 小于所需数据长度 ⇨ 追加零填充。
  • 大于所需数据长度 ⇨ 截断超出部分的数据。
Example
// 以字符串形式写入一个 0-99999 之间的随机数
var rand = Math.round(Math.random() * 100000).toString(); // "0" 到 "99999"
// rand 的最大长度为 5 字节,占用三个 16 位字。
// 假设 a_string_addr 是一个无符号 16 位整数地址,
// 那么 length 在此应设为 3。
try {
    driver.promises.setStringData(this.config.a_string_addr, 3, rand);
} catch (err) {
    console.log('错误:', err.message);
}
Parameters:
Name Type Description
address driver.Address

要写入的第一个设备标签的地址。

length Number

要写入的设备标签数量。

data String

要写入设备标签的数据。

Returns:

一个 Promise 对象。写入成功后,Promise 解析为 undefined。

Type
Promise