首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OPC-UA中创建可选选项?

如何在OPC-UA中创建可选选项?
EN

Stack Overflow用户
提问于 2020-11-04 22:53:00
回答 2查看 52关注 0票数 0

假设有一个名为Fruit的读/写变量。可选择的选项有苹果、梨、草莓和凤梨。

使用OptionSetType似乎是最合适的方式。但是我没有找到任何node-opcua的例子

有没有人能举个例子,或者有没有其他/更好/更聪明的方法?

EN

回答 2

Stack Overflow用户

发布于 2020-11-04 23:41:59

枚举成为我最好的朋友

代码语言:javascript
复制
  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;
      },
    },
  });
票数 0
EN

Stack Overflow用户

发布于 2021-01-23 16:57:45

node-opcua中的UAVariable类附带了两个辅助方法,这两个方法使得处理枚举变得很容易。readEnumValuewriteEnumValue

你会发现这个表单更实用:

代码语言:javascript
复制
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());
代码语言:javascript
复制
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形式,因为值已经存储在变量中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64682377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档