UAVariableType.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { XMLElem } from "@/util/XmlElem";
  2. import type { NamespaceTable } from "./NameSpaceTable";
  3. import { type UABaseNodeOptions } from "./UABaseNode";
  4. import type { IAddressSpace } from "./IAddressSpace";
  5. import { UAType } from "./UAType";
  6. export class UAVariableType extends UAType{
  7. public dataType?: string;
  8. public valueRank?: number;
  9. public arrayDimensions?: string;
  10. constructor(options: UAVariableTypeOptions) {
  11. super(options)
  12. Object.assign(this, options);
  13. this.nodeClass="UAVariableType";
  14. }
  15. static fromXML(xmlObjType: any, addressSpace: IAddressSpace): UAVariableType{
  16. const bn=super.fromXML(xmlObjType, addressSpace) as UAVariableTypeOptions
  17. bn.dataType= xmlObjType['@_DataType']||"i=24";
  18. bn.valueRank= Number(xmlObjType['@_ValueRanke']||-1);
  19. bn.arrayDimensions= xmlObjType['@_ArrayDimensions'];
  20. return new UAVariableType(bn as UAVariableTypeOptions);
  21. }
  22. toXML(lnst:NamespaceTable, gnst:NamespaceTable): XMLElem {
  23. const elem =super.toXML(lnst, gnst);
  24. elem.name=this.nodeClass;
  25. elem.attr('DataType', this.dataType);
  26. elem.attr('ValueRank', this.valueRank?.toString());
  27. elem.attr('ArrayDimensions', this.arrayDimensions);
  28. return elem;
  29. }
  30. }
  31. export interface UAVariableTypeOptions extends UABaseNodeOptions{
  32. dataType?: string;
  33. valueRank?: number;
  34. arrayDimensions?: string;
  35. }