driver
命名空间提供用于读取/写入设备地址数据的类和函数。
Classes
Namespaces
Methods
(static) getData(address, length, callback)
读取设备标签的数据。
Examples
// Read two bits (for one bit, replace 2 with 1)
driver.getData(this.config.a_bit_addr, 2, (err, data) => {
if (err) {
console.log('Error:', err.message);
} else {
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);
}
});
// 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
driver.getData(this.config.an_u16_addr, 2, (err, data) => {
if (err) {
console.log('Error:', err.message);
} else {
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);
}
});
// 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();
driver.getData(this.config.an_u16_addr, 3, (err, data) => {
if (err) {
console.log('Error:', err.message);
} else {
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);
}
});
// 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 | 要读取的设备标签数量。 |
callback |
driver~ResponseCallback | 响应回调。 |
(static) setData(address, data, callbackopt)
向设备标签写入数据。
Examples
// Write two bits
var data = [false, true]; // [0, 1] also works here
driver.setData(this.config.a_bit_addr, data, (err) => {
if (err) {
console.log('Error:', err.message);
} else {
console.log('Write succeeded');
}
});
// Expected result:
// [11:55:36] Write succeeded
// Write two unsigned 16-bit integers
var data = [10, 11];
driver.setData(this.config.an_u16_addr, data, (err) => {
if (err) {
console.log('Error:', err.message);
} else {
console.log('Write succeeded');
}
});
// Expected result:
// [11:55:50] Write succeeded
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
address |
driver.Address | 要写入的第一个设备标签的地址。 |
|
data |
Number | Array.<Number> | ArrayBuffer | 要写入设备标签的数据。 |
|
callback |
driver~ResponseCallback |
<optional> |
响应回调。 |
(static) setStringData(address, length, data, callbackopt)
将字符串数据写入设备标签。
该函数将计算填充设备标签所需的数据长度(以字节为单位),
范围从 [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。
driver.setStringData(this.config.a_string_addr, 3, rand, (err) => {
if (err) {
console.log('错误:', err.message);
}
});
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
address |
driver.Address | 要写入的第一个设备标签的地址。 |
|
length |
Number | 要写入的设备标签数量。 |
|
data |
String | 要写入设备标签的数据。 |
|
callback |
driver~ResponseCallback |
<optional> |
响应回调函数。 |
Type Definitions
ResponseCallback(err, data)
响应回调函数将在以下情况下被调用:
- 读取数据操作完成。(例如
driver.getData(...)
) - 从被监视的设备标签读取的数据发生变化。(例如
driver.subscription.onResponse(...)
) - 读取数据操作失败。
传递给响应回调函数的参数:
情况 | err | data |
---|---|---|
数据发生变化 | undefined | 响应数据 |
读取操作失败 | Error | undefined |
Parameters:
Name | Type | Description |
---|---|---|
err |
Error | |
data |
driver~ResponseData |
ResponseData
Properties:
Name | Type | Description |
---|---|---|
timestamp |
Number | 自 UTC 时间 1970 年 1 月 1 日 00:00:00 以来经过的毫秒数。 |
buffer |
ArrayBuffer | 原始/二进制数据。 |
values |
Array.<Number> | 根据标签的数据类型从原始数据转换的数字数组。 |
响应数据是一个包含特定时刻某些设备标签数据信息的对象。
我们通常在以下情况下接收响应数据:
-
driver.getData(address, length, callback)
如果读取操作成功,则
callback
函数的第二个参数(通常命名为data
)将包含数据。 -
driver.promises.getData(address, length)
如果读取操作成功,则返回的 Promise 对象将解析为该数据。
-
driver.subscription.onResponse(callback)
如果 Subscription 对象监视的设备标签数据发生变化, 则
callback
函数的第二个参数(通常命名为data
)将包含数据。
Type:
- Object