driver

driver

driver 命名空间提供用于读取/写入设备地址数据的类和函数。

Classes

Address
Subscription

Namespaces

promises

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)

响应回调函数将在以下情况下被调用:

  1. 读取数据操作完成。(例如 driver.getData(...)
  2. 从被监视的设备标签读取的数据发生变化。(例如 driver.subscription.onResponse(...)
  3. 读取数据操作失败。

传递给响应回调函数的参数:

情况 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>

根据标签的数据类型从原始数据转换的数字数组。

响应数据是一个包含特定时刻某些设备标签数据信息的对象。

我们通常在以下情况下接收响应数据:

  1. driver.getData(address, length, callback)

    如果读取操作成功,则 callback 函数的第二个参数(通常命名为 data)将包含数据。

  2. driver.promises.getData(address, length)

    如果读取操作成功,则返回的 Promise 对象将解析为该数据。

  3. driver.subscription.onResponse(callback)

    如果 Subscription 对象监视的设备标签数据发生变化, 则 callback 函数的第二个参数(通常命名为 data)将包含数据。

Type:
  • Object