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