клиентский узел opcua: Ошибка получения: невозможно принудительно ввести значение = 4 в Enum - PullRequest
0 голосов
/ 31 октября 2018

Я использую клиент OPC-UA узла и получаю следующую ошибку

Error: cannot  coerce value=4 to Enum
at _decode_enumeration (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-factory/src/factories_enumerations.js:52:23)
at UserTokenPolicy.decode (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-service-endpoints/_generated_/_auto_generated_UserTokenPolicy.js:139:22)
at /Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-service-endpoints/_generated_/_auto_generated_EndpointDescription.js:181:12
at exports.decodeArray (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-basic-types/src/array.js:40:18)
at EndpointDescription.decode (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-service-endpoints/_generated_/_auto_generated_EndpointDescription.js:179:31)
at /Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-service-endpoints/_generated_/_auto_generated_GetEndpointsResponse.js:105:12
at exports.decodeArray (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-basic-types/src/array.js:40:18)
at GetEndpointsResponse.decode (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-service-endpoints/_generated_/_auto_generated_GetEndpointsResponse.js:103:22)
at MessageBuilder._safe_decode_message_body (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-secure-channel/src/message_builder.js:403:20)
at MessageBuilder._decode_message_body (/Users/xxx/apps/node-opcua-sample/node_modules/node-opcua-secure-channel/src/message_builder.js:450:18)

Я использую эту операционную систему UCA (https://github.com/node-opcua/node-opcua) для других серверов ocpUA, и они работают нормально.

Кажется, проблема с токеном UserTokenPolicy, но не должен ли он по умолчанию входить анонимно? Какие могут быть другие проблемы?

Обратите внимание, что он работает с клиентом prosys opcua.

1 Ответ

0 голосов
/ 31 октября 2018

Похоже, UserIdentityTokenType = 4 пока не поддерживается node-opcua ...

const EnumUserIdentityTokenType_Schema = {
  name: "EnumUserIdentityTokenType",
  enumValues: {
    ANONYMOUS: 0,
    USERNAME: 1,
    CERTIFICATE: 2,
    ISSUEDTOKEN: 3
  }
};

OPC Specification 1.04 определяет также только 4 возможных значения от 0 до 3

<opc:EnumeratedType Name="UserTokenType" LengthInBits="32">
   <opc:Documentation>The possible user token types. 
   </opc:Documentation>
  <opc:EnumeratedValue Name="Anonymous" Value="0" />
  <opc:EnumeratedValue Name="UserName" Value="1" />
  <opc:EnumeratedValue Name="Certificate" Value="2" />
  <opc:EnumeratedValue Name="IssuedToken" Value="3" />
</opc:EnumeratedType>

Пожалуйста, поднимите вопрос в https://github.com/node-opcua/node-opcua и предоставьте подробную инструкцию для воспроизведения поведения

...