假设有一个名为Fruit的读/写变量。可选择的选项有苹果、梨、草莓和凤梨。
使用OptionSetType似乎是最合适的方式。但是我没有找到任何node-opcua的例子
有没有人能举个例子,或者有没有其他/更好/更聪明的方法?
发布于 2020-11-04 23:41:59
枚举成为我最好的朋友
const fruitEnumType = ownNameSpace.addEnumerationType({
browseName: "Fruits",
enumeration: ["apple", "pear", "strawberry", "pineapple"],
});
let selected = "apple";
ownNameSpace.addVariable({
browseName: "Fruit",
componentOf: folder,
dataType: fruitEnumType,
value: {
get: () =>
new Variant({
dataType: DataType.String,
value: selected,
}),
set: (value: Variant) => {
selected = value.value;
return StatusCodes.Good;
},
},
});发布于 2021-01-23 16:57:45
node-opcua中的UAVariable类附带了两个辅助方法,这两个方法使得处理枚举变得很容易。readEnumValue和writeEnumValue。
你会发现这个表单更实用:
const fruit2 = ownNameSpace.addVariable({
browseName: "Fruit2s",
componentOf: myObject,
dataType: fruitEnumType
});
fruit2.writeEnumValue("strawberry");
console.log("enum value = ", fruit2.readEnumValue());
console.log("enum value name = ", fruit2.readEnumValue().name);
console.log("enum value value = ", fruit2.readEnumValue().value);
console.log("dataValue is ", fruit2.readValue().toString());enum value = { value: 2, name: 'strawberry' }
enum value name = strawberry
enum value value = 2
dataValue is { /* DataValue */
value: Variant(Scalar<Int32>, value: 2)
statusCode: Good (0x00000)
serverTimestamp: 2021-01-23T08:59:04.273Z $ 990.400.000
sourceTimestamp: 2021-01-23T08:59:04.273Z $ 990.400.000
}注意:您不需要使用get/set形式,因为值已经存储在变量中。
https://stackoverflow.com/questions/64682377
复制相似问题