] by
chw
2022-11-12 05:48:14.
0000: 44 20 32 30 32 32 2d 31 31 2d 31 32 54 30 35 3a D 2022-11-12T05:
0010: 34 38 3a 31 34 2e 34 35 33 0a 4c 20 74 6f 70 63 48:14.453.L topc
0020: 75 61 0a 50 20 63 32 32 65 65 36 35 36 33 65 63 ua.P c22ee6563ec
0030: 33 64 38 61 31 31 36 34 39 62 64 62 64 66 35 65 3d8a11649bdbdf5e
0040: 35 66 63 66 32 35 64 35 63 61 32 34 65 0a 55 20 5fcf25d5ca24e.U
0050: 63 68 77 0a 57 20 36 32 38 35 33 0a 3c 68 32 3e chw.W 62853.<h2>
0060: 6f 70 63 75 61 20 63 6f 6d 6d 61 6e 64 3c 2f 68 opcua command</h
0070: 32 3e 0d 0a 0d 0a 3c 68 33 3e 4e 61 6d 65 3c 2f 2>....<h3>Name</
0080: 68 33 3e 0d 0a 0d 0a 3c 62 3e 6f 70 63 75 61 3c h3>....<b>opcua<
0090: 2f 62 3e 20 2d 20 54 63 6c 20 62 69 6e 64 69 6e /b> - Tcl bindin
00a0: 67 20 74 6f 20 74 68 65 20 4f 50 43 2f 55 41 20 g to the OPC/UA
00b0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f implementation o
00c0: 66 20 3c 62 3e 68 74 74 70 3a 2f 2f 77 77 77 2e f <b>http://www.
00d0: 6f 70 65 6e 36 32 35 34 31 2e 6f 72 67 3c 2f 62 open62541.org</b
00e0: 3e 0d 0a 0d 0a 3c 68 33 3e 53 79 6e 6f 70 73 69 >....<h3>Synopsi
00f0: 73 3c 2f 68 33 3e 0d 0a 0d 0a 3c 74 74 3e 70 61 s</h3>....<tt>pa
0100: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6f ckage require to
0110: 70 63 75 61 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 3c pcua</tt><br>..<
0120: 74 74 3e 6f 70 63 75 61 20 3c 69 3e 63 6d 64 3c tt>opcua <i>cmd<
0130: 2f 69 3e 20 3f 3c 69 3e 61 72 67 3c 2f 69 3e 3f /i> ?<i>arg</i>?
0140: 3c 2f 74 74 3e 3c 62 72 3e 0d 0a 0d 0a 3c 68 33 </tt><br>....<h3
0150: 3e 44 65 73 63 72 69 70 74 69 6f 6e 3c 2f 68 33 >Description</h3
0160: 3e 0d 0a 0d 0a 54 68 69 73 20 63 6f 6d 6d 61 6e >....This comman
0170: 64 20 70 72 6f 76 69 64 65 73 20 73 65 76 65 72 d provides sever
0180: 61 6c 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 6f al operations to
0190: 20 6d 61 6e 61 67 65 20 61 6e 64 20 63 6f 6d 6d manage and comm
01a0: 75 6e 69 63 61 74 65 20 75 73 69 6e 67 20 74 68 unicate using th
01b0: 65 20 4f 50 43 2f 55 41 20 69 6d 70 6c 65 6d 65 e OPC/UA impleme
01c0: 6e 74 61 74 69 6f 6e 20 6f 66 20 3c 62 3e 68 74 ntation of <b>ht
01d0: 74 70 3a 2f 2f 77 77 77 2e 6f 70 65 6e 36 32 35 tp://www.open625
01e0: 34 31 2e 6f 72 67 3c 2f 62 3e 2e 20 49 74 20 69 41.org</b>. It i
01f0: 73 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 63 s available on c
0200: 6f 6d 6d 6f 6e 20 50 4f 53 49 58 20 61 6e 64 20 ommon POSIX and
0210: 57 69 6e 64 6f 77 73 20 70 6c 61 74 66 6f 72 6d Windows platform
0220: 73 2e 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 s. <tt><i>cmd</i
0230: 3e 3c 2f 74 74 3e 20 69 6e 64 69 63 61 74 65 73 ></tt> indicates
0240: 20 77 68 69 63 68 20 6f 70 65 72 61 74 69 6f 6e which operation
0250: 20 20 74 6f 20 63 61 72 72 79 20 6f 75 74 2e 20 to carry out.
0260: 41 6e 79 20 75 6e 69 71 75 65 20 61 62 62 72 65 Any unique abbre
0270: 76 69 61 74 69 6f 6e 20 66 6f 72 20 3c 74 74 3e viation for <tt>
0280: 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 <i>cmd</i></tt>
0290: 69 73 20 61 63 63 65 70 74 61 62 6c 65 2e 20 54 is acceptable. T
02a0: 68 65 20 76 61 6c 69 64 20 63 6f 6d 6d 61 6e 64 he valid command
02b0: 73 20 61 72 65 3a 0d 0a 0d 0a 3c 74 74 3e 6f 70 s are:....<tt>op
02c0: 63 75 61 20 61 63 6c 20 3c 69 3e 68 61 6e 64 6c cua acl <i>handl
02d0: 65 20 3f 75 73 65 72 20 70 61 73 73 20 2e 2e 2e e ?user pass ...
02e0: 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 ?</i></tt>....
02f0: 20 20 4d 6f 64 69 66 69 65 73 20 74 68 65 20 75 Modifies the u
0300: 73 65 72 2f 70 61 73 73 77 6f 72 64 20 62 61 73 ser/password bas
0310: 65 64 20 61 63 63 65 73 73 20 63 6f 6e 74 72 6f ed access contro
0320: 6c 20 6c 69 73 74 20 6f 66 20 74 68 65 20 73 65 l list of the se
0330: 72 76 65 72 20 6f 62 6a 65 63 74 20 20 3c 74 74 rver object <tt
0340: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
0350: 74 74 3e 2e 20 54 68 69 73 20 63 6f 6d 6d 61 6e tt>. This comman
0360: 64 20 6d 75 73 74 20 62 65 20 63 61 6c 6c 65 64 d must be called
0370: 20 61 66 74 65 72 20 74 68 65 20 73 65 72 76 65 after the serve
0380: 72 20 6f 62 6a 65 63 74 20 68 61 73 20 62 65 65 r object has bee
0390: 6e 20 63 72 65 61 74 65 64 20 28 73 65 65 20 3c n created (see <
03a0: 74 74 3e 6f 70 63 75 61 20 6e 65 77 20 73 65 72 tt>opcua new ser
03b0: 76 65 72 3c 2f 74 74 3e 29 20 61 6e 64 20 62 65 ver</tt>) and be
03c0: 66 6f 72 65 20 69 74 20 69 73 20 70 75 74 20 69 fore it is put i
03d0: 6e 74 6f 20 6f 70 65 72 61 74 69 6f 6e 20 28 73 nto operation (s
03e0: 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 73 74 61 ee <tt>opcua sta
03f0: 72 74 3c 2f 74 74 3e 29 2e 0d 0a 0d 0a 3c 74 74 rt</tt>).....<tt
0400: 3e 6f 70 63 75 61 20 61 64 64 20 3c 69 3e 68 61 >opcua add <i>ha
0410: 6e 64 6c 65 3c 2f 69 3e 20 44 61 74 61 54 79 70 ndle</i> DataTyp
0420: 65 20 3c 69 3e 6e 6f 64 65 69 64 20 70 61 72 65 e <i>nodeid pare
0430: 6e 74 20 72 65 66 74 79 70 65 20 62 72 6e 61 6d nt reftype brnam
0440: 65 20 3f 61 74 74 72 73 3f 3c 2f 69 3e 3c 2f 74 e ?attrs?</i></t
0450: 74 3e 0d 0a 0d 0a 20 20 20 20 41 64 64 73 20 61 t>.... Adds a
0460: 6e 20 6e 65 77 20 6e 6f 64 65 20 6f 66 20 6e 6f n new node of no
0470: 64 65 20 63 6c 61 73 73 20 3c 74 74 3e 44 61 74 de class <tt>Dat
0480: 61 54 79 70 65 3c 2f 74 74 3e 20 69 6e 20 74 68 aType</tt> in th
0490: 65 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e e object <tt><i>
04a0: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 handle</i></tt>
04b0: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 and returns the
04c0: 6e 6f 64 65 20 69 64 65 6e 74 69 66 65 72 2e 20 node identifer.
04d0: 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 3c 74 The parameter <t
04e0: 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 3e 3c t><i>nodeid</i><
04f0: 2f 74 74 3e 20 69 73 20 74 68 65 20 72 65 71 75 /tt> is the requ
0500: 65 73 74 65 64 20 6e 65 77 20 6e 6f 64 65 20 69 ested new node i
0510: 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65 dentifier of the
0520: 20 20 6e 6f 64 65 20 20 74 6f 20 20 62 65 20 20 node to be
0530: 63 72 65 61 74 65 64 2e 20 3c 74 74 3e 3c 69 3e created. <tt><i>
0540: 70 61 72 65 6e 74 3c 2f 69 3e 3c 2f 74 74 3e 20 parent</i></tt>
0550: 69 73 20 74 68 65 20 70 61 72 65 6e 74 20 6e 6f is the parent no
0560: 64 65 20 69 64 65 6e 74 69 66 69 65 72 20 61 6e de identifier an
0570: 64 20 3c 74 74 3e 3c 69 3e 72 65 66 74 79 70 65 d <tt><i>reftype
0580: 3c 2f 69 3e 3c 2f 74 74 3e 20 74 68 65 20 72 65 </i></tt> the re
0590: 66 65 72 65 6e 63 65 20 74 79 70 65 20 6f 72 20 ference type or
05a0: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 20 node identifier
05b0: 6f 66 20 74 68 65 20 72 65 66 65 72 65 6e 63 65 of the reference
05c0: 20 62 65 74 77 65 65 6e 20 74 68 65 20 70 61 72 between the par
05d0: 65 6e 74 20 61 6e 64 20 74 68 65 20 6e 65 77 20 ent and the new
05e0: 6e 6f 64 65 2e 20 3c 74 74 3e 3c 69 3e 62 72 6e node. <tt><i>brn
05f0: 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 ame</i></tt> is
0600: 74 68 65 20 62 72 6f 77 73 65 20 6e 61 6d 65 20 the browse name
0610: 28 73 65 65 20 73 65 63 74 69 6f 6e 20 3c 62 3e (see section <b>
0620: 51 75 61 6c 69 66 69 65 64 20 4e 61 6d 65 73 3c Qualified Names<
0630: 2f 62 3e 29 20 6f 66 20 74 68 65 20 6e 65 77 20 /b>) of the new
0640: 6e 6f 64 65 2e 20 54 68 65 20 6f 70 74 69 6f 6e node. The option
0650: 61 6c 20 3c 74 74 3e 3c 69 3e 61 74 74 72 73 3c al <tt><i>attrs<
0660: 2f 69 3e 3c 2f 74 74 3e 20 70 61 72 61 6d 65 74 /i></tt> paramet
0670: 65 72 20 73 70 65 63 69 66 69 65 73 20 61 74 74 er specifies att
0680: 72 69 62 75 74 65 73 20 66 6f 72 20 74 68 65 20 ributes for the
0690: 6e 65 77 20 6e 6f 64 65 20 69 6e 20 66 6f 72 6d new node in form
06a0: 20 6f 66 20 61 20 64 69 63 74 69 6f 6e 61 72 79 of a dictionary
06b0: 20 28 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 (see <tt>opcua
06c0: 61 74 74 72 20 64 65 66 61 75 6c 74 3c 2f 74 74 attr default</tt
06d0: 3e 29 2e 20 49 66 20 69 74 20 69 73 20 6f 6d 69 >). If it is omi
06e0: 74 74 65 64 2c 20 64 65 66 61 75 6c 74 20 76 61 tted, default va
06f0: 6c 75 65 73 20 20 61 72 65 20 75 73 65 64 2e 20 lues are used.
0700: 54 68 65 20 3c 74 74 3e 3c 69 3e 44 69 73 70 6c The <tt><i>Displ
0710: 61 79 4e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 20 ayName</i></tt>
0720: 61 74 74 72 69 62 75 74 65 20 69 66 20 6c 65 66 attribute if lef
0730: 74 20 65 6d 70 74 79 20 69 73 20 70 72 65 73 65 t empty is prese
0740: 74 20 74 6f 20 74 68 65 20 6e 61 6d 65 20 70 61 t to the name pa
0750: 72 74 20 6f 66 20 74 68 65 20 62 72 6f 77 73 65 rt of the browse
0760: 20 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72 2e name parameter.
0770: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 61 64 ....<tt>opcua ad
0780: 64 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 d <i>handle</i>
0790: 4d 65 74 68 6f 64 7c 53 69 6d 70 6c 65 4d 65 74 Method|SimpleMet
07a0: 68 6f 64 20 3c 69 3e 6e 6f 64 65 69 64 20 70 61 hod <i>nodeid pa
07b0: 72 65 6e 74 20 72 65 66 74 79 70 65 20 6f 75 74 rent reftype out
07c0: 61 72 67 73 20 62 72 6e 61 6d 65 20 69 6e 61 72 args brname inar
07d0: 67 73 20 63 6d 64 20 3f 61 74 74 72 73 3f 3c 2f gs cmd ?attrs?</
07e0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 41 i></tt>.... A
07f0: 64 64 73 20 61 6e 20 6e 65 77 20 6e 6f 64 65 20 dds an new node
0800: 6f 66 20 6e 6f 64 65 20 63 6c 61 73 73 20 3c 74 of node class <t
0810: 74 3e 4d 65 74 68 6f 64 3c 2f 74 74 3e 20 69 6e t>Method</tt> in
0820: 20 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 74 3e the object <tt>
0830: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
0840: 74 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 t> and returns t
0850: 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 65 he node identife
0860: 72 2e 20 49 6e 20 74 68 65 20 3c 74 74 3e 53 69 r. In the <tt>Si
0870: 6d 70 6c 65 4d 65 74 68 6f 64 3c 2f 74 74 3e 20 mpleMethod</tt>
0880: 63 6f 6d 6d 61 6e 64 20 66 6f 72 6d 20 74 68 65 command form the
0890: 20 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e 3c parameter <tt><
08a0: 69 3e 6f 75 74 61 72 67 73 3c 2f 69 3e 3c 2f 74 i>outargs</i></t
08b0: 74 3e 20 64 65 73 63 72 69 62 65 73 20 74 68 65 t> describes the
08c0: 20 6f 75 74 70 75 74 20 61 72 67 75 6d 65 6e 74 output argument
08d0: 73 20 6f 66 20 74 68 65 20 6d 65 74 68 6f 64 20 s of the method
08e0: 61 73 20 61 20 6c 69 73 74 20 6f 66 20 7a 65 72 as a list of zer
08f0: 6f 20 6f 72 20 6d 6f 72 65 20 70 61 69 72 73 20 o or more pairs
0900: 6f 66 20 64 61 74 61 20 74 79 70 65 20 61 6e 64 of data type and
0910: 20 61 72 67 75 6d 65 6e 74 20 6e 61 6d 65 73 2e argument names.
0920: 20 54 6f 20 66 6f 72 63 65 20 61 6e 20 61 72 67 To force an arg
0930: 75 6d 65 6e 74 20 74 6f 20 62 65 20 61 20 73 63 ument to be a sc
0940: 61 6c 61 72 2c 20 74 68 65 20 61 72 67 75 6d 65 alar, the argume
0950: 6e 74 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 20 nt name must be
0960: 70 72 65 66 69 78 65 64 20 77 69 74 68 20 61 6e prefixed with an
0970: 20 65 78 63 6c 61 6d 61 74 69 6f 6e 20 6d 61 72 exclamation mar
0980: 6b 2e 20 54 6f 20 66 6f 72 63 65 20 61 6e 20 61 k. To force an a
0990: 72 67 75 6d 65 6e 74 20 74 6f 20 62 65 20 61 6e rgument to be an
09a0: 20 61 72 72 61 79 2c 20 74 68 65 20 61 72 67 75 array, the argu
09b0: 6d 65 6e 74 20 6e 61 6d 65 20 6d 75 73 74 20 62 ment name must b
09c0: 65 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 e prefixed with
09d0: 61 6e 20 61 73 74 65 72 69 73 6b 2e 20 4c 69 6b an asterisk. Lik
09e0: 65 77 69 73 65 2c 20 3c 74 74 3e 3c 69 3e 69 6e ewise, <tt><i>in
09f0: 61 72 67 73 3c 2f 69 3e 3c 2f 74 74 3e 20 64 65 args</i></tt> de
0a00: 73 63 72 69 62 65 73 20 74 68 65 20 69 6e 70 75 scribes the inpu
0a10: 74 20 61 72 67 75 6d 65 6e 74 73 20 6f 66 20 74 t arguments of t
0a20: 68 65 20 6d 65 74 68 6f 64 20 77 69 74 68 20 69 he method with i
0a30: 64 65 6e 74 69 63 61 6c 20 70 72 65 66 69 78 20 dentical prefix
0a40: 72 75 6c 65 73 2e 20 49 6e 20 74 68 65 20 3c 74 rules. In the <t
0a50: 74 3e 4d 65 74 68 6f 64 3c 2f 74 74 3e 20 63 6f t>Method</tt> co
0a60: 6d 6d 61 6e 64 20 66 6f 72 6d 2c 20 62 6f 74 68 mmand form, both
0a70: 20 3c 74 74 3e 3c 69 3e 6f 75 74 61 72 67 73 3c <tt><i>outargs<
0a80: 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 74 /i></tt> and <tt
0a90: 3e 3c 69 3e 69 6e 61 72 67 73 3c 2f 69 3e 3c 2f ><i>inargs</i></
0aa0: 74 74 3e 20 6d 75 73 74 20 62 65 20 70 72 6f 76 tt> must be prov
0ab0: 69 64 65 64 20 61 73 20 6c 69 73 74 73 20 6f 66 ided as lists of
0ac0: 20 64 69 63 74 73 20 77 69 74 68 20 74 68 65 20 dicts with the
0ad0: 74 65 6d 70 6c 61 74 65 20 6f 62 74 61 69 6e 65 template obtaine
0ae0: 64 20 66 72 6f 6d 20 3c 74 74 3e 6f 70 63 75 61 d from <tt>opcua
0af0: 20 74 79 70 65 73 20 65 6d 70 74 79 20 3c 69 3e types empty <i>
0b00: 41 72 67 75 6d 65 6e 74 3c 2f 69 3e 3c 2f 74 74 Argument</i></tt
0b10: 3e 2e 20 54 68 65 20 70 61 72 61 6d 65 74 65 72 >. The parameter
0b20: 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c <tt><i>cmd</i><
0b30: 2f 74 74 3e 20 69 73 20 74 68 65 20 54 63 6c 20 /tt> is the Tcl
0b40: 63 61 6c 6c 62 61 63 6b 20 74 6f 20 68 61 6e 64 callback to hand
0b50: 6c 65 20 74 68 65 20 6d 65 74 68 6f 64 20 69 6e le the method in
0b60: 76 6f 63 61 74 69 6f 6e 2c 20 73 65 65 20 73 65 vocation, see se
0b70: 63 74 69 6f 6e 20 3c 62 3e 4d 65 74 68 6f 64 20 ction <b>Method
0b80: 43 61 6c 6c 62 61 63 6b 73 3c 2f 62 3e 20 66 6f Callbacks</b> fo
0b90: 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 r more informati
0ba0: 6f 6e 2e 20 46 6f 72 20 74 68 65 20 6f 74 68 65 on. For the othe
0bb0: 72 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 r parameters, re
0bc0: 66 65 72 20 74 6f 20 3c 74 74 3e 6f 70 63 75 61 fer to <tt>opcua
0bd0: 20 61 64 64 20 44 61 74 61 54 79 70 65 3c 2f 74 add DataType</t
0be0: 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 t>.....<tt>opcua
0bf0: 20 61 64 64 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f add <i>handle</
0c00: 69 3e 20 4e 61 6d 65 73 70 61 63 65 20 3c 69 3e i> Namespace <i>
0c10: 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d name</i></tt>...
0c20: 0a 20 20 20 20 41 64 64 73 20 74 68 65 20 6e 65 . Adds the ne
0c30: 77 20 6e 61 6d 65 73 70 61 63 65 20 3c 74 74 3e w namespace <tt>
0c40: 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e <i>name</i></tt>
0c50: 20 74 6f 20 74 68 65 20 73 65 72 76 65 72 20 6f to the server o
0c60: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
0c70: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 dle</i></tt> and
0c80: 20 72 65 74 75 72 6e 73 20 61 20 6e 75 6d 65 72 returns a numer
0c90: 69 63 20 69 64 65 6e 74 69 66 69 65 72 20 66 6f ic identifier fo
0ca0: 72 20 74 68 69 73 20 6e 61 6d 65 73 70 61 63 65 r this namespace
0cb0: 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 61 .....<tt>opcua a
0cc0: 64 64 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e dd <i>handle</i>
0cd0: 20 4f 62 6a 65 63 74 20 3c 69 3e 6e 6f 64 65 69 Object <i>nodei
0ce0: 64 20 70 61 72 65 6e 74 20 72 65 66 74 79 70 65 d parent reftype
0cf0: 20 62 72 6e 61 6d 65 20 3f 74 79 70 65 69 64 20 brname ?typeid
0d00: 61 74 74 72 73 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d attrs?</i></tt>.
0d10: 0a 0d 0a 20 20 20 20 41 64 64 73 20 61 6e 20 6e ... Adds an n
0d20: 65 77 20 6e 6f 64 65 20 6f 66 20 6e 6f 64 65 20 ew node of node
0d30: 63 6c 61 73 73 20 3c 74 74 3e 4f 62 6a 65 63 74 class <tt>Object
0d40: 3c 2f 74 74 3e 20 69 6e 20 74 68 65 20 6f 62 6a </tt> in the obj
0d50: 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c ect <tt><i>handl
0d60: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 20 72 e</i></tt> and r
0d70: 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 eturns the node
0d80: 69 64 65 6e 74 69 66 65 72 2e 20 54 68 65 20 6f identifer. The o
0d90: 70 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 ptional paramete
0da0: 72 20 3c 74 74 3e 3c 69 3e 74 79 70 65 69 64 3c r <tt><i>typeid<
0db0: 2f 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 /i></tt> must be
0dc0: 20 61 20 6b 6e 6f 77 6e 20 64 61 74 61 20 74 79 a known data ty
0dd0: 70 65 20 6e 61 6d 65 20 28 73 65 65 20 20 3c 74 pe name (see <t
0de0: 74 3e 6f 70 63 75 61 20 20 74 79 70 65 73 3c 2f t>opcua types</
0df0: 74 74 3e 29 20 6f 72 20 61 20 6e 6f 64 65 20 20 tt>) or a node
0e00: 69 64 65 6e 74 69 66 69 65 72 20 6f 66 20 61 20 identifier of a
0e10: 64 61 74 61 20 74 79 70 65 2e 20 46 6f 72 20 74 data type. For t
0e20: 68 65 20 6f 74 68 65 72 20 70 61 72 61 6d 65 74 he other paramet
0e30: 65 72 73 2c 20 72 65 66 65 72 20 74 6f 20 3c 74 ers, refer to <t
0e40: 74 3e 6f 70 63 75 61 20 61 64 64 20 44 61 74 61 t>opcua add Data
0e50: 54 79 70 65 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 Type</tt>.....<t
0e60: 74 3e 6f 70 63 75 61 20 61 64 64 20 3c 69 3e 68 t>opcua add <i>h
0e70: 61 6e 64 6c 65 3c 2f 69 3e 20 4f 62 6a 65 63 74 andle</i> Object
0e80: 54 79 70 65 20 3c 69 3e 6e 6f 64 65 69 64 20 70 Type <i>nodeid p
0e90: 61 72 65 6e 74 20 72 65 66 74 79 70 65 20 62 72 arent reftype br
0ea0: 6e 61 6d 65 20 3f 61 74 74 72 73 3f 3c 2f 69 3e name ?attrs?</i>
0eb0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 41 64 64 </tt>.... Add
0ec0: 73 20 61 6e 20 6e 65 77 20 6e 6f 64 65 20 6f 66 s an new node of
0ed0: 20 6e 6f 64 65 20 63 6c 61 73 73 20 3c 74 74 3e node class <tt>
0ee0: 4f 62 6a 65 63 74 54 79 70 65 3c 2f 74 74 3e 20 ObjectType</tt>
0ef0: 69 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 in the object <t
0f00: 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c t><i>handle</i><
0f10: 2f 74 74 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 /tt> and returns
0f20: 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 the node identi
0f30: 66 65 72 2e 20 46 6f 72 20 74 68 65 20 6f 74 68 fer. For the oth
0f40: 65 72 20 70 61 72 61 6d 65 74 65 72 73 2c 20 72 er parameters, r
0f50: 65 66 65 72 20 74 6f 20 3c 74 74 3e 6f 70 63 75 efer to <tt>opcu
0f60: 61 20 61 64 64 20 44 61 74 61 54 79 70 65 3c 2f a add DataType</
0f70: 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 tt>.....<tt>opcu
0f80: 61 20 61 64 64 20 3c 69 3e 68 61 6e 64 6c 65 3c a add <i>handle<
0f90: 2f 69 3e 20 52 65 66 65 72 65 6e 63 65 20 3c 69 /i> Reference <i
0fa0: 3e 73 72 63 69 64 20 72 65 66 74 79 70 65 20 74 >srcid reftype t
0fb0: 61 72 67 65 74 20 3f 66 6f 72 77 61 72 64 3f 3c arget ?forward?<
0fc0: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
0fd0: 41 64 64 73 20 61 20 72 65 66 65 72 65 6e 63 65 Adds a reference
0fe0: 20 6f 66 20 74 79 70 65 20 3c 74 74 3e 3c 69 3e of type <tt><i>
0ff0: 72 65 66 74 79 70 65 3c 2f 69 3e 3c 2f 74 74 3e reftype</i></tt>
1000: 20 28 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 (see <tt>opcua
1010: 72 65 66 74 79 70 65 3c 2f 74 74 3e 29 20 62 65 reftype</tt>) be
1020: 74 77 65 65 6e 20 74 68 65 20 6e 6f 64 65 20 69 tween the node i
1030: 64 65 6e 74 69 66 69 65 72 73 20 3c 74 74 3e 3c dentifiers <tt><
1040: 69 3e 73 72 63 69 64 3c 2f 69 3e 3c 2f 74 74 3e i>srcid</i></tt>
1050: 20 61 6e 64 20 3c 74 74 3e 3c 3c 69 3e 74 61 72 and <tt><<i>tar
1060: 67 65 74 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 get</i></tt> on
1070: 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c the object <tt><
1080: 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 i>handle</i></tt
1090: 3e 2e 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 >. The optional
10a0: 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e 3c 69 parameter <tt><i
10b0: 3e 66 6f 72 77 61 72 64 3c 2f 69 3e 3c 2f 74 74 >forward</i></tt
10c0: 3e 20 6d 75 73 74 20 62 65 20 61 20 62 6f 6f 6c > must be a bool
10d0: 65 61 6e 20 69 6e 64 69 63 61 74 69 6e 67 20 74 ean indicating t
10e0: 68 65 20 64 69 72 65 63 74 69 6f 6e 20 6f 66 20 he direction of
10f0: 74 68 65 20 72 65 66 65 72 65 6e 63 65 20 28 74 the reference (t
1100: 72 75 65 2c 20 74 68 65 20 64 65 66 61 75 6c 74 rue, the default
1110: 2c 20 69 73 20 66 6f 72 77 61 72 64 2c 20 66 61 , is forward, fa
1120: 6c 73 65 20 69 73 20 69 6e 76 65 72 73 65 29 2e lse is inverse).
1130: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 61 64 ....<tt>opcua ad
1140: 64 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 d <i>handle</i>
1150: 52 65 66 65 72 65 6e 63 65 54 79 70 65 20 3c 69 ReferenceType <i
1160: 3e 6e 6f 64 65 69 64 20 70 61 72 65 6e 74 20 72 >nodeid parent r
1170: 65 66 74 79 70 65 20 62 72 6e 61 6d 65 20 3f 61 eftype brname ?a
1180: 74 74 72 73 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a ttrs?</i></tt>..
1190: 0d 0a 20 20 20 20 41 64 64 73 20 61 6e 20 6e 65 .. Adds an ne
11a0: 77 20 6e 6f 64 65 20 6f 66 20 6e 6f 64 65 20 63 w node of node c
11b0: 6c 61 73 73 20 3c 74 74 3e 52 65 66 65 72 65 6e lass <tt>Referen
11c0: 63 65 54 79 70 65 3c 2f 74 74 3e 20 69 6e 20 74 ceType</tt> in t
11d0: 68 65 20 6f 62 6a 65 63 74 20 20 3c 74 74 3e 3c he object <tt><
11e0: 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 i>handle</i></tt
11f0: 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 > and returns th
1200: 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 65 72 e node identifer
1210: 2e 20 46 6f 72 20 74 68 65 20 6f 74 68 65 72 20 . For the other
1220: 70 61 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 parameters, refe
1230: 72 20 74 6f 20 3c 74 74 3e 6f 70 63 75 61 20 61 r to <tt>opcua a
1240: 64 64 20 44 61 74 61 54 79 70 65 3c 2f 74 74 3e dd DataType</tt>
1250: 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 61 .....<tt>opcua a
1260: 64 64 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e dd <i>handle</i>
1270: 20 56 61 72 69 61 62 6c 65 20 3c 69 3e 6e 6f 64 Variable <i>nod
1280: 65 69 64 20 70 61 72 65 6e 74 20 72 65 66 74 79 eid parent refty
1290: 70 65 20 62 72 6e 61 6d 65 20 3f 74 79 70 65 69 pe brname ?typei
12a0: 64 20 20 61 74 74 72 73 20 63 6d 64 3f 3c 2f 69 d attrs cmd?</i
12b0: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 41 64 ></tt>.... Ad
12c0: 64 73 20 61 6e 20 6e 65 77 20 6e 6f 64 65 20 6f ds an new node o
12d0: 66 20 6e 6f 64 65 20 63 6c 61 73 73 20 3c 74 74 f node class <tt
12e0: 3e 56 61 72 69 61 62 6c 65 3c 2f 74 74 3e 20 69 >Variable</tt> i
12f0: 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 74 n the object <tt
1300: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
1310: 74 74 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 tt> and returns
1320: 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 the node identif
1330: 65 72 2e 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c er. The optional
1340: 20 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e 3c parameter <tt><
1350: 69 3e 74 79 70 65 69 64 3c 2f 69 3e 3c 2f 74 74 i>typeid</i></tt
1360: 3e 20 6d 75 73 74 20 62 65 20 61 20 6b 6e 6f 77 > must be a know
1370: 6e 20 64 61 74 61 20 74 79 70 65 20 6e 61 6d 65 n data type name
1380: 20 28 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 (see <tt>opcua
1390: 74 79 70 65 73 3c 2f 74 74 3e 29 20 20 6f 72 20 types</tt>) or
13a0: 61 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 a node identifie
13b0: 72 20 6f 66 20 61 20 64 61 74 61 20 74 79 70 65 r of a data type
13c0: 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72 or an empty str
13d0: 69 6e 67 20 66 6f 72 20 61 20 64 65 66 61 75 6c ing for a defaul
13e0: 74 20 76 61 6c 75 65 2e 20 50 61 72 61 6d 65 74 t value. Paramet
13f0: 65 72 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 er <tt><i>cmd</i
1400: 3e 3c 2f 74 74 3e 20 69 73 20 61 6e 20 6f 70 74 ></tt> is an opt
1410: 69 6f 6e 61 6c 20 64 61 74 61 20 73 6f 75 72 63 ional data sourc
1420: 65 20 63 61 6c 6c 62 61 63 6b 20 77 68 69 63 68 e callback which
1430: 20 70 72 6f 64 75 63 65 73 20 20 28 72 65 61 64 produces (read
1440: 20 6f 70 65 72 61 74 69 6f 6e 29 20 6f 72 20 63 operation) or c
1450: 6f 6e 73 75 6d 65 73 20 28 77 72 69 74 65 20 6f onsumes (write o
1460: 70 65 72 61 74 69 6f 6e 29 20 74 68 65 20 76 61 peration) the va
1470: 72 69 61 62 6c 65 27 73 20 76 61 6c 75 65 2e 20 riable's value.
1480: 53 65 65 20 73 65 63 74 69 6f 6e 20 3c 62 3e 44 See section <b>D
1490: 61 74 61 20 53 6f 75 72 63 65 20 43 61 6c 6c 62 ata Source Callb
14a0: 61 63 6b 73 3c 2f 62 3e 20 66 6f 72 20 20 6d 6f acks</b> for mo
14b0: 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 re information.
14c0: 46 6f 72 20 74 68 65 20 6f 74 68 65 72 20 70 61 For the other pa
14d0: 72 61 6d 65 74 65 72 73 2c 20 72 65 66 65 72 20 rameters, refer
14e0: 74 6f 20 3c 74 74 3e 6f 70 63 75 61 20 61 64 64 to <tt>opcua add
14f0: 20 44 61 74 61 54 79 70 65 3c 2f 74 74 3e 2e 0d DataType</tt>..
1500: 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 61 64 64 ...<tt>opcua add
1510: 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 56 <i>handle</i> V
1520: 61 72 69 61 62 6c 65 54 79 70 65 20 3c 69 3e 6e ariableType <i>n
1530: 6f 64 65 69 64 20 70 61 72 65 6e 74 20 72 65 66 odeid parent ref
1540: 74 79 70 65 20 62 72 6e 61 6d 65 20 3f 74 79 70 type brname ?typ
1550: 65 69 64 20 61 74 74 72 73 3f 3c 2f 69 3e 3c 2f eid attrs?</i></
1560: 74 74 3e 0d 0a 0d 0a 20 20 20 20 41 64 64 73 20 tt>.... Adds
1570: 61 6e 20 6e 65 77 20 6e 6f 64 65 20 6f 66 20 6e an new node of n
1580: 6f 64 65 20 63 6c 61 73 73 20 3c 74 74 3e 56 61 ode class <tt>Va
1590: 72 69 61 62 6c 65 54 79 70 65 3c 2f 74 74 3e 20 riableType</tt>
15a0: 69 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 in the object <t
15b0: 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c t><i>handle</i><
15c0: 2f 74 74 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 /tt> and returns
15d0: 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 the node identi
15e0: 66 65 72 2e 20 54 68 65 20 6f 70 74 69 6f 6e 61 fer. The optiona
15f0: 6c 20 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e l parameter <tt>
1600: 3c 69 3e 74 79 70 65 69 64 3c 2f 69 3e 3c 2f 74 <i>typeid</i></t
1610: 74 3e 20 6d 75 73 74 20 62 65 20 61 20 6b 6e 6f t> must be a kno
1620: 77 6e 20 64 61 74 61 20 74 79 70 65 20 6e 61 6d wn data type nam
1630: 65 20 28 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 e (see <tt>opcua
1640: 20 74 79 70 65 73 3c 2f 74 74 3e 29 20 6f 72 20 types</tt>) or
1650: 61 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 a node identifie
1660: 72 20 6f 66 20 61 20 64 61 74 61 20 74 79 70 65 r of a data type
1670: 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72 or an empty str
1680: 69 6e 67 20 66 6f 72 20 61 20 64 65 66 61 75 6c ing for a defaul
1690: 74 20 76 61 6c 75 65 2e 20 46 6f 72 20 74 68 65 t value. For the
16a0: 20 6f 74 68 65 72 20 70 61 72 61 6d 65 74 65 72 other parameter
16b0: 73 2c 20 72 65 66 65 72 20 74 6f 20 3c 74 74 3e s, refer to <tt>
16c0: 6f 70 63 75 61 20 61 64 64 20 44 61 74 61 54 79 opcua add DataTy
16d0: 70 65 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e pe</tt>.....<tt>
16e0: 6f 70 63 75 61 20 61 64 64 20 3c 69 3e 68 61 6e opcua add <i>han
16f0: 64 6c 65 3c 2f 69 3e 20 56 69 65 77 20 3c 69 3e dle</i> View <i>
1700: 6e 6f 64 65 69 64 20 70 61 72 65 6e 74 20 72 65 nodeid parent re
1710: 66 74 79 70 65 20 62 72 6e 61 6d 65 20 3f 61 74 ftype brname ?at
1720: 74 72 73 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d trs?</i></tt>...
1730: 0a 20 20 20 20 41 64 64 73 20 61 6e 20 6e 65 77 . Adds an new
1740: 20 6e 6f 64 65 20 6f 66 20 6e 6f 64 65 20 63 6c node of node cl
1750: 61 73 73 20 3c 74 74 3e 56 69 65 77 3c 2f 74 74 ass <tt>View</tt
1760: 3e 20 69 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 > in the object
1770: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
1780: 3e 3c 2f 74 74 3e 20 61 6e 64 20 72 65 74 75 72 ></tt> and retur
1790: 6e 73 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e ns the node iden
17a0: 74 69 66 65 72 2e 20 46 6f 72 20 74 68 65 20 6f tifer. For the o
17b0: 74 68 65 72 20 70 61 72 61 6d 65 74 65 72 73 2c ther parameters,
17c0: 20 72 65 66 65 72 20 74 6f 20 3c 74 74 3e 6f 70 refer to <tt>op
17d0: 63 75 61 20 61 64 64 20 44 61 74 61 54 79 70 65 cua add DataType
17e0: 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 </tt>.....<tt>op
17f0: 63 75 61 20 61 70 70 64 65 73 63 20 3c 69 3e 68 cua appdesc <i>h
1800: 61 6e 64 6c 65 20 3f 64 65 73 63 72 69 70 74 69 andle ?descripti
1810: 6f 6e 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a on?</i></tt>....
1820: 20 20 20 20 51 75 65 72 69 65 73 20 6f 72 20 73 Queries or s
1830: 65 74 73 20 74 68 65 20 61 70 70 6c 69 63 61 74 ets the applicat
1840: 69 6f 6e 20 64 65 73 63 72 69 70 74 69 6f 6e 20 ion description
1850: 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 of the object <t
1860: 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c t><i>handle</i><
1870: 2f 74 74 3e 2e 20 46 6f 72 20 61 20 71 75 65 72 /tt>. For a quer
1880: 79 2c 20 74 68 65 20 63 75 72 72 65 6e 74 20 61 y, the current a
1890: 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 73 63 72 pplication descr
18a0: 69 70 74 69 6f 6e 20 69 73 20 72 65 74 75 72 6e iption is return
18b0: 65 64 20 61 73 20 61 20 61 20 64 69 63 74 69 6f ed as a a dictio
18c0: 6e 61 72 79 2e 20 54 68 69 73 20 64 69 63 74 69 nary. This dicti
18d0: 6f 6e 61 72 79 20 63 61 6e 20 62 65 20 75 73 65 onary can be use
18e0: 64 20 61 73 20 62 61 73 69 73 20 66 6f 72 20 6d d as basis for m
18f0: 6f 64 69 66 69 63 61 74 69 6f 6e 20 61 6e 64 20 odification and
1900: 66 75 72 74 68 65 72 20 74 6f 20 73 65 74 20 61 further to set a
1910: 20 6e 65 77 20 61 70 70 6c 69 63 61 74 69 6f 6e new application
1920: 20 3c 74 74 3e 3c 69 3e 64 65 73 63 72 69 70 74 <tt><i>descript
1930: 69 6f 6e 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 ion</i></tt>. Th
1940: 65 20 73 65 74 20 6f 70 65 72 61 74 69 6f 6e 0d e set operation.
1950: 0a 63 61 6e 20 62 65 20 70 65 72 66 6f 72 6d 65 .can be performe
1960: 64 20 6f 6e 6c 79 20 6f 6e 20 73 74 6f 70 70 65 d only on stoppe
1970: 64 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 73 d server objects
1980: 20 61 6e 64 20 75 6e 63 6f 6e 6e 65 63 74 65 64 and unconnected
1990: 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 73 2e client objects.
19a0: 20 4e 6f 74 65 2c 20 74 68 61 74 20 74 68 65 20 Note, that the
19b0: 3c 74 74 3e 41 70 70 6c 69 63 61 74 69 6f 6e 55 <tt>ApplicationU
19c0: 72 69 3c 2f 74 74 3e 20 63 6f 6d 70 6f 6e 65 6e ri</tt> componen
19d0: 74 20 6f 66 20 74 68 65 20 61 70 70 6c 69 63 61 t of the applica
19e0: 74 69 6f 6e 20 64 65 73 63 72 69 70 74 69 6f 6e tion description
19f0: 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65 20 must match the
1a00: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 69 6e corresponding in
1a10: 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 63 65 72 formation in cer
1a20: 74 69 66 69 63 61 74 65 73 2e 0d 0a 0d 0a 3c 74 tificates.....<t
1a30: 74 3e 6f 70 63 75 61 20 61 74 74 72 73 20 3f 6c t>opcua attrs ?l
1a40: 69 73 74 7c 64 65 66 61 75 6c 74 7c 6e 75 6d 65 ist|default|nume
1a50: 72 69 63 3f 20 3c 69 3e 3f 6e 61 6d 65 3f 3c 2f ric? <i>?name?</
1a60: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 57 i></tt>.... W
1a70: 69 74 68 6f 75 74 20 66 75 72 74 68 65 72 20 70 ithout further p
1a80: 61 72 61 6d 65 74 65 72 73 20 72 65 74 75 72 6e arameters return
1a90: 73 20 61 20 6c 69 73 74 20 6f 66 20 61 74 74 72 s a list of attr
1aa0: 69 62 75 74 65 20 6e 61 6d 65 73 20 74 68 65 20 ibute names the
1ab0: 3c 74 74 3e 6f 70 63 75 61 20 72 65 61 64 3c 2f <tt>opcua read</
1ac0: 74 74 3e 20 61 6e 64 20 3c 74 74 3e 6f 70 63 75 tt> and <tt>opcu
1ad0: 61 20 77 72 69 74 65 3c 2f 74 74 3e 20 63 6f 6d a write</tt> com
1ae0: 6d 61 6e 64 73 20 73 75 70 70 6f 72 74 2c 20 65 mands support, e
1af0: 2e 67 2e 20 3c 74 74 3e 56 61 6c 75 65 3c 2f 74 .g. <tt>Value</t
1b00: 74 3e 2c 20 3c 74 74 3e 4e 6f 64 65 43 6c 61 73 t>, <tt>NodeClas
1b10: 73 3c 2f 74 74 3e 2c 20 65 74 63 2e 20 57 69 74 s</tt>, etc. Wit
1b20: 68 20 74 68 65 20 3c 74 74 3e 6c 69 73 74 3c 2f h the <tt>list</
1b30: 74 74 3e 20 6b 65 79 77 6f 72 64 20 61 20 6c 69 tt> keyword a li
1b40: 73 74 20 6f 66 20 74 68 65 20 64 61 74 61 20 74 st of the data t
1b50: 79 70 65 73 20 20 75 73 65 64 20 61 73 20 61 74 ypes used as at
1b60: 74 72 69 62 75 74 65 73 20 66 6f 72 20 63 72 65 tributes for cre
1b70: 61 74 69 6f 6e 20 6f 66 20 6e 6f 64 65 73 20 77 ation of nodes w
1b80: 69 74 68 20 74 68 65 20 3c 74 74 3e 6f 70 63 75 ith the <tt>opcu
1b90: 61 20 61 64 64 3c 2f 74 74 3e 20 63 6f 6d 6d 61 a add</tt> comma
1ba0: 6e 64 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 nd is returned.
1bb0: 57 69 74 68 20 74 68 65 20 3c 74 74 3e 64 65 66 With the <tt>def
1bc0: 61 75 6c 74 3c 2f 74 74 3e 20 6b 65 79 77 6f 72 ault</tt> keywor
1bd0: 64 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 d combined with
1be0: 74 68 65 20 3c 74 74 3e 3c 69 3e 6e 61 6d 65 3c the <tt><i>name<
1bf0: 2f 69 3e 3c 2f 74 74 3e 20 6f 66 20 74 68 65 20 /i></tt> of the
1c00: 64 61 74 61 20 74 79 70 65 20 61 20 64 69 63 74 data type a dict
1c10: 69 6f 6e 61 72 79 20 64 65 73 63 72 69 62 69 6e ionary describin
1c20: 67 20 74 68 65 20 64 65 66 61 75 6c 74 20 61 74 g the default at
1c30: 74 72 69 62 75 74 65 73 20 6f 66 20 74 68 69 73 tributes of this
1c40: 20 74 79 70 65 20 69 73 20 72 65 74 75 72 6e 65 type is returne
1c50: 64 2c 20 65 2e 67 20 3c 74 74 3e 6f 70 63 75 61 d, e.g <tt>opcua
1c60: 20 61 74 74 72 73 20 64 65 66 61 75 6c 74 20 3c attrs default <
1c70: 69 3e 44 61 74 61 54 79 70 65 41 74 74 72 69 62 i>DataTypeAttrib
1c80: 75 74 65 73 3c 69 3e 3c 2f 74 74 3e 20 79 69 65 utes<i></tt> yie
1c90: 6c 64 73 20 61 20 64 65 66 61 75 6c 74 20 64 69 lds a default di
1ca0: 63 74 69 6f 6e 61 72 79 20 66 6f 72 20 63 72 65 ctionary for cre
1cb0: 61 74 69 6f 6e 20 6f 66 20 61 20 3c 74 74 3e 44 ation of a <tt>D
1cc0: 61 74 61 54 79 70 65 3c 2f 74 74 3e 20 6e 6f 64 ataType</tt> nod
1cd0: 65 2e 20 57 69 74 68 20 74 68 65 20 3c 74 74 3e e. With the <tt>
1ce0: 3c 69 3e 6e 75 6d 65 72 69 63 3c 2f 69 3e 3c 2f <i>numeric</i></
1cf0: 74 74 3e 20 6b 65 79 77 6f 72 64 20 63 6f 6d 62 tt> keyword comb
1d00: 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 3c 74 ined with the <t
1d10: 74 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 t><i>name</i></t
1d20: 74 3e 20 6f 66 20 74 68 65 20 64 61 74 61 20 74 t> of the data t
1d30: 79 70 65 2c 20 74 68 65 20 6e 75 6d 65 72 69 63 ype, the numeric
1d40: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 74 value of the at
1d50: 74 72 69 62 75 74 65 20 69 73 20 72 65 74 75 72 tribute is retur
1d60: 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 ned.....<tt>opcu
1d70: 61 20 61 74 74 72 5f 69 6e 69 74 20 3c 69 3e 6e a attr_init <i>n
1d80: 61 6d 65 20 62 6f 64 79 20 2e 2e 2e 3c 2f 69 3e ame body ...</i>
1d90: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 48 65 6c </tt>.... Hel
1da0: 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 per function to
1db0: 63 72 65 61 74 65 20 61 6e 64 20 72 65 74 75 72 create and retur
1dc0: 6e 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 66 n a dictionary f
1dd0: 6f 72 20 74 68 65 20 61 74 74 72 69 62 75 74 65 or the attribute
1de0: 20 74 79 70 65 20 3c 74 74 3e 3c 69 3e 6e 61 6d type <tt><i>nam
1df0: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 77 68 69 63 68 e</i></tt> which
1e00: 20 69 73 20 69 6e 69 74 69 61 6c 6c 79 20 66 69 is initially fi
1e10: 6c 6c 65 64 20 77 69 74 68 20 64 65 66 61 75 6c lled with defaul
1e20: 74 73 20 66 72 6f 6d 20 3c 74 74 3e 6f 70 63 75 ts from <tt>opcu
1e30: 61 20 61 74 74 72 73 20 64 65 66 61 75 6c 74 2e a attrs default.
1e40: 2e 2e 3c 2f 74 74 3e 20 61 6e 64 20 66 69 6e 61 ..</tt> and fina
1e50: 6c 6c 79 20 6d 6f 64 69 66 69 65 64 20 62 79 20 lly modified by
1e60: 74 68 65 20 54 63 6c 20 63 6f 64 65 0d 0a 69 6e the Tcl code..in
1e70: 20 3c 74 74 3e 3c 69 3e 62 6f 64 79 3c 2f 69 3e <tt><i>body</i>
1e80: 3c 2f 74 74 3e 20 77 69 74 68 20 74 68 65 20 73 </tt> with the s
1e90: 61 6d 65 20 72 75 6c 65 73 20 61 73 20 69 6e 20 ame rules as in
1ea0: 74 68 65 20 3c 74 74 3e 64 69 63 74 20 77 69 74 the <tt>dict wit
1eb0: 68 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 2e 20 h</tt> command.
1ec0: 54 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 66 The parameters f
1ed0: 6f 6c 6c 6f 77 69 6e 67 20 3c 74 74 3e 3c 69 3e ollowing <tt><i>
1ee0: 62 6f 64 79 3c 2f 69 3e 3c 2f 74 74 3e 20 61 72 body</i></tt> ar
1ef0: 65 20 61 73 73 69 67 6e 65 64 20 74 6f 20 74 68 e assigned to th
1f00: 65 20 6c 69 73 74 20 3c 74 74 3e 3c 69 3e 61 72 e list <tt><i>ar
1f10: 67 73 3c 2f 69 3e 3c 2f 74 74 3e 20 61 73 20 69 gs</i></tt> as i
1f20: 6e 20 61 20 3c 74 74 3e 70 72 6f 63 3c 2f 74 74 n a <tt>proc</tt
1f30: 3e 2e 20 49 6e 20 63 6f 6e 74 72 61 73 74 20 74 >. In contrast t
1f40: 6f 20 3c 74 74 3e 64 69 63 74 20 77 69 74 68 3c o <tt>dict with<
1f50: 2f 74 74 3e 2c 20 3c 74 74 3e 3c 69 3e 62 6f 64 /tt>, <tt><i>bod
1f60: 79 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 65 78 y</i></tt> is ex
1f70: 65 63 75 74 65 64 20 69 6e 20 61 20 63 61 6c 6c ecuted in a call
1f80: 20 66 72 61 6d 65 20 6f 66 20 69 74 73 20 6f 77 frame of its ow
1f90: 6e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 n.....<tt>opcua
1fa0: 62 72 6f 77 73 65 20 3c 69 3e 68 61 6e 64 6c 65 browse <i>handle
1fb0: 20 6e 6f 64 65 69 64 20 3f 64 69 72 20 72 65 66 nodeid ?dir ref
1fc0: 69 64 20 6d 61 73 6b 20 2e 2e 2e 3f 3c 2f 69 3e id mask ...?</i>
1fd0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 50 65 72 </tt>.... Per
1fe0: 66 6f 72 6d 73 20 61 20 62 72 6f 77 73 65 20 6f forms a browse o
1ff0: 70 65 72 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 peration on the
2000: 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 client or server
2010: 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 object <tt><i>h
2020: 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 73 andle</i></tt> s
2030: 74 61 72 74 69 6e 67 20 61 74 20 74 68 65 20 6e tarting at the n
2040: 6f 64 65 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 ode <tt><i>nodei
2050: 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 d</i></tt>. The
2060: 62 72 6f 77 73 65 20 64 69 72 65 63 74 69 6f 6e browse direction
2070: 20 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65 can be specifie
2080: 64 20 77 69 74 68 20 74 68 65 20 3c 74 74 3e 3c d with the <tt><
2090: 69 3e 64 69 72 3c 2f 69 3e 3c 2f 74 74 3e 20 70 i>dir</i></tt> p
20a0: 61 72 61 6d 65 74 65 72 20 61 73 20 3c 74 74 3e arameter as <tt>
20b0: 46 6f 72 77 61 72 64 3c 2f 74 74 3e 2c 20 3c 74 Forward</tt>, <t
20c0: 74 3e 49 6e 76 65 72 73 65 3c 2f 74 74 3e 2c 20 t>Inverse</tt>,
20d0: 6f 72 20 3c 74 74 3e 42 6f 74 68 3c 2f 74 74 3e or <tt>Both</tt>
20e0: 2e 20 3c 74 74 3e 46 6f 72 77 61 72 64 3c 2f 74 . <tt>Forward</t
20f0: 74 3e 20 69 73 20 74 68 65 20 64 65 66 61 75 6c t> is the defaul
2100: 74 20 64 69 72 65 63 74 69 6f 6e 2e 20 54 68 65 t direction. The
2110: 20 6f 70 74 69 6f 6e 61 6c 20 3c 74 74 3e 3c 69 optional <tt><i
2120: 3e 6d 61 73 6b 3c 2f 69 3e 3c 2f 74 74 3e 20 61 >mask</i></tt> a
2130: 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 nd following par
2140: 61 6d 65 74 65 72 73 20 73 65 6c 65 63 74 20 73 ameters select s
2150: 70 65 63 69 66 69 63 20 6e 6f 64 65 20 63 6c 61 pecific node cla
2160: 73 73 65 73 20 3c 74 74 3e 4f 62 6a 65 63 74 3c sses <tt>Object<
2170: 2f 74 74 3e 2c 20 3c 74 74 3e 56 61 72 69 61 62 /tt>, <tt>Variab
2180: 6c 65 3c 2f 74 74 3e 2c 20 3c 74 74 3e 4d 65 74 le</tt>, <tt>Met
2190: 68 6f 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e 4f 62 hod</tt>, <tt>Ob
21a0: 6a 65 63 74 54 79 70 65 3c 2f 74 74 3e 2c 20 3c jectType</tt>, <
21b0: 74 74 3e 56 61 72 69 61 62 6c 65 54 79 70 65 3c tt>VariableType<
21c0: 2f 74 74 3e 2c 20 3c 74 74 3e 52 65 66 65 72 65 /tt>, <tt>Refere
21d0: 6e 63 65 54 79 70 65 3c 2f 74 74 3e 2c 20 3c 74 nceType</tt>, <t
21e0: 74 3e 44 61 74 61 54 79 70 65 3c 2f 74 74 3e 2c t>DataType</tt>,
21f0: 20 61 6e 64 20 3c 74 74 3e 56 69 65 77 3c 2f 74 and <tt>View</t
2200: 74 3e 2e 20 54 68 65 20 72 65 73 75 6c 74 20 6f t>. The result o
2210: 66 20 74 68 65 20 62 72 6f 77 73 65 20 6f 70 65 f the browse ope
2220: 72 61 74 69 6f 6e 20 69 73 20 61 20 6c 69 73 74 ration is a list
2230: 20 77 68 65 72 65 20 65 61 63 68 20 69 74 65 6d where each item
2240: 20 69 73 20 6d 61 64 65 20 75 70 20 6f 66 20 6e is made up of n
2250: 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 2c 20 ode identifier,
2260: 62 72 6f 77 73 65 20 6e 61 6d 65 20 28 71 75 61 browse name (qua
2270: 6c 69 66 69 65 64 20 6e 61 6d 65 29 2c 20 64 69 lified name), di
2280: 73 70 6c 61 79 20 6e 61 6d 65 20 28 6c 6f 63 61 splay name (loca
2290: 6c 65 20 61 6e 64 20 74 65 78 74 29 2c 20 6e 6f le and text), no
22a0: 64 65 20 63 6c 61 73 73 2c 20 72 65 66 65 72 65 de class, refere
22b0: 6e 63 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 nce node identif
22c0: 69 65 72 2c 20 61 6e 64 20 74 79 70 65 20 6e 6f ier, and type no
22d0: 64 65 20 69 64 65 6e 74 69 66 69 65 72 2e 0d 0a de identifier...
22e0: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 63 61 6c 6c ..<tt>opcua call
22f0: 20 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 65 69 <i>handle nodei
2300: 64 20 6d 65 74 68 6f 64 69 64 20 3f 74 79 70 65 d methodid ?type
2310: 20 76 61 6c 75 65 20 2e 2e 2e 3f 20 3f 3c 2f 69 value ...? ?</i
2320: 3e 2d 61 73 79 6e 63 20 3c 69 3e 63 6d 64 3f 3c >-async <i>cmd?<
2330: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
2340: 43 61 6c 6c 73 20 74 68 65 20 6d 65 74 68 6f 64 Calls the method
2350: 20 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e 74 with node ident
2360: 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 6d 65 74 ifier <tt><i>met
2370: 68 6f 64 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f hodid</i></tt> o
2380: 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 77 69 74 n the object wit
2390: 68 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 h node identifie
23a0: 72 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c r <tt><i>nodeid<
23b0: 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 /i></tt> on the
23c0: 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 client or server
23d0: 20 6f 62 6a 65 63 74 20 3c 74 74 3e 68 61 6e 64 object <tt>hand
23e0: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 77 69 74 68 le</i></tt> with
23f0: 20 70 61 72 61 6d 65 74 65 72 73 20 64 65 73 63 parameters desc
2400: 72 69 62 65 64 20 62 79 20 70 61 69 72 73 20 6f ribed by pairs o
2410: 66 20 3c 74 74 3e 3c 69 3e 74 79 70 65 3c 2f 69 f <tt><i>type</i
2420: 3e 3c 2f 74 74 3e 20 28 64 61 74 61 20 74 79 70 ></tt> (data typ
2430: 65 2c 20 65 2e 67 2e 20 3c 74 74 3e 49 6e 74 33 e, e.g. <tt>Int3
2440: 32 3c 2f 74 74 3e 20 6f 72 20 3c 74 74 3e 53 74 2</tt> or <tt>St
2450: 72 69 6e 67 3c 2f 74 74 3e 29 20 61 6e 64 20 76 ring</tt>) and v
2460: 61 6c 75 65 20 28 74 68 65 20 70 61 72 61 6d 65 alue (the parame
2470: 74 65 72 27 73 20 76 61 6c 75 65 29 2e 20 54 68 ter's value). Th
2480: 65 20 6d 65 74 68 6f 64 27 73 20 72 65 73 75 6c e method's resul
2490: 74 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 54 t is returned. T
24a0: 68 65 20 6d 65 74 68 6f 64 20 69 73 20 63 61 72 he method is car
24b0: 72 69 65 64 20 6f 75 74 20 6f 6e 20 74 68 65 20 ried out on the
24c0: 73 65 72 76 65 72 2c 20 69 2e 65 2e 20 77 68 65 server, i.e. whe
24d0: 6e 20 64 69 72 65 63 74 6c 79 20 75 73 65 64 20 n directly used
24e0: 77 69 74 68 20 61 20 73 65 72 76 65 72 20 68 61 with a server ha
24f0: 6e 64 6c 65 20 74 68 65 72 65 27 73 20 6e 6f 20 ndle there's no
2500: 6e 65 74 77 6f 72 6b 20 74 72 61 66 66 69 63 20 network traffic
2510: 73 69 6e 63 65 20 74 68 65 20 6d 65 74 68 6f 64 since the method
2520: 20 69 73 20 72 75 6e 20 6c 6f 63 61 6c 6c 79 2e is run locally.
2530: 20 54 68 65 20 3c 74 74 3e 3c 69 3e 74 79 70 65 The <tt><i>type
2540: 3c 2f 69 3e 3c 2f 74 74 3e 20 70 61 72 61 6d 65 </i></tt> parame
2550: 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 70 ters should be p
2560: 72 65 66 69 78 65 64 20 77 69 74 68 20 61 6e 20 refixed with an
2570: 61 73 74 65 72 69 73 6b 20 6f 72 20 61 6e 20 65 asterisk or an e
2580: 78 63 6c 61 6d 61 74 69 6f 6e 20 6d 61 72 6b 20 xclamation mark
2590: 69 6e 20 6f 72 64 65 72 20 74 6f 20 61 63 68 69 in order to achi
25a0: 65 76 65 20 74 68 65 20 73 61 6d 65 20 73 65 6d eve the same sem
25b0: 61 6e 74 69 63 20 61 73 20 69 6e 20 61 20 6d 65 antic as in a me
25c0: 74 68 6f 64 20 64 65 66 69 6e 69 74 69 6f 6e 20 thod definition
25d0: 77 69 74 68 20 3c 74 74 3e 6f 70 63 75 61 20 61 with <tt>opcua a
25e0: 64 64 20 53 69 6d 70 6c 65 4d 65 74 68 6f 64 3c dd SimpleMethod<
25f0: 2f 74 74 3e 2e 20 4f 74 68 65 72 77 69 73 65 2c /tt>. Otherwise,
2600: 20 61 72 72 61 79 20 76 73 2e 20 73 63 61 6c 61 array vs. scala
2610: 72 20 69 6e 74 65 72 70 72 65 74 69 6f 6e 20 69 r interpretion i
2620: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 s automatically
2630: 70 65 72 66 6f 72 6d 65 64 2c 20 69 2e 65 2e 20 performed, i.e.
2640: 77 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70 when the corresp
2650: 6f 6e 64 69 6e 67 20 3c 74 74 3e 3c 69 3e 76 61 onding <tt><i>va
2660: 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 lue</i></tt> is
2670: 61 20 6c 69 73 74 2c 20 69 74 20 69 73 20 75 73 a list, it is us
2680: 65 64 20 61 73 20 61 6e 20 61 72 72 61 79 2e 20 ed as an array.
2690: 46 6f 72 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 For client objec
26a0: 74 73 2c 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 ts, asynchronous
26b0: 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 63 61 operation is ca
26c0: 72 72 69 65 64 20 6f 75 74 20 77 68 65 6e 20 74 rried out when t
26d0: 68 65 20 6c 61 73 74 20 74 77 6f 20 70 61 72 61 he last two para
26e0: 6d 65 74 65 72 73 20 61 72 65 20 3c 74 74 3e 2d meters are <tt>-
26f0: 61 73 79 6e 63 3c 2f 74 74 3e 20 61 6e 64 20 61 async</tt> and a
2700: 20 28 70 6f 73 73 69 62 6c 79 20 65 6d 70 74 79 (possibly empty
2710: 29 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 ) callback comma
2720: 6e 64 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 nd <tt><i>cmd</i
2730: 3e 3c 2f 74 74 3e 2e 20 49 6e 20 63 61 73 65 20 ></tt>. In case
2740: 6f 66 20 61 20 6e 6f 6e 2d 65 6d 70 74 79 20 63 of a non-empty c
2750: 61 6c 6c 62 61 63 6b 20 74 68 65 20 63 6f 6d 6d allback the comm
2760: 61 6e 64 20 72 65 74 75 72 6e 73 20 61 6e 20 69 and returns an i
2770: 6e 74 65 67 65 72 20 72 65 71 75 65 73 74 20 69 nteger request i
2780: 64 65 6e 74 69 66 69 65 72 2c 20 77 68 69 63 68 dentifier, which
2790: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 can be used to
27a0: 63 61 6e 63 65 6c 20 74 68 65 20 61 73 79 6e 63 cancel the async
27b0: 68 72 6f 6e 6f 75 73 20 6f 70 65 72 61 74 69 6f hronous operatio
27c0: 6e 2e 20 4f 74 68 65 72 77 69 73 65 20 74 68 65 n. Otherwise the
27d0: 20 63 61 6c 6c 20 69 73 20 70 65 72 66 6f 72 6d call is perform
27e0: 65 64 20 62 75 74 20 74 68 65 20 72 65 73 75 6c ed but the resul
27f0: 74 20 69 73 20 69 67 6e 6f 72 65 64 2e 20 53 65 t is ignored. Se
2800: 65 20 73 65 63 74 69 6f 6e 20 3c 62 3e 41 73 79 e section <b>Asy
2810: 6e 63 68 72 6f 6e 6f 75 73 20 4f 70 65 72 61 74 nchronous Operat
2820: 69 6f 6e 73 3c 2f 62 3e 20 66 6f 72 20 6d 6f 72 ions</b> for mor
2830: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a e information...
2840: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 63 61 6e 63 ..<tt>opcua canc
2850: 65 6c 20 3c 69 3e 68 61 6e 64 6c 65 20 72 65 71 el <i>handle req
2860: 69 64 20 2e 2e 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d id ...</i></tt>.
2870: 0a 0d 0a 20 20 20 20 43 61 6e 63 65 6c 73 20 6f ... Cancels o
2880: 6e 65 20 6f 72 20 6d 6f 72 65 20 61 73 79 6e 63 ne or more async
2890: 68 72 6f 6e 6f 75 73 20 72 65 71 75 65 73 74 73 hronous requests
28a0: 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f on the client o
28b0: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
28c0: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 dle</i></tt>. Th
28d0: 65 20 72 65 71 75 65 73 74 73 20 74 6f 20 62 65 e requests to be
28e0: 20 63 61 6e 63 65 6c 6c 65 64 20 61 72 65 20 69 cancelled are i
28f0: 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 dentified by the
2900: 69 72 20 69 6e 74 65 67 65 72 20 69 64 65 6e 74 ir integer ident
2910: 69 66 69 65 72 73 20 3c 74 74 3e 3c 69 3e 72 65 ifiers <tt><i>re
2920: 71 69 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 qid</i></tt>. Th
2930: 65 20 61 73 73 6f 63 69 61 74 65 64 20 63 61 6c e associated cal
2940: 6c 62 61 63 6b 73 20 61 72 65 20 65 76 61 6c 75 lbacks are evalu
2950: 61 74 65 64 20 77 69 74 68 20 61 20 74 69 6d 65 ated with a time
2960: 6f 75 74 20 73 74 61 74 75 73 20 63 6f 64 65 2e out status code.
2970: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 63 65 ....<tt>opcua ce
2980: 72 74 20 3c 69 3e 68 61 6e 64 6c 65 20 63 65 72 rt <i>handle cer
2990: 74 20 70 6b 65 79 20 3f 74 72 75 73 74 20 2e 2e t pkey ?trust ..
29a0: 2e 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 .?</i></tt>....
29b0: 20 20 20 4c 6f 61 64 73 20 74 68 65 20 63 65 72 Loads the cer
29c0: 74 69 66 69 63 61 74 65 20 3c 74 74 3e 3c 69 3e tificate <tt><i>
29d0: 63 65 72 74 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e cert</i></tt> an
29e0: 64 20 70 75 62 6c 69 63 20 6b 65 79 20 3c 74 74 d public key <tt
29f0: 3e 3c 69 3e 70 6b 65 79 3c 2f 69 3e 3c 2f 74 74 ><i>pkey</i></tt
2a00: 3e 20 69 6e 74 6f 20 74 68 65 20 63 6c 69 65 6e > into the clien
2a10: 74 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a 65 t or server obje
2a20: 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 ct <tt><i>handle
2a30: 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 42 6f 74 68 20 </i></tt>. Both
2a40: 6d 75 73 74 20 62 65 20 62 79 74 65 20 61 72 72 must be byte arr
2a50: 61 79 73 2e 20 54 68 65 20 6f 70 74 69 6f 6e 61 ays. The optiona
2a60: 6c 20 70 61 72 61 6d 65 74 65 72 73 20 3c 74 74 l parameters <tt
2a70: 3e 3c 69 3e 74 72 75 73 74 3c 2f 69 3e 3c 2f 74 ><i>trust</i></t
2a80: 74 3e 20 61 72 65 20 7a 65 72 6f 20 6f 72 20 6d t> are zero or m
2a90: 6f 72 65 20 62 79 74 65 20 61 72 72 61 79 73 0d ore byte arrays.
2aa0: 0a 77 69 74 68 20 63 65 72 74 69 63 61 74 65 73 .with certicates
2ab0: 20 77 68 69 63 68 20 61 72 65 20 61 64 64 65 64 which are added
2ac0: 20 74 6f 20 74 68 65 20 6f 62 6a 65 63 74 27 73 to the object's
2ad0: 20 74 72 75 73 74 20 6c 69 73 74 2e 20 49 66 20 trust list. If
2ae0: 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f the underlying o
2af0: 70 65 6e 36 32 35 34 31 20 6c 69 62 72 61 72 79 pen62541 library
2b00: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 does not suppor
2b10: 74 20 65 6e 63 72 79 70 74 69 6f 6e 2c 20 74 68 t encryption, th
2b20: 69 73 20 63 6f 6d 6d 61 6e 64 20 66 61 69 6c 73 is command fails
2b30: 20 77 69 74 68 20 61 6e 20 61 70 70 72 6f 70 72 with an appropr
2b40: 69 61 74 65 20 65 72 72 6f 72 20 6d 65 73 73 61 iate error messa
2b50: 67 65 2e 20 49 66 20 69 74 20 73 75 63 63 65 65 ge. If it succee
2b60: 64 73 2c 20 69 74 20 66 6f 72 63 65 73 20 61 20 ds, it forces a
2b70: 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 74 6f server object to
2b80: 20 6f 6e 6c 79 20 61 6c 6c 6f 77 20 65 6e 63 72 only allow encr
2b90: 79 70 74 65 64 20 73 65 73 73 69 6f 6e 73 2e 20 ypted sessions.
2ba0: 53 69 6d 69 6c 61 72 6c 79 2c 20 61 20 63 6c 69 Similarly, a cli
2bb0: 65 6e 74 20 6f 62 6a 65 63 74 20 74 72 69 65 73 ent object tries
2bc0: 20 74 6f 20 75 73 65 20 61 20 73 69 67 6e 2d 61 to use a sign-a
2bd0: 6e 64 2d 65 6e 63 72 79 70 74 20 65 6e 64 70 6f nd-encrypt endpo
2be0: 69 6e 74 20 6f 66 20 61 20 73 65 72 76 65 72 2e int of a server.
2bf0: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 63 68 ....<tt>opcua ch
2c00: 69 6c 64 72 65 6e 20 3c 69 3e 68 61 6e 64 6c 65 ildren <i>handle
2c10: 20 6e 6f 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e nodeid</i></tt>
2c20: 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20 .... Returns
2c30: 74 68 65 20 63 68 69 6c 64 20 6e 6f 64 65 20 69 the child node i
2c40: 64 65 6e 74 69 66 69 65 72 73 20 6f 66 20 74 68 dentifiers of th
2c50: 65 20 67 69 76 65 6e 20 6e 6f 64 65 20 69 64 65 e given node ide
2c60: 6e 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 6e ntifier <tt><i>n
2c70: 6f 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f odeid</i></tt> o
2c80: 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 n the client or
2c90: 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 server object <t
2ca0: 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c t><i>handle</i><
2cb0: 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 /tt>.....<tt>opc
2cc0: 75 61 20 63 6f 6e 6e 65 63 74 20 3c 69 3e 68 61 ua connect <i>ha
2cd0: 6e 64 6c 65 20 75 72 6c 20 3f 75 73 65 72 20 70 ndle url ?user p
2ce0: 61 73 73 77 6f 72 64 3f 3c 2f 69 3e 3c 2f 74 74 assword?</i></tt
2cf0: 3e 0d 0a 0d 0a 20 20 20 20 43 6f 6e 6e 65 63 74 >.... Connect
2d00: 73 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 62 6a s the client obj
2d10: 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c ect <tt><i>handl
2d20: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 74 6f 20 74 68 e</i></tt> to th
2d30: 65 20 55 52 4c 20 3c 74 74 3e 3c 69 3e 75 72 6c e URL <tt><i>url
2d40: 3c 2f 69 3e 3c 2f 74 74 3e 20 75 73 69 6e 67 20 </i></tt> using
2d50: 74 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 72 65 the optional cre
2d60: 64 65 6e 74 69 61 6c 73 20 3c 74 74 3e 3c 69 3e dentials <tt><i>
2d70: 75 73 65 72 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e user</i></tt> an
2d80: 64 20 3c 74 74 3e 3c 69 3e 70 61 73 73 77 6f 72 d <tt><i>passwor
2d90: 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c d</i></tt>.....<
2da0: 74 74 3e 6f 70 63 75 61 20 63 6f 6e 6e 65 63 74 tt>opcua connect
2db0: 20 3c 69 3e 68 61 6e 64 6c 65 20 75 72 6c 3c 2f <i>handle url</
2dc0: 69 3e 20 2d 61 73 79 6e 63 3c 2f 74 74 3e 0d 0a i> -async</tt>..
2dd0: 0d 0a 20 20 20 20 43 6f 6e 6e 65 63 74 73 20 74 .. Connects t
2de0: 68 65 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 he client object
2df0: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
2e00: 69 3e 3c 2f 74 74 3e 20 74 6f 20 74 68 65 20 55 i></tt> to the U
2e10: 52 4c 20 3c 74 74 3e 3c 69 3e 75 72 6c 3c 2f 69 RL <tt><i>url</i
2e20: 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6f 70 65 72 ></tt>. The oper
2e30: 61 74 69 6f 6e 20 69 73 20 61 73 79 6e 63 68 72 ation is asynchr
2e40: 6f 6e 6f 75 73 2c 20 69 2e 65 2e 20 74 68 65 20 onous, i.e. the
2e50: 63 6f 6e 6e 65 63 74 69 6f 6e 20 65 73 74 61 62 connection estab
2e60: 6c 69 73 68 6d 65 6e 74 20 74 61 6b 65 73 20 70 lishment takes p
2e70: 6c 61 63 65 20 69 6e 20 62 61 63 6b 67 72 6f 75 lace in backgrou
2e80: 6e 64 2e 20 49 74 20 63 61 6e 20 62 65 20 6f 62 nd. It can be ob
2e90: 73 65 72 76 65 64 20 77 69 74 68 20 74 68 65 20 served with the
2ea0: 6f 70 74 69 6f 6e 61 6c 20 3c 74 74 3e 6f 6e 63 optional <tt>onc
2eb0: 6c 69 65 6e 74 73 74 61 74 65 3c 2f 74 74 3e 20 lientstate</tt>
2ec0: 63 61 6c 6c 62 61 63 6b 20 6f 66 20 74 68 65 20 callback of the
2ed0: 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 2e 0d 0a client object...
2ee0: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 63 6f 6e 73 ..<tt>opcua cons
2ef0: 74 20 3f 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 20 2e t ?<i>name</i> .
2f00: 2e 2e 3f 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 ..?</tt>....
2f10: 57 69 74 68 6f 75 74 20 6f 70 74 69 6f 6e 61 6c Without optional
2f20: 20 70 61 72 61 6d 65 74 65 72 73 20 72 65 74 75 parameters retu
2f30: 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 6e 61 rns a list of na
2f40: 6d 65 73 20 66 6f 72 20 77 68 69 63 68 20 6d 61 mes for which ma
2f50: 70 70 69 6e 67 73 20 74 6f 20 6e 75 6d 65 72 69 ppings to numeri
2f60: 63 61 6c 20 76 61 6c 75 65 73 20 61 72 65 20 6b cal values are k
2f70: 6e 6f 77 6e 2e 20 49 66 20 3c 74 74 3e 3c 69 3e nown. If <tt><i>
2f80: 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 name</i></tt> is
2f90: 20 70 72 6f 76 69 64 65 64 2c 20 74 68 65 20 6e provided, the n
2fa0: 75 6d 65 72 69 63 61 6c 20 76 61 6c 75 65 20 66 umerical value f
2fb0: 6f 72 20 74 68 65 20 6e 61 6d 65 20 69 73 20 72 or the name is r
2fc0: 65 74 75 72 6e 65 64 2e 20 57 68 65 6e 20 6d 6f eturned. When mo
2fd0: 72 65 20 74 68 61 6e 20 6f 6e 65 20 3c 74 74 3e re than one <tt>
2fe0: 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e <i>name</i></tt>
2ff0: 20 69 73 20 67 69 76 65 6e 2c 20 61 20 62 69 74 is given, a bit
3000: 77 69 73 65 20 4f 52 20 6f 66 20 74 68 65 20 76 wise OR of the v
3010: 61 6c 75 65 73 20 66 6f 72 20 74 68 65 20 6e 61 alues for the na
3020: 6d 65 73 20 69 73 20 72 65 74 75 72 6e 65 64 2e mes is returned.
3030: 20 3c 74 74 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 3e <tt><i>name</i>
3040: 3c 2f 74 74 3e 20 63 61 6e 20 62 65 20 6f 70 74 </tt> can be opt
3050: 69 6f 6e 61 6c 6c 79 20 70 72 65 66 69 78 65 64 ionally prefixed
3060: 20 77 69 74 68 20 3c 74 74 3e 55 41 5f 3c 2f 74 with <tt>UA_</t
3070: 74 3e 2c 20 69 2e 65 2e 20 3c 74 74 3e 41 43 43 t>, i.e. <tt>ACC
3080: 45 53 53 4c 45 56 45 4c 4d 41 53 4b 5f 52 45 41 ESSLEVELMASK_REA
3090: 44 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 74 3e 55 D</tt> and <tt>U
30a0: 41 5f 41 43 43 45 53 53 4c 45 56 45 4c 4d 41 53 A_ACCESSLEVELMAS
30b0: 4b 5f 52 45 41 44 3c 2f 74 74 3e 20 61 72 65 20 K_READ</tt> are
30c0: 6d 61 70 70 65 64 20 74 6f 20 74 68 65 20 73 61 mapped to the sa
30d0: 6d 65 20 6e 75 6d 65 72 69 63 61 6c 20 76 61 6c me numerical val
30e0: 75 65 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 ue.....<tt>opcua
30f0: 20 64 61 74 61 73 6f 75 72 63 65 73 20 3c 69 3e datasources <i>
3100: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 0d handle</i></tt>.
3110: 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20 69 ... Returns i
3120: 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 64 61 nformation on da
3130: 74 61 20 73 6f 75 72 63 65 73 20 28 76 61 72 69 ta sources (vari
3140: 61 62 6c 65 20 6e 6f 64 65 73 20 77 69 74 68 20 able nodes with
3150: 63 61 6c 6c 62 61 63 6b 73 29 20 66 6f 72 20 74 callbacks) for t
3160: 68 65 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 he server object
3170: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
3180: 69 3e 3c 2f 74 74 3e 2e 20 46 6f 72 20 65 61 63 i></tt>. For eac
3190: 68 20 64 61 74 61 20 73 6f 75 72 63 65 20 74 77 h data source tw
31a0: 6f 20 6c 69 73 74 20 65 6c 65 6d 65 6e 74 73 20 o list elements
31b0: 20 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e 74 with node ident
31c0: 69 66 69 65 72 20 61 6e 64 20 63 61 6c 6c 62 61 ifier and callba
31d0: 63 6b 20 63 6f 6d 6d 61 6e 64 20 61 72 65 20 61 ck command are a
31e0: 64 64 65 64 20 74 6f 20 74 68 65 20 72 65 73 75 dded to the resu
31f0: 6c 74 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 lt.....<tt>opcua
3200: 20 64 61 74 65 74 69 6d 65 20 3f 73 65 63 6f 6e datetime ?secon
3210: 64 73 7c 2e 2e 2e 7c 75 74 63 20 3c 69 3e 3f 76 ds|...|utc <i>?v
3220: 61 6c 75 65 3f 3c 2f 69 3e 3f 3c 2f 74 74 3e 0d alue?</i>?</tt>.
3230: 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20 65 ... Returns e
3240: 69 74 68 65 72 20 50 4f 53 49 58 20 6f 72 20 4f ither POSIX or O
3250: 50 43 2f 55 41 20 74 69 6d 65 73 74 61 6d 70 73 PC/UA timestamps
3260: 20 61 73 20 3c 62 3e 54 63 6c 5f 57 69 64 65 49 as <b>Tcl_WideI
3270: 6e 74 3c 2f 62 3e 20 76 61 6c 75 65 73 2e 20 49 nt</b> values. I
3280: 66 20 20 63 61 6c 6c 65 64 20 77 69 74 68 6f 75 f called withou
3290: 74 20 66 75 72 74 68 65 72 20 70 61 72 61 6d 65 t further parame
32a0: 74 65 72 73 20 74 68 65 20 63 75 72 72 65 6e 74 ters the current
32b0: 20 4f 50 43 2f 55 41 20 6c 6f 63 61 6c 20 3c 74 OPC/UA local <t
32c0: 74 3e 44 61 74 65 54 69 6d 65 3c 2f 74 74 3e 20 t>DateTime</tt>
32d0: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49 66 20 is returned. If
32e0: 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 called with the
32f0: 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72 64 20 3c single keyword <
3300: 74 74 3e 75 74 63 3c 2f 74 74 3e 20 74 68 65 20 tt>utc</tt> the
3310: 63 75 72 72 65 6e 74 20 4f 50 43 2f 55 41 20 20 current OPC/UA
3320: 3c 74 74 3e 55 74 63 54 69 6d 65 3c 2f 74 74 3e <tt>UtcTime</tt>
3330: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 4f 74 is returned. Ot
3340: 68 65 72 77 69 73 65 2c 20 3c 74 74 3e 3c 69 3e herwise, <tt><i>
3350: 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 value</i></tt> i
3360: 73 20 72 65 71 75 69 72 65 64 20 61 6e 64 20 63 s required and c
3370: 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 20 50 4f onverted from PO
3380: 53 49 58 20 74 6f 20 4f 50 43 2f 55 41 20 3c 74 SIX to OPC/UA <t
3390: 74 3e 55 74 63 54 69 6d 65 3c 2f 74 74 3e 20 66 t>UtcTime</tt> f
33a0: 6f 72 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 or the keywords
33b0: 3c 74 74 3e 73 65 63 6f 6e 64 73 3c 2f 74 74 3e <tt>seconds</tt>
33c0: 2c 20 3c 74 74 3e 6d 69 6c 6c 69 73 65 63 6f 6e , <tt>millisecon
33d0: 64 73 3c 2f 74 74 3e 2c 20 61 6e 64 20 3c 74 74 ds</tt>, and <tt
33e0: 3e 6d 69 63 72 6f 73 65 63 6f 6e 64 73 3c 2f 74 >microseconds</t
33f0: 74 3e 2c 20 61 6e 64 20 66 72 6f 6d 20 4f 50 43 t>, and from OPC
3400: 2f 55 41 20 3c 74 74 3e 55 74 63 54 69 6d 65 3c /UA <tt>UtcTime<
3410: 2f 74 74 3e 20 74 6f 20 50 4f 53 49 58 20 66 6f /tt> to POSIX fo
3420: 72 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 3c r the keywords <
3430: 74 74 3e 75 6e 69 78 73 65 63 6f 6e 64 73 3c 2f tt>unixseconds</
3440: 74 74 3e 2c 20 3c 74 74 3e 75 6e 69 78 6d 69 6c tt>, <tt>unixmil
3450: 6c 69 73 3c 2f 74 74 3e 2c 20 61 6e 64 20 3c 74 lis</tt>, and <t
3460: 74 3e 75 6e 69 78 6d 69 63 72 6f 73 3c 2f 74 74 t>unixmicros</tt
3470: 3e 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e >, respectively.
3480: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 64 65 ....<tt>opcua de
3490: 66 74 79 70 65 73 20 3c 69 3e 68 61 6e 64 6c 65 ftypes <i>handle
34a0: 20 6e 73 75 72 69 20 64 65 66 73 3c 2f 69 3e 3c nsuri defs</i><
34b0: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 44 65 66 69 /tt>.... Defi
34c0: 6e 65 73 20 63 75 73 74 6f 6d 20 64 61 74 61 74 nes custom datat
34d0: 79 70 65 73 20 28 63 75 72 72 65 6e 74 6c 79 20 ypes (currently
34e0: 6f 6e 6c 79 20 73 74 72 75 63 74 75 72 65 73 29 only structures)
34f0: 20 69 6e 20 74 68 65 20 73 65 72 76 65 72 20 6f in the server o
3500: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
3510: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 dle</i></tt> and
3520: 20 6e 61 6d 65 73 70 61 63 65 20 55 52 49 20 3c namespace URI <
3530: 74 74 3e 3c 69 3e 6e 73 75 72 69 3c 2f 69 3e 3c tt><i>nsuri</i><
3540: 2f 74 74 3e 2e 20 54 68 65 20 6e 61 6d 65 73 70 /tt>. The namesp
3550: 61 63 65 20 69 73 20 63 72 65 61 74 65 64 20 77 ace is created w
3560: 69 74 68 20 74 68 65 20 3c 74 74 3e 6f 70 63 75 ith the <tt>opcu
3570: 61 20 61 64 64 20 4e 61 6d 65 73 70 61 63 65 3c a add Namespace<
3580: 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 /tt> command and
3590: 20 6d 75 73 74 20 65 78 69 73 74 20 62 65 66 6f must exist befo
35a0: 72 65 20 74 68 65 20 3c 74 74 3e 6f 70 63 75 61 re the <tt>opcua
35b0: 20 64 65 66 74 79 70 65 73 3c 2f 74 74 3e 20 63 deftypes</tt> c
35c0: 6f 6d 6d 61 6e 64 20 69 73 20 63 61 6c 6c 65 64 ommand is called
35d0: 2e 20 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 . The parameter
35e0: 3c 74 74 3e 3c 69 3e 64 65 66 73 3c 2f 69 3e 3c <tt><i>defs</i><
35f0: 2f 74 74 3e 20 64 65 73 63 72 69 62 65 73 20 74 /tt> describes t
3600: 68 65 20 73 74 72 75 63 74 75 72 65 73 20 74 6f he structures to
3610: 20 62 65 20 63 72 65 61 74 65 64 2e 20 54 68 65 be created. The
3620: 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 61 6c command does al
3630: 6c 20 6e 65 63 65 73 73 61 72 79 20 73 74 65 70 l necessary step
3640: 73 20 74 6f 20 63 72 65 61 74 65 20 74 68 65 20 s to create the
3650: 72 65 71 75 69 72 65 64 20 6e 6f 64 65 73 20 69 required nodes i
3660: 6e 20 74 68 65 20 73 65 72 76 65 72 20 6f 62 6a n the server obj
3670: 65 63 74 27 73 20 61 64 64 72 65 73 73 20 73 70 ect's address sp
3680: 61 63 65 20 61 6e 64 20 74 6f 20 73 74 6f 72 65 ace and to store
3690: 20 61 6e 20 58 4d 4c 20 62 79 74 65 73 74 72 69 an XML bytestri
36a0: 6e 67 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 ng describing th
36b0: 65 20 28 64 65 29 73 65 72 69 61 6c 69 7a 61 74 e (de)serializat
36c0: 69 6f 6e 20 66 6f 72 20 74 68 65 20 73 74 72 75 ion for the stru
36d0: 63 74 75 72 65 73 20 61 73 20 65 78 74 65 6e 73 ctures as extens
36e0: 69 6f 6e 20 6f 62 6a 65 63 74 73 2e 20 54 68 61 ion objects. Tha
36f0: 74 20 58 4d 4c 20 69 73 20 6c 61 74 65 72 20 74 t XML is later t
3700: 6f 20 62 65 20 72 65 70 61 72 73 65 64 20 77 69 o be reparsed wi
3710: 74 68 20 74 68 65 20 3c 74 74 3e 6f 70 63 75 61 th the <tt>opcua
3720: 20 67 65 6e 74 79 70 65 73 3c 2f 74 74 3e 20 63 gentypes</tt> c
3730: 6f 6d 6d 61 6e 64 2e 20 46 6f 72 20 64 65 74 61 ommand. For deta
3740: 69 6c 73 20 72 65 66 65 72 20 74 6f 20 73 65 63 ils refer to sec
3750: 74 69 6f 6e 20 3c 62 3e 44 65 66 69 6e 69 6e 67 tion <b>Defining
3760: 20 43 75 73 74 6f 6d 20 44 61 74 61 20 53 74 72 Custom Data Str
3770: 75 63 74 75 72 65 73 3c 2f 62 3e 20 62 65 6c 6f uctures</b> belo
3780: 77 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 w.....<tt>opcua
3790: 64 65 6c 65 74 65 20 3c 69 3e 68 61 6e 64 6c 65 delete <i>handle
37a0: 3c 2f 69 3e 20 4e 6f 64 65 20 3c 69 3e 6e 6f 64 </i> Node <i>nod
37b0: 65 69 64 20 3f 77 69 74 68 72 65 66 73 3f 3c 2f eid ?withrefs?</
37c0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 44 i></tt>.... D
37d0: 65 6c 65 74 65 73 20 74 68 65 20 6e 6f 64 65 20 eletes the node
37e0: 77 69 74 68 20 69 64 65 6e 74 69 66 69 65 72 20 with identifier
37f0: 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 <tt><i>nodeid</i
3800: 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 73 65 ></tt> on the se
3810: 72 76 65 72 20 6f 62 6a 65 63 74 0d 0a 3c 74 74 rver object..<tt
3820: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
3830: 74 74 3e 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 77 tt>. If <tt><i>w
3840: 69 74 68 72 65 66 73 3c 2f 69 3e 3c 2f 74 74 3e ithrefs</i></tt>
3850: 20 69 73 20 74 72 75 65 2c 20 74 68 65 20 72 65 is true, the re
3860: 66 65 72 65 6e 63 65 73 20 6f 66 20 20 74 68 65 ferences of the
3870: 20 6e 6f 64 65 20 61 72 65 20 64 65 6c 65 74 65 node are delete
3880: 64 2c 20 74 6f 6f 2e 0d 0a 0d 0a 3c 74 74 3e 6f d, too.....<tt>o
3890: 70 63 75 61 20 64 65 6c 65 74 65 20 3c 69 3e 68 pcua delete <i>h
38a0: 61 6e 64 6c 65 3c 2f 69 3e 20 52 65 66 65 72 65 andle</i> Refere
38b0: 6e 63 65 20 3c 69 3e 73 72 63 69 64 20 72 65 66 nce <i>srcid ref
38c0: 74 79 70 65 69 64 20 74 61 72 67 65 74 69 64 20 typeid targetid
38d0: 3f 66 6f 72 77 61 72 64 3f 20 3f 62 69 64 69 72 ?forward? ?bidir
38e0: 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 ?</i></tt>....
38f0: 20 20 44 65 6c 65 74 65 73 20 74 68 65 20 72 65 Deletes the re
3900: 66 65 72 65 6e 63 65 20 64 65 73 63 72 69 62 65 ference describe
3910: 64 20 62 79 20 3c 74 74 3e 3c 69 3e 73 72 63 69 d by <tt><i>srci
3920: 64 3c 2f 69 3e 3c 2f 74 74 3e 2c 20 3c 74 74 3e d</i></tt>, <tt>
3930: 3c 69 3e 72 65 66 74 79 70 65 69 64 3c 2f 69 3e <i>reftypeid</i>
3940: 3c 2f 74 74 3e 2c 20 61 6e 64 20 3c 74 74 3e 3c </tt>, and <tt><
3950: 69 3e 74 61 72 67 65 74 69 64 3c 2f 69 3e 3c 2f i>targetid</i></
3960: 74 74 3e 20 6f 6e 20 74 68 65 20 73 65 72 76 65 tt> on the serve
3970: 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e r object <tt><i>
3980: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e handle</i></tt>.
3990: 20 54 68 65 20 20 62 6f 6f 6c 65 61 6e 20 66 6c The boolean fl
39a0: 61 67 20 3c 74 74 3e 3c 69 3e 66 6f 72 77 61 72 ag <tt><i>forwar
39b0: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 73 65 6c 65 63 d</i></tt> selec
39c0: 74 73 20 20 66 6f 72 77 61 72 64 20 6f 72 20 69 ts forward or i
39d0: 6e 76 65 72 73 65 20 64 69 72 65 63 74 69 6f 6e nverse direction
39e0: 20 6f 66 20 74 68 65 20 72 65 66 65 72 65 6e 63 of the referenc
39f0: 65 20 74 6f 20 62 65 20 64 65 6c 65 74 65 64 2e e to be deleted.
3a00: 20 54 68 65 20 62 6f 6f 6c 65 61 6e 20 66 6c 61 The boolean fla
3a10: 67 20 3c 74 74 3e 3c 69 3e 62 69 64 69 72 3c 2f g <tt><i>bidir</
3a20: 69 3e 3c 2f 74 74 3e 20 72 65 71 75 65 73 74 73 i></tt> requests
3a30: 20 61 20 62 69 64 69 72 65 63 74 69 6f 6e 61 6c a bidirectional
3a40: 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 62 65 reference to be
3a50: 20 64 65 6c 65 74 65 64 2e 20 54 68 65 20 64 65 deleted. The de
3a60: 66 61 75 6c 74 20 69 73 20 74 6f 20 64 65 6c 65 fault is to dele
3a70: 74 65 20 69 6e 20 66 6f 72 77 61 72 64 20 64 69 te in forward di
3a80: 72 65 63 74 69 6f 6e 20 6f 6e 6c 79 2e 0d 0a 0d rection only....
3a90: 0a 3c 74 74 3e 6f 70 63 75 61 20 64 65 73 74 72 .<tt>opcua destr
3aa0: 6f 79 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e oy <i>handle</i>
3ab0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 44 65 73 </tt>.... Des
3ac0: 74 72 6f 79 73 20 74 68 65 20 63 6c 69 65 6e 74 troys the client
3ad0: 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a 65 63 or server objec
3ae0: 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c t <tt><i>handle<
3af0: 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 20 72 65 6c /i></tt> and rel
3b00: 65 61 73 65 73 20 20 69 74 73 20 72 65 73 6f 75 eases its resou
3b10: 72 63 65 73 2c 20 65 2e 67 2e 20 63 6c 6f 73 65 rces, e.g. close
3b20: 73 20 6e 65 74 77 6f 72 6b 20 63 6f 6e 6e 65 63 s network connec
3b30: 74 69 6f 6e 73 2c 20 74 65 61 72 73 20 64 6f 77 tions, tears dow
3b40: 6e 20 74 68 65 20 68 61 6e 64 6c 65 20 73 70 65 n the handle spe
3b50: 63 69 66 69 63 20 6e 61 6d 65 73 70 61 63 65 2c cific namespace,
3b60: 20 65 74 63 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 etc.....<tt>opc
3b70: 75 61 20 64 69 63 74 5f 69 6e 69 74 20 3c 69 3e ua dict_init <i>
3b80: 6e 61 6d 65 20 62 6f 64 79 20 2e 2e 2e 3c 2f 69 name body ...</i
3b90: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 48 65 ></tt>.... He
3ba0: 6c 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f lper function to
3bb0: 20 63 72 65 61 74 65 20 61 6e 64 20 72 65 74 75 create and retu
3bc0: 72 6e 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 rn a dictionary
3bd0: 66 6f 72 20 74 68 65 20 64 61 74 61 20 74 79 70 for the data typ
3be0: 65 20 3c 74 74 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 e <tt><i>name</i
3bf0: 3e 3c 2f 74 74 3e 20 77 68 69 63 68 20 66 69 72 ></tt> which fir
3c00: 73 74 20 69 73 20 70 72 69 6d 65 64 20 77 69 74 st is primed wit
3c10: 68 20 3c 74 74 3e 6f 70 63 75 61 20 74 79 70 65 h <tt>opcua type
3c20: 73 20 65 6d 70 74 79 2e 2e 2e 3c 2f 74 74 3e 20 s empty...</tt>
3c30: 61 6e 64 20 66 69 6e 61 6c 6c 79 20 6d 6f 64 69 and finally modi
3c40: 66 69 65 64 20 62 79 20 74 68 65 20 54 63 6c 20 fied by the Tcl
3c50: 63 6f 64 65 20 69 6e 20 3c 74 74 3e 3c 69 3e 62 code in <tt><i>b
3c60: 6f 64 79 3c 2f 69 3e 3c 2f 74 74 3e 20 77 69 74 ody</i></tt> wit
3c70: 68 20 74 68 65 20 73 61 6d 65 20 72 75 6c 65 73 h the same rules
3c80: 20 61 73 20 69 6e 20 74 68 65 20 3c 74 74 3e 64 as in the <tt>d
3c90: 69 63 74 20 77 69 74 68 3c 2f 74 74 3e 20 63 6f ict with</tt> co
3ca0: 6d 6d 61 6e 64 2e 20 54 68 65 20 70 61 72 61 6d mmand. The param
3cb0: 65 74 65 72 73 20 66 6f 6c 6c 6f 77 69 6e 67 20 eters following
3cc0: 3c 74 74 3e 3c 69 3e 62 6f 64 79 3c 2f 69 3e 3c <tt><i>body</i><
3cd0: 2f 74 74 3e 20 61 72 65 20 61 73 73 69 67 6e 65 /tt> are assigne
3ce0: 64 20 74 6f 20 74 68 65 20 6c 69 73 74 20 3c 74 d to the list <t
3cf0: 74 3e 3c 69 3e 61 72 67 73 3c 2f 69 3e 3c 2f 74 t><i>args</i></t
3d00: 74 3e 20 61 73 20 69 6e 20 61 20 3c 74 74 3e 70 t> as in a <tt>p
3d10: 72 6f 63 3c 2f 74 74 3e 2e 20 49 6e 20 63 6f 6e roc</tt>. In con
3d20: 74 72 61 73 74 20 74 6f 20 3c 74 74 3e 64 69 63 trast to <tt>dic
3d30: 74 20 77 69 74 68 3c 2f 74 74 3e 2c 20 3c 74 74 t with</tt>, <tt
3d40: 3e 3c 69 3e 62 6f 64 79 3c 2f 69 3e 3c 2f 74 74 ><i>body</i></tt
3d50: 3e 20 69 73 20 65 78 65 63 75 74 65 64 20 69 6e > is executed in
3d60: 20 61 20 63 61 6c 6c 20 66 72 61 6d 65 20 6f 66 a call frame of
3d70: 20 69 74 73 20 6f 77 6e 2e 0d 0a 0d 0a 3c 74 74 its own.....<tt
3d80: 3e 6f 70 63 75 61 20 64 69 73 63 6f 6e 6e 65 63 >opcua disconnec
3d90: 74 20 3c 69 3e 68 61 6e 64 6c 65 20 3f 3c 2f 69 t <i>handle ?</i
3da0: 3e 2d 61 73 79 6e 63 3c 69 3e 3f 3c 2f 69 3e 3c >-async<i>?</i><
3db0: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 44 69 73 63 /tt>.... Disc
3dc0: 6f 6e 6e 65 63 74 73 20 74 68 65 20 63 6c 69 65 onnects the clie
3dd0: 6e 74 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 nt object <tt><i
3de0: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
3df0: 2e 20 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 61 . If the optiona
3e00: 6c 20 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e l parameter <tt>
3e10: 2d 61 73 79 6e 63 3c 2f 74 74 3e 20 69 73 20 73 -async</tt> is s
3e20: 70 65 63 69 66 69 65 64 2c 20 74 68 65 20 6f 70 pecified, the op
3e30: 65 72 61 74 69 6f 6e 20 69 73 20 63 61 72 72 69 eration is carri
3e40: 65 64 20 6f 75 74 20 69 6e 20 61 73 79 6e 63 68 ed out in asynch
3e50: 72 6f 6e 6f 75 73 20 6d 6f 64 65 2e 0d 0a 0d 0a ronous mode.....
3e60: 3c 74 74 3e 6f 70 63 75 61 20 65 6e 64 70 6f 69 <tt>opcua endpoi
3e70: 6e 74 73 20 3c 69 3e 3f 75 72 6c 3f 3c 2f 69 3e nts <i>?url?</i>
3e80: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 51 75 65 </tt>.... Que
3e90: 72 69 65 73 20 74 68 65 20 6c 6f 63 61 6c 20 4f ries the local O
3ea0: 50 43 2f 55 41 20 73 65 72 76 65 72 20 3c 74 74 PC/UA server <tt
3eb0: 3e 6f 70 63 2e 74 63 70 3a 2f 2f 6c 6f 63 61 6c >opc.tcp://local
3ec0: 68 6f 73 74 3a 34 38 34 30 3c 2f 74 74 3e 20 6f host:4840</tt> o
3ed0: 72 20 74 68 65 20 73 65 72 76 65 72 20 73 70 65 r the server spe
3ee0: 63 69 66 69 65 64 20 62 79 20 74 68 65 20 3c 74 cified by the <t
3ef0: 74 3e 3c 69 3e 75 72 6c 3c 2f 69 3e 3c 2f 74 74 t><i>url</i></tt
3f00: 3e 20 70 61 72 61 6d 65 74 65 72 20 66 6f 72 20 > parameter for
3f10: 65 6e 64 70 6f 69 6e 74 73 20 61 6e 64 20 72 65 endpoints and re
3f20: 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f 66 20 turns a list of
3f30: 55 52 4c 73 20 64 65 73 63 72 69 62 69 6e 67 20 URLs describing
3f40: 74 68 65 20 65 6e 64 70 6f 69 6e 74 73 20 66 6f the endpoints fo
3f50: 75 6e 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 und.....<tt>opcu
3f60: 61 20 67 65 6e 73 74 75 62 73 20 3c 69 3e 68 61 a genstubs <i>ha
3f70: 6e 64 6c 65 20 3f 73 74 72 69 70 20 73 74 75 62 ndle ?strip stub
3f80: 73 74 73 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74 sts ...?</i></tt
3f90: 3e 0d 0a 0d 0a 20 20 20 20 47 65 6e 65 72 61 74 >.... Generat
3fa0: 65 73 20 73 74 75 62 73 20 66 6f 72 20 6d 65 74 es stubs for met
3fb0: 68 6f 64 73 20 69 6e 20 74 68 65 20 68 61 6e 64 hods in the hand
3fc0: 6c 65 20 73 70 65 63 69 66 69 63 20 61 64 64 72 le specific addr
3fd0: 65 73 73 20 73 70 61 63 65 20 64 65 72 69 76 65 ess space derive
3fe0: 64 20 20 66 72 6f 6d 20 74 68 65 20 63 6c 69 65 d from the clie
3ff0: 6e 74 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a nt or server obj
4000: 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c ect <tt><i>handl
4010: 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 e</i></tt>. The
4020: 61 64 64 72 65 73 73 20 73 70 61 63 65 20 69 73 address space is
4030: 20 74 72 61 76 65 72 73 65 64 20 61 6e 64 20 62 traversed and b
4040: 72 6f 77 73 65 20 70 61 74 68 73 20 61 6e 64 20 rowse paths and
4050: 6e 6f 64 65 20 63 6c 61 73 73 20 70 61 74 68 73 node class paths
4060: 20 61 72 65 20 61 63 63 75 6d 75 6c 61 74 65 64 are accumulated
4070: 2e 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 . The resulting
4080: 62 72 6f 77 73 65 20 70 61 74 68 73 20 6f 70 74 browse paths opt
4090: 69 6f 6e 61 6c 6c 79 20 67 65 74 20 74 68 65 20 ionally get the
40a0: 70 72 65 66 69 78 20 3c 74 74 3e 3c 69 3e 73 74 prefix <tt><i>st
40b0: 72 69 70 3c 2f 69 3e 3c 2f 74 74 3e 20 73 74 72 rip</i></tt> str
40c0: 69 70 70 65 64 20 6f 66 66 20 66 72 6f 6d 20 74 ipped off from t
40d0: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 61 6e 64 he beginning and
40e0: 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 69 6c 74 optionally filt
40f0: 65 72 65 64 20 75 73 69 6e 67 20 74 68 65 20 67 ered using the g
4100: 6c 6f 62 20 70 61 74 74 65 72 6e 73 20 66 6f 6c lob patterns fol
4110: 6c 6f 77 69 6e 67 20 74 68 65 20 3c 74 74 3e 3c lowing the <tt><
4120: 69 3e 73 74 72 69 70 3c 2f 69 3e 3c 2f 74 74 3e i>strip</i></tt>
4130: 20 70 61 72 61 6d 65 74 65 72 2e 20 49 66 20 3c parameter. If <
4140: 74 74 3e 3c 69 3e 73 75 62 73 74 73 3c 2f 69 3e tt><i>substs</i>
4150: 3c 2f 74 74 3e 20 69 73 20 6e 6f 74 20 65 6d 70 </tt> is not emp
4160: 74 79 20 69 74 0d 0a 73 70 65 63 69 66 69 65 73 ty it..specifies
4170: 20 70 61 69 72 77 69 73 65 20 72 65 67 65 78 70 pairwise regexp
4180: 73 20 61 6e 64 20 73 75 62 73 74 69 74 75 74 69 s and substituti
4190: 6f 6e 73 20 77 68 69 63 68 20 61 72 65 20 61 70 ons which are ap
41a0: 70 6c 69 65 64 20 6f 6e 20 74 68 65 20 62 72 6f plied on the bro
41b0: 77 73 65 0d 0a 70 61 74 68 73 20 66 6f 72 20 74 wse..paths for t
41c0: 68 65 20 66 69 6e 61 6c 20 70 72 6f 63 65 64 75 he final procedu
41d0: 72 65 20 6e 61 6d 65 73 2e 20 46 6f 72 20 61 6c re names. For al
41e0: 6c 20 6e 6f 64 65 73 20 6d 61 74 63 68 69 6e 67 l nodes matching
41f0: 20 74 68 65 20 6e 6f 64 65 20 63 6c 61 73 73 20 the node class
4200: 70 61 74 68 20 70 61 74 74 65 72 6e 20 3c 74 74 path pattern <tt
4210: 3e 4f 62 6a 65 63 74 3c 2f 74 74 3e 2f 3c 74 74 >Object</tt>/<tt
4220: 3e 4d 65 74 68 6f 64 3c 2f 74 74 3e 20 74 68 65 >Method</tt> the
4230: 20 6f 70 74 69 6f 6e 61 6c 20 3c 74 74 3e 49 6e optional <tt>In
4240: 70 75 74 41 72 67 75 6d 65 6e 74 73 3c 2f 74 74 putArguments</tt
4250: 3e 20 61 6e 64 20 20 3c 74 74 3e 4f 75 74 70 75 > and <tt>Outpu
4260: 74 41 72 67 75 6d 65 6e 74 73 3c 2f 74 74 3e 20 tArguments</tt>
4270: 63 68 69 6c 64 20 6e 6f 64 65 73 20 61 72 65 20 child nodes are
4280: 72 65 74 72 69 65 76 65 64 20 61 6e 64 20 73 74 retrieved and st
4290: 75 62 20 70 72 6f 63 65 64 75 72 65 73 20 61 72 ub procedures ar
42a0: 65 20 77 72 69 74 74 65 6e 20 75 73 69 6e 67 20 e written using
42b0: 74 68 65 20 62 72 6f 77 73 65 20 70 61 74 68 20 the browse path
42c0: 61 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 6e 66 and argument inf
42d0: 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 0d 0a 3c 74 74 ormation.....<tt
42e0: 3e 6f 70 63 75 61 20 67 65 6e 74 79 70 65 73 20 >opcua gentypes
42f0: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
4300: 74 3e 0d 0a 0d 0a 20 20 20 20 47 65 6e 65 72 61 t>.... Genera
4310: 74 65 73 20 63 75 73 74 6f 6d 20 64 61 74 61 20 tes custom data
4320: 74 79 70 65 20 6d 61 70 70 69 6e 67 73 20 75 73 type mappings us
4330: 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 ing information
4340: 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61 6e obtained from an
4350: 61 6c 79 7a 69 6e 67 20 74 68 65 20 61 64 64 72 alyzing the addr
4360: 65 73 73 20 73 70 61 63 65 20 64 65 72 69 76 65 ess space derive
4370: 64 20 66 72 6f 6d 20 74 68 65 20 63 6c 69 65 6e d from the clien
4380: 74 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a 65 t or server obje
4390: 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 ct <tt><i>handle
43a0: 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 69 73 20 </i></tt>. This
43b0: 66 65 61 74 75 72 65 20 69 73 20 68 69 67 68 6c feature is highl
43c0: 79 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 y experimental a
43d0: 6e 64 20 72 65 71 75 69 72 65 73 20 74 68 65 20 nd requires the
43e0: 20 74 44 4f 4d 20 70 61 63 6b 61 67 65 20 66 6f tDOM package fo
43f0: 72 20 70 61 72 73 69 6e 67 20 58 4d 4c 2e 20 49 r parsing XML. I
4400: 74 20 63 61 6e 20 63 72 65 61 74 65 20 65 6e 63 t can create enc
4410: 6f 64 65 72 73 2f 64 65 63 6f 64 65 72 73 20 66 oders/decoders f
4420: 6f 72 20 73 69 6d 70 6c 65 20 73 74 72 75 63 74 or simple struct
4430: 75 72 65 20 64 61 74 61 20 74 79 70 65 73 20 64 ure data types d
4440: 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 61 64 efined in the ad
4450: 64 72 65 73 73 20 73 70 61 63 65 20 77 68 69 63 dress space whic
4460: 68 20 70 65 72 66 6f 72 6d 20 61 20 6d 61 70 70 h perform a mapp
4470: 69 6e 67 20 66 72 6f 6d 2f 74 6f 20 54 63 6c 20 ing from/to Tcl
4480: 64 69 63 74 69 6f 6e 61 72 69 65 73 2e 20 46 6f dictionaries. Fo
4490: 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d r further inform
44a0: 61 74 69 6f 6e 2c 20 73 65 65 20 74 68 65 20 3c ation, see the <
44b0: 62 3e 73 65 72 76 65 72 5f 74 79 70 65 73 2e 74 b>server_types.t
44c0: 63 6c 3c 2f 62 3e 20 61 6e 64 20 3c 62 3e 63 6c cl</b> and <b>cl
44d0: 69 65 6e 74 5f 74 79 70 65 73 2e 74 63 6c 3c 2f ient_types.tcl</
44e0: 62 3e 20 73 63 72 69 70 74 73 20 69 6e 20 74 68 b> scripts in th
44f0: 65 20 65 78 61 6d 70 6c 65 73 20 64 69 72 65 63 e examples direc
4500: 74 6f 72 79 2e 20 49 66 20 74 68 69 73 20 63 6f tory. If this co
4510: 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 2c 20 69 mmand is used, i
4520: 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 76 6f t should be invo
4530: 6b 65 64 20 70 72 69 6f 72 20 74 6f 20 63 72 65 ked prior to cre
4540: 61 74 69 6e 67 20 6d 65 74 68 6f 64 20 73 74 75 ating method stu
4550: 62 73 2c 20 73 69 6e 63 65 20 6d 65 74 68 6f 64 bs, since method
4560: 73 20 6d 61 79 20 72 65 71 75 69 72 65 20 63 75 s may require cu
4570: 73 74 6f 6d 20 64 61 74 61 20 74 79 70 65 73 20 stom data types
4580: 69 6e 20 74 68 65 69 72 20 61 72 67 75 6d 65 6e in their argumen
4590: 74 73 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 ts.....<tt>opcua
45a0: 20 69 6e 66 6f 20 3c 69 3e 3f 68 61 6e 64 6c 65 info <i>?handle
45b0: 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 ?</i></tt>....
45c0: 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 6f 62 Returns the ob
45d0: 6a 65 63 74 20 74 79 70 65 20 6f 66 20 3c 74 74 ject type of <tt
45e0: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
45f0: 74 74 3e 2c 20 65 69 74 68 65 72 20 3c 74 74 3e tt>, either <tt>
4600: 63 6c 69 65 6e 74 3c 2f 74 74 3e 20 6f 72 20 3c client</tt> or <
4610: 74 74 3e 73 65 72 76 65 72 3c 2f 74 74 3e 2e 20 tt>server</tt>.
4620: 49 66 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 If <tt><i>handle
4630: 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 6f 6d 69 </i></tt> is omi
4640: 74 74 65 64 2c 20 61 20 6c 69 73 74 20 6f 66 20 tted, a list of
4650: 61 6c 6c 20 6b 6e 6f 77 6e 20 63 6c 69 65 6e 74 all known client
4660: 20 61 6e 64 20 73 65 72 76 65 72 20 6f 62 6a 65 and server obje
4670: 63 74 20 68 61 6e 64 6c 65 73 20 69 73 20 72 65 ct handles is re
4680: 74 75 72 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f turned.....<tt>o
4690: 70 63 75 61 20 6c 6f 61 64 65 72 20 3c 69 3e 68 pcua loader <i>h
46a0: 61 6e 64 6c 65 20 78 6d 6c 20 3f 65 76 61 72 20 andle xml ?evar
46b0: 72 76 61 72 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a rvar?</i></tt>..
46c0: 0d 0a 20 20 20 20 49 6d 70 6f 72 74 73 20 61 20 .. Imports a
46d0: 6e 6f 64 65 20 73 65 74 20 66 72 6f 6d 20 61 6e node set from an
46e0: 20 58 4d 4c 20 73 74 72 69 6e 67 20 3c 74 74 3e XML string <tt>
46f0: 3c 69 3e 78 6d 6c 3c 2f 69 3e 3c 2f 74 74 3e 20 <i>xml</i></tt>
4700: 69 6e 74 6f 20 74 68 65 20 73 65 72 76 65 72 20 into the server
4710: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
4720: 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 61 6d 6f 75 ></tt>. The amou
4730: 6e 74 20 6f 66 20 69 6d 70 6f 72 74 65 64 20 69 nt of imported i
4740: 6e 66 6f 72 6d 61 74 69 6f 6e 20 68 69 67 68 6c nformation highl
4750: 79 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 y depends on the
4760: 20 62 75 69 6c 64 20 6f 70 74 69 6f 6e 73 20 6f build options o
4770: 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 f the underlying
4780: 20 6f 70 65 6e 36 32 35 34 31 20 6c 69 62 72 61 open62541 libra
4790: 72 79 2e 20 4e 6f 64 65 20 64 65 73 63 72 69 70 ry. Node descrip
47a0: 74 69 6f 6e 73 20 77 68 69 63 68 20 63 61 6e 27 tions which can'
47b0: 74 20 62 65 20 73 75 70 70 6f 72 74 65 64 20 61 t be supported a
47c0: 72 65 20 69 67 6e 6f 72 65 64 20 61 6e 64 20 69 re ignored and i
47d0: 6e 74 65 72 6e 61 6c 6c 79 20 61 63 63 75 6d 75 nternally accumu
47e0: 6c 61 74 65 64 2e 20 46 6f 72 20 61 6e 61 6c 79 lated. For analy
47f0: 73 69 73 2c 20 74 68 61 74 20 69 6e 66 6f 72 6d sis, that inform
4800: 61 74 69 6f 6e 20 69 73 20 6d 61 64 65 20 61 76 ation is made av
4810: 61 69 6c 61 62 6c 65 20 62 79 20 74 68 65 20 3c ailable by the <
4820: 74 74 3e 3c 69 3e 65 76 61 72 3c 2f 69 3e 3c 2f tt><i>evar</i></
4830: 74 74 3e 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 72 tt> and <tt><i>r
4840: 76 61 72 3c 2f 69 3e 3c 2f 74 74 3e 20 72 65 73 var</i></tt> res
4850: 75 6c 74 20 76 61 72 69 61 62 6c 65 73 2c 20 77 ult variables, w
4860: 68 69 63 68 20 72 65 63 65 69 76 65 20 61 20 6c hich receive a l
4870: 69 73 74 20 69 6e 20 3c 74 74 3e 61 72 72 61 79 ist in <tt>array
4880: 20 73 65 74 3c 2f 74 74 3e 20 66 6f 72 6d 20 77 set</tt> form w
4890: 69 74 68 20 65 61 63 68 20 6b 65 79 20 62 65 69 ith each key bei
48a0: 6e 67 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e ng the node iden
48b0: 74 69 66 69 65 72 20 61 6e 64 20 65 61 63 68 20 tifier and each
48c0: 76 61 6c 75 65 20 61 20 64 69 63 74 69 6f 6e 61 value a dictiona
48d0: 72 79 20 77 69 74 68 20 6e 6f 64 65 20 69 6e 66 ry with node inf
48e0: 6f 72 6d 61 74 69 6f 6e 20 28 66 6f 72 20 3c 74 ormation (for <t
48f0: 74 3e 3c 69 3e 65 76 61 72 3c 2f 69 3e 3c 2f 74 t><i>evar</i></t
4900: 74 3e 29 20 69 6e 63 6c 75 64 69 6e 67 20 61 6e t>) including an
4910: 20 65 72 72 6f 72 20 64 65 73 63 72 69 70 74 69 error descripti
4920: 6f 6e 2c 20 61 6e 64 20 72 65 66 65 72 65 6e 63 on, and referenc
4930: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 28 66 e information (f
4940: 6f 72 20 3c 74 74 3e 3c 69 3e 72 76 61 72 3c 2f or <tt><i>rvar</
4950: 69 3e 3c 2f 74 74 3e 29 2e 20 41 20 72 65 73 75 i></tt>). A resu
4960: 6c 74 20 69 73 20 72 65 74 75 72 6e 65 64 20 77 lt is returned w
4970: 68 69 63 68 20 69 73 20 61 20 6c 69 73 74 20 69 hich is a list i
4980: 6e 20 3c 74 74 3e 61 72 72 61 79 20 73 65 74 3c n <tt>array set<
4990: 2f 74 74 3e 20 66 6f 72 6d 20 77 69 74 68 20 65 /tt> form with e
49a0: 61 63 68 20 6b 65 79 20 62 65 69 6e 67 20 74 68 ach key being th
49b0: 65 20 6d 65 74 68 6f 64 27 73 20 69 6d 70 6c 65 e method's imple
49c0: 6d 65 6e 74 61 74 69 6f 6e 20 70 72 6f 63 20 6e mentation proc n
49d0: 61 6d 65 20 61 6e 64 20 65 61 63 68 20 76 61 6c ame and each val
49e0: 75 65 20 61 20 6c 69 73 74 20 6f 66 20 6e 6f 64 ue a list of nod
49f0: 65 20 69 64 65 6e 74 69 66 69 65 72 73 20 77 68 e identifiers wh
4a00: 69 63 68 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 ich will invoke
4a10: 74 68 65 20 72 65 73 70 65 63 74 69 76 65 20 69 the respective i
4a20: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0d 0a mplementation...
4a30: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 6c 6f 67 20 ..<tt>opcua log
4a40: 3c 69 3e 3f 63 6f 6d 6d 61 6e 64 3f 3c 2f 69 3e <i>?command?</i>
4a50: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 </tt>.... Ret
4a60: 72 69 65 76 65 73 20 6f 72 20 73 65 74 73 20 74 rieves or sets t
4a70: 68 65 20 63 61 6c 6c 62 61 63 6b 20 3c 74 74 3e he callback <tt>
4a80: 3c 69 3e 63 6f 6d 6d 61 6e 64 3c 2f 69 3e 3c 2f <i>command</i></
4a90: 74 74 3e 20 66 6f 72 20 6f 70 65 6e 36 32 35 34 tt> for open6254
4aa0: 31 20 6c 6f 67 20 6d 65 73 73 61 67 65 73 2e 20 1 log messages.
4ab0: 57 68 65 6e 20 61 20 6c 6f 67 20 6d 65 73 73 61 When a log messa
4ac0: 67 65 20 69 73 20 69 73 73 75 65 64 2c 20 3c 74 ge is issued, <t
4ad0: 74 3e 3c 69 3e 63 6f 6d 6d 61 6e 64 3c 2f 69 3e t><i>command</i>
4ae0: 3c 2f 74 74 3e 20 69 73 20 69 6e 76 6f 6b 65 64 </tt> is invoked
4af0: 20 77 69 74 68 20 74 68 72 65 65 20 70 61 72 61 with three para
4b00: 6d 65 74 65 72 73 20 61 70 70 65 6e 64 65 64 3a meters appended:
4b10: 20 74 68 65 20 6c 6f 67 20 6c 65 76 65 6c 2c 20 the log level,
4b20: 65 2e 67 2e 20 3c 74 74 3e 69 6e 66 6f 3c 2f 74 e.g. <tt>info</t
4b30: 74 3e 2c 20 3c 74 74 3e 77 61 72 6e 69 6e 67 3c t>, <tt>warning<
4b40: 2f 74 74 3e 2c 20 74 68 65 20 63 61 74 65 67 6f /tt>, the catego
4b50: 72 79 2c 20 65 2e 67 2e 20 3c 74 74 3e 6e 65 74 ry, e.g. <tt>net
4b60: 77 6f 72 6b 3c 2f 74 74 3e 2c 20 3c 74 74 3e 63 work</tt>, <tt>c
4b70: 6c 69 65 6e 74 3c 2f 74 74 3e 2c 20 61 6e 64 20 lient</tt>, and
4b80: 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 20 the text of the
4b90: 6c 6f 67 20 6d 65 73 73 61 67 65 2e 0d 0a 0d 0a log message.....
4ba0: 3c 74 74 3e 6f 70 63 75 61 20 6d 61 70 73 74 72 <tt>opcua mapstr
4bb0: 75 63 74 20 3c 69 3e 68 61 6e 64 6c 65 20 3f 6e uct <i>handle ?n
4bc0: 6f 64 65 69 64 20 64 65 73 74 69 64 20 6d 65 6d odeid destid mem
4bd0: 62 65 72 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74 ber ...?</i></tt
4be0: 3e 0d 0a 0d 0a 20 20 20 20 41 64 64 73 20 76 61 >.... Adds va
4bf0: 72 69 61 62 6c 65 20 6e 6f 64 65 73 20 77 69 74 riable nodes wit
4c00: 68 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 64 61 h an internal da
4c10: 74 61 20 73 6f 75 72 63 65 20 6d 61 70 70 69 6e ta source mappin
4c20: 67 20 74 6f 20 74 68 65 20 6d 65 6d 62 65 72 73 g to the members
4c30: 20 6f 66 20 74 68 65 20 73 74 72 75 63 74 75 72 of the structur
4c40: 65 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 e identified by
4c50: 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 <tt><i>nodeid</i
4c60: 3e 3c 2f 74 74 3e 20 69 6e 20 74 68 65 20 73 65 ></tt> in the se
4c70: 72 76 65 72 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 rver <tt><i>hand
4c80: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 49 74 20 le</i></tt>. It
4c90: 61 6c 6c 6f 77 73 20 63 6c 69 65 6e 74 73 20 74 allows clients t
4ca0: 6f 20 72 65 61 64 20 74 68 65 20 73 74 72 75 63 o read the struc
4cb0: 74 75 72 65 20 65 6c 65 6d 65 6e 74 20 77 69 73 ture element wis
4cc0: 65 20 65 76 65 6e 20 77 68 65 6e 20 74 68 65 72 e even when ther
4cd0: 65 27 73 20 6e 6f 20 63 6c 69 65 6e 74 20 73 75 e's no client su
4ce0: 70 70 6f 72 74 20 66 6f 72 20 64 65 73 65 72 69 pport for deseri
4cf0: 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 alization of the
4d00: 20 77 68 6f 6c 65 20 73 74 72 75 63 74 75 72 65 whole structure
4d10: 2e 20 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 2c . Alternatively,
4d20: 20 69 66 20 70 61 69 72 73 20 6f 66 20 3c 74 74 if pairs of <tt
4d30: 3e 3c 69 3e 64 65 73 74 69 64 3c 2f 69 3e 3c 2f ><i>destid</i></
4d40: 74 74 3e 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 6d tt> and <tt><i>m
4d50: 65 6d 62 65 72 3c 2f 69 3e 3c 2f 74 74 3e 20 61 ember</i></tt> a
4d60: 72 65 20 70 72 6f 76 69 64 65 64 2c 20 6e 6f 20 re provided, no
4d70: 61 64 64 69 74 69 6f 6e 61 6c 20 76 61 72 69 61 additional varia
4d80: 62 6c 65 20 6e 6f 64 65 73 20 61 72 65 20 63 72 ble nodes are cr
4d90: 65 61 74 65 64 20 62 75 74 20 74 68 65 20 6d 61 eated but the ma
4da0: 70 70 69 6e 67 20 69 73 20 65 73 74 61 62 6c 69 pping is establi
4db0: 73 68 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 shed between the
4dc0: 20 76 61 72 69 61 62 6c 65 20 69 64 65 6e 74 69 variable identi
4dd0: 66 69 65 64 20 62 79 20 3c 74 74 3e 3c 69 3e 64 fied by <tt><i>d
4de0: 65 73 74 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 61 estid</i></tt> a
4df0: 6e 64 20 74 68 65 20 73 74 72 75 63 74 75 72 65 nd the structure
4e00: 20 66 69 65 6c 64 20 3c 74 74 3e 3c 69 3e 6d 65 field <tt><i>me
4e10: 6d 62 65 72 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 66 mber</i></tt> of
4e20: 20 73 74 72 75 63 74 75 72 65 20 3c 74 74 3e 3c structure <tt><
4e30: 69 3e 6e 6f 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 i>nodeid</i></tt
4e40: 3e 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 6e 6f 64 >. If <tt><i>nod
4e50: 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 eid</i></tt> and
4e60: 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 61 6d following param
4e70: 65 74 65 72 73 20 61 72 65 20 6c 65 66 74 20 6f eters are left o
4e80: 75 74 2c 20 74 68 65 20 63 75 72 72 65 6e 74 20 ut, the current
4e90: 6d 61 70 70 69 6e 67 73 20 61 72 65 20 72 65 74 mappings are ret
4ea0: 75 72 6e 65 64 20 61 73 20 61 20 6c 69 73 74 20 urned as a list
4eb0: 77 68 65 72 65 20 65 61 63 68 20 74 68 72 65 65 where each three
4ec0: 20 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 6d 61 elements are ma
4ed0: 64 65 20 75 70 20 6f 66 20 64 65 73 74 69 6e 61 de up of destina
4ee0: 74 69 6f 6e 20 6e 6f 64 65 20 69 64 65 6e 74 69 tion node identi
4ef0: 66 69 65 72 2c 20 73 74 72 75 63 74 75 72 65 20 fier, structure
4f00: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 2c node identifier,
4f10: 20 61 6e 64 20 73 74 72 75 63 74 75 72 65 20 6d and structure m
4f20: 65 6d 62 65 72 20 6e 61 6d 65 2e 20 3c 62 3e 57 ember name. <b>W
4f30: 61 72 6e 69 6e 67 3a 3c 2f 62 3e 20 6e 6f 20 6c arning:</b> no l
4f40: 6f 67 69 63 20 69 73 20 62 75 69 6c 74 20 69 6e ogic is built in
4f50: 20 74 6f 20 70 72 65 76 65 6e 74 20 66 72 6f 6d to prevent from
4f60: 20 63 72 65 61 74 69 6e 67 20 6d 75 6c 74 69 70 creating multip
4f70: 6c 65 20 6d 61 70 70 69 6e 67 73 2c 20 77 68 65 le mappings, whe
4f80: 6e 20 76 61 72 69 61 62 6c 65 20 6e 6f 64 65 73 n variable nodes
4f90: 20 61 72 65 20 74 6f 20 62 65 20 61 64 64 65 64 are to be added
4fa0: 2e 20 54 68 75 73 2c 20 74 68 65 20 75 73 65 72 . Thus, the user
4fb0: 20 73 68 6f 75 6c 64 20 65 6e 73 75 72 65 20 69 should ensure i
4fc0: 6e 20 74 68 69 73 20 63 61 73 65 20 74 6f 20 63 n this case to c
4fd0: 61 6c 6c 20 74 68 65 20 3c 74 74 3e 6d 61 70 73 all the <tt>maps
4fe0: 74 72 75 63 74 3c 2f 74 74 3e 20 73 75 62 63 6f truct</tt> subco
4ff0: 6d 6d 61 6e 64 20 6f 6e 6c 79 20 6f 6e 63 65 20 mmand only once
5000: 70 65 72 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 per <tt><i>nodei
5010: 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 53 69 6e 63 d</i></tt>. Sinc
5020: 65 20 61 20 6e 6f 64 65 20 6f 6e 6c 79 20 73 75 e a node only su
5030: 70 70 6f 72 74 73 20 61 20 73 69 6e 67 6c 65 20 pports a single
5040: 64 61 74 61 20 73 6f 75 72 63 65 2c 20 61 6e 20 data source, an
5050: 65 72 72 6f 72 20 69 73 20 72 61 69 73 65 64 20 error is raised
5060: 77 68 65 6e 20 61 20 6e 6f 64 65 20 61 6c 72 65 when a node alre
5070: 61 64 79 20 68 61 73 20 61 20 63 61 6c 6c 62 61 ady has a callba
5080: 63 6b 20 69 6e 73 74 61 6c 6c 65 64 20 66 72 6f ck installed fro
5090: 6d 20 74 68 65 20 3c 74 74 3e 61 64 64 3c 2f 74 m the <tt>add</t
50a0: 74 3e 20 6f 72 20 3c 74 74 3e 64 61 74 61 73 6f t> or <tt>dataso
50b0: 75 72 63 65 73 3c 2f 74 74 3e 20 73 75 62 63 6f urces</tt> subco
50c0: 6d 6d 61 6e 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 mmand.....<tt>op
50d0: 63 75 61 20 6d 65 74 68 6f 64 73 20 3c 69 3e 68 cua methods <i>h
50e0: 61 6e 64 6c 65 20 3f 6e 6f 64 65 69 64 20 6f 75 andle ?nodeid ou
50f0: 74 74 79 70 65 20 63 6d 64 3c 2f 69 3e 3c 2f 74 ttype cmd</i></t
5100: 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e t>.... Return
5110: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e s information on
5120: 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 74 68 65 methods for the
5130: 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c server object <
5140: 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e tt><i>handle</i>
5150: 3c 2f 74 74 3e 2e 20 57 69 74 68 6f 75 74 20 6f </tt>. Without o
5160: 70 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 ptional paramete
5170: 72 73 2c 20 66 6f 72 20 65 61 63 68 20 6b 6e 6f rs, for each kno
5180: 77 6e 20 6d 65 74 68 6f 64 20 74 68 72 65 65 20 wn method three
5190: 6c 69 73 74 20 65 6c 65 6d 65 6e 74 73 20 77 69 list elements wi
51a0: 74 68 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 th node identifi
51b0: 65 72 2c 20 72 65 73 75 6c 74 20 74 79 70 65 20 er, result type
51c0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6e 64 information, and
51d0: 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e callback comman
51e0: 64 20 61 72 65 20 61 64 64 65 64 20 74 6f 20 74 d are added to t
51f0: 68 65 20 72 65 73 75 6c 74 2e 20 57 69 74 68 20 he result. With
5200: 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 <tt><i>nodeid</i
5210: 3e 3c 2f 74 74 3e 20 69 6e 66 6f 72 6d 61 74 69 ></tt> informati
5220: 6f 6e 20 66 6f 72 20 74 68 65 20 73 70 65 63 69 on for the speci
5230: 66 69 65 64 20 6e 6f 64 65 20 69 73 20 72 65 74 fied node is ret
5240: 75 72 6e 65 64 2e 20 57 69 74 68 20 3c 74 74 3e urned. With <tt>
5250: 3c 69 3e 6f 75 74 74 79 70 65 3c 2f 69 3e 3c 2f <i>outtype</i></
5260: 74 74 3e 20 77 68 69 63 68 20 6d 75 73 74 20 62 tt> which must b
5270: 65 20 61 20 6c 69 73 74 20 6f 66 20 64 69 63 74 e a list of dict
5280: 73 20 6f 66 20 73 65 72 69 61 6c 69 7a 65 64 20 s of serialized
5290: 3c 74 74 3e 3c 69 3e 41 72 67 75 6d 65 6e 74 3c <tt><i>Argument<
52a0: 2f 69 3e 3c 2f 74 74 3e 20 73 74 72 75 63 74 73 /i></tt> structs
52b0: 20 74 68 65 20 6d 65 74 68 6f 64 27 73 20 6d 61 the method's ma
52c0: 70 70 69 6e 67 20 6f 66 20 72 65 73 75 6c 74 20 pping of result
52d0: 76 61 6c 75 65 73 20 69 73 20 6d 6f 64 69 66 69 values is modifi
52e0: 65 64 2e 20 57 69 74 68 20 3c 74 74 3e 3c 69 3e ed. With <tt><i>
52f0: 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 2c 20 74 68 cmd</i></tt>, th
5300: 65 20 54 63 6c 20 63 61 6c 6c 62 61 63 6b 20 69 e Tcl callback i
5310: 73 20 63 68 61 6e 67 65 64 2e 20 49 66 20 3c 74 s changed. If <t
5320: 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 t><i>cmd</i></tt
5330: 3e 20 69 73 20 67 69 76 65 6e 20 61 73 20 61 6e > is given as an
5340: 20 65 6d 70 74 79 20 6c 69 73 74 2c 20 74 68 61 empty list, tha
5350: 74 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 64 65 t callback is de
5360: 6c 65 74 65 64 20 61 6e 64 20 74 68 65 20 6d 65 leted and the me
5370: 74 68 6f 64 20 6e 6f 64 65 20 77 69 6c 6c 20 72 thod node will r
5380: 65 70 6f 72 74 20 61 6e 20 65 72 72 6f 72 20 75 eport an error u
5390: 70 6f 6e 20 63 61 6c 6c 20 66 72 6f 6d 20 74 68 pon call from th
53a0: 65 20 4f 50 43 2f 55 41 20 73 69 64 65 2e 0d 0a e OPC/UA side...
53b0: 0d 0a 3c 74 74 3e 42 6f 70 63 75 61 20 6d 6f 6e ..<tt>Bopcua mon
53c0: 69 74 6f 72 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f itor <i>handle</
53d0: 69 3e 20 63 6f 6e 66 69 67 75 72 65 20 30 20 3c i> configure 0 <
53e0: 69 3e 6d 6f 6e 69 64 20 3f 63 6d 64 3f 3c 2f 69 i>monid ?cmd?</i
53f0: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 6f ></tt>.... Co
5400: 6e 66 69 67 75 72 65 73 20 74 68 65 20 6d 6f 6e nfigures the mon
5410: 69 74 6f 72 20 3c 74 74 3e 3c 69 3e 6d 6f 6e 69 itor <tt><i>moni
5420: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 d</i></tt> on th
5430: 65 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 e server object
5440: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
5450: 3e 3c 2f 74 74 3e 20 77 69 74 68 20 74 68 65 20 ></tt> with the
5460: 70 72 6f 76 69 64 65 64 20 70 61 72 61 6d 65 74 provided paramet
5470: 65 72 73 2c 20 73 65 65 20 3c 74 74 3e 6f 70 63 ers, see <tt>opc
5480: 75 61 20 6d 6f 6e 69 74 6f 72 20 6e 65 77 3c 2f ua monitor new</
5490: 74 74 3e 20 66 6f 72 20 66 75 72 74 68 65 72 20 tt> for further
54a0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 0d 0a information.....
54b0: 3c 74 74 3e 6f 70 63 75 61 20 6d 6f 6e 69 74 6f <tt>opcua monito
54c0: 72 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 r <i>handle</i>
54d0: 63 6f 6e 66 69 67 75 72 65 20 3c 69 3e 73 75 62 configure <i>sub
54e0: 69 64 20 6d 6f 6e 69 64 20 3f 63 6d 64 20 6d 6f id monid ?cmd mo
54f0: 64 65 20 69 6e 74 65 72 76 61 6c 3f 3c 2f 69 3e de interval?</i>
5500: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 6f 6e </tt>.... Con
5510: 66 69 67 75 72 65 73 20 74 68 65 20 6d 6f 6e 69 figures the moni
5520: 74 6f 72 20 3c 74 74 3e 3c 69 3e 6d 6f 6e 69 64 tor <tt><i>monid
5530: 3c 2f 69 3e 3c 2f 74 74 3e 20 69 6e 20 73 75 62 </i></tt> in sub
5540: 73 63 72 69 70 74 69 6f 6e 20 3c 74 74 3e 3c 69 scription <tt><i
5550: 3e 73 75 62 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 >subid</i></tt>
5560: 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 62 on the client ob
5570: 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 ject <tt><i>hand
5580: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 77 69 74 68 le</i></tt> with
5590: 20 74 68 65 20 70 72 6f 76 69 64 65 64 20 70 61 the provided pa
55a0: 72 61 6d 65 74 65 72 73 2c 20 73 65 65 20 3c 74 rameters, see <t
55b0: 74 3e 6f 70 63 75 61 20 20 6d 6f 6e 69 74 6f 72 t>opcua monitor
55c0: 20 6e 65 77 3c 2f 74 74 3e 20 66 6f 72 20 66 75 new</tt> for fu
55d0: 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f rther informatio
55e0: 6e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 n.....<tt>opcua
55f0: 6d 6f 6e 69 74 6f 72 20 3c 69 3e 68 61 6e 64 6c monitor <i>handl
5600: 65 3c 2f 69 3e 20 64 65 73 74 72 6f 79 20 3c 69 e</i> destroy <i
5610: 3e 73 75 62 69 64 20 6d 6f 6e 69 64 3c 2f 69 3e >subid monid</i>
5620: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 44 65 73 </tt>.... Des
5630: 74 72 6f 79 73 20 74 68 65 20 6d 6f 6e 69 74 6f troys the monito
5640: 72 20 3c 74 74 3e 3c 69 3e 6d 6f 6e 69 64 3c 2f r <tt><i>monid</
5650: 69 3e 3c 2f 74 74 3e 20 69 6e 20 73 75 62 73 63 i></tt> in subsc
5660: 72 69 70 74 69 6f 6e 20 3c 74 74 3e 3c 69 3e 73 ription <tt><i>s
5670: 75 62 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e ubid</i></tt> on
5680: 20 74 68 65 20 6f 62 6a 65 63 74 20 3c 74 74 3e the object <tt>
5690: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
56a0: 74 3e 20 61 6e 64 20 72 65 6c 65 61 73 65 73 20 t> and releases
56b0: 61 6c 6c 20 69 74 73 20 72 65 73 6f 75 72 63 65 all its resource
56c0: 73 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 68 61 6e s. If <tt><i>han
56d0: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 dle</i></tt> is
56e0: 61 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 2c a server object,
56f0: 20 3c 74 74 3e 3c 69 3e 73 75 62 69 64 3c 2f 69 <tt><i>subid</i
5700: 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 20 73 ></tt> must be s
5710: 70 65 63 69 66 69 65 64 20 61 73 20 7a 65 72 6f pecified as zero
5720: 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 6d .....<tt>opcua m
5730: 6f 6e 69 74 6f 72 20 3c 69 3e 68 61 6e 64 6c 65 onitor <i>handle
5740: 3c 2f 69 3e 20 69 6e 66 6f 20 3c 69 3e 73 75 62 </i> info <i>sub
5750: 69 64 20 3f 6d 6f 6e 69 64 3f 3c 2f 69 3e 3c 2f id ?monid?</i></
5760: 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 tt>.... Retur
5770: 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f ns information o
5780: 6e 20 6d 6f 6e 69 74 6f 72 20 3c 74 74 3e 3c 69 n monitor <tt><i
5790: 3e 6d 6f 6e 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 >monid</i></tt>
57a0: 69 6e 20 73 75 62 73 63 72 69 70 74 69 6f 6e 20 in subscription
57b0: 3c 74 74 3e 3c 69 3e 73 75 62 69 64 3c 2f 69 3e <tt><i>subid</i>
57c0: 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 3c 74 74 </tt> on the <tt
57d0: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
57e0: 74 74 3e 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 68 tt>. If <tt><i>h
57f0: 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 andle</i></tt> i
5800: 73 20 61 20 73 65 72 76 65 72 20 6f 62 6a 65 63 s a server objec
5810: 74 2c 20 3c 74 74 3e 3c 69 3e 73 75 62 69 64 3c t, <tt><i>subid<
5820: 2f 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 /i></tt> must be
5830: 20 73 70 65 63 69 66 69 65 64 20 61 73 20 7a 65 specified as ze
5840: 72 6f 2e 20 54 68 65 20 72 65 73 75 6c 74 20 69 ro. The result i
5850: 73 20 61 20 6c 69 73 74 20 6f 66 20 6d 6f 6e 69 s a list of moni
5860: 74 6f 72 20 74 79 70 65 20 28 3c 74 74 3e 64 61 tor type (<tt>da
5870: 74 61 3c 2f 74 74 3e 20 6f 72 20 3c 74 74 3e 65 ta</tt> or <tt>e
5880: 76 65 6e 74 3c 2f 74 74 3e 29 20 77 68 65 6e 20 vent</tt>) when
5890: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
58a0: 3e 3c 2f 74 74 3e 20 72 65 66 65 72 73 20 74 6f ></tt> refers to
58b0: 20 61 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 a client object
58c0: 20 28 6f 74 68 65 72 77 69 73 65 20 74 68 65 20 (otherwise the
58d0: 6c 69 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 list element is
58e0: 6c 65 66 74 20 6f 75 74 29 2c 20 74 68 65 20 6e left out), the n
58f0: 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 2c 0d ode identifier,.
5900: 0a 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 63 6f .the callback co
5910: 6d 6d 61 6e 64 2c 20 74 68 65 20 61 74 74 72 69 mmand, the attri
5920: 62 75 74 65 2c 20 74 68 65 20 6d 6f 6e 69 74 6f bute, the monito
5930: 72 27 73 20 6d 6f 64 65 20 28 6f 6e 6c 79 20 66 r's mode (only f
5940: 6f 72 20 63 6c 69 65 6e 74 20 68 61 6e 64 6c 65 or client handle
5950: 73 29 2c 20 61 6e 64 20 74 68 65 20 69 6e 74 65 s), and the inte
5960: 72 76 61 6c 2e 20 49 66 20 3c 74 74 3e 3c 69 3e rval. If <tt><i>
5970: 6d 6f 6e 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 69 monid</i></tt> i
5980: 73 20 6f 6d 69 74 74 65 64 2c 20 61 20 6c 69 73 s omitted, a lis
5990: 74 20 6f 66 20 61 6c 6c 20 6d 6f 6e 69 74 6f 72 t of all monitor
59a0: 20 69 64 65 6e 74 69 66 65 72 73 20 72 65 67 69 identifers regi
59b0: 73 74 65 72 65 64 20 69 6e 20 74 68 65 20 73 75 stered in the su
59c0: 62 73 63 72 69 70 74 69 6f 6e 20 6f 72 20 69 6e bscription or in
59d0: 20 74 68 65 20 73 65 72 76 65 72 20 6f 62 6a 65 the server obje
59e0: 63 74 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d ct is returned..
59f0: 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 6d 6f 6e ...<tt>opcua mon
5a00: 69 74 6f 72 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f itor <i>handle</
5a10: 69 3e 20 6e 65 77 20 30 20 3c 69 3e 63 6d 64 20 i> new 0 <i>cmd
5a20: 6e 6f 64 65 69 64 20 3f 61 74 74 72 20 69 6e 74 nodeid ?attr int
5a30: 65 72 76 61 6c 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d erval?</i></tt>.
5a40: 0a 0d 0a 20 20 20 20 43 72 65 61 74 65 73 20 61 ... Creates a
5a50: 20 6d 6f 6e 69 74 6f 72 65 64 20 69 74 65 6d 20 monitored item
5a60: 6f 66 20 74 68 65 20 64 61 74 61 20 76 61 6c 75 of the data valu
5a70: 65 20 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 e for the node i
5a80: 64 65 6e 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 dentifier <tt><i
5a90: 3e 6e 6f 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e >nodeid</i></tt>
5aa0: 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 20 6f on the server o
5ab0: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
5ac0: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 dle</i></tt>. Th
5ad0: 65 20 6f 70 74 69 6f 6e 61 6c 20 70 61 72 61 6d e optional param
5ae0: 65 74 65 72 20 3c 74 74 3e 3c 69 3e 61 74 74 72 eter <tt><i>attr
5af0: 3c 2f 69 3e 3c 2f 74 74 3e 20 73 65 6c 65 63 74 </i></tt> select
5b00: 73 20 74 68 65 20 61 74 74 72 69 62 75 74 65 20 s the attribute
5b10: 6f 66 20 74 68 65 20 6e 6f 64 65 20 74 6f 20 62 of the node to b
5b20: 65 20 6d 6f 6e 69 74 6f 72 65 64 20 28 3c 74 74 e monitored (<tt
5b30: 3e 56 61 6c 75 65 3c 2f 74 74 3e 20 69 73 20 74 >Value</tt> is t
5b40: 68 65 20 64 65 66 61 75 6c 74 29 2e 20 54 68 65 he default). The
5b50: 20 6d 6f 6e 69 74 6f 72 69 6e 67 20 69 6e 74 65 monitoring inte
5b60: 72 76 61 6c 20 3c 74 74 3e 3c 69 3c 3e 69 6e 74 rval <tt><i<>int
5b70: 65 72 76 61 6c 3c 2f 69 3e 3c 2f 74 74 3e 20 6d erval</i></tt> m
5b80: 75 73 74 20 62 65 20 67 69 76 65 6e 20 61 73 20 ust be given as
5b90: 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73 number of millis
5ba0: 65 63 6f 6e 64 73 2e 20 54 68 65 20 63 61 6c 6c econds. The call
5bb0: 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 20 70 61 72 back command par
5bc0: 61 6d 65 74 65 72 20 3c 74 74 3e 3c 69 3e 63 6d ameter <tt><i>cm
5bd0: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 64 69 73 d</i></tt> isdis
5be0: 63 75 73 73 65 64 20 69 6e 20 73 65 63 74 69 6f cussed in sectio
5bf0: 6e 20 3c 62 3e 4d 6f 6e 69 74 6f 72 20 43 61 6c n <b>Monitor Cal
5c00: 6c 62 61 63 6b 73 3c 2f 62 3e 20 62 65 6c 6f 77 lbacks</b> below
5c10: 2e 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 72 65 . The command re
5c20: 74 75 72 6e 73 20 61 20 6e 75 6d 65 72 69 63 20 turns a numeric
5c30: 69 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 identifier of th
5c40: 65 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20 e newly created
5c50: 6d 6f 6e 69 74 6f 72 2e 0d 0a 0d 0a 3c 74 74 3e monitor.....<tt>
5c60: 6f 70 63 75 61 20 6d 6f 6e 69 74 6f 72 20 3c 69 opcua monitor <i
5c70: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 6e 65 77 20 >handle</i> new
5c80: 3c 69 3e 73 75 62 69 64 20 74 79 70 65 20 63 6d <i>subid type cm
5c90: 64 20 6e 6f 64 65 69 64 20 3f 66 69 6c 74 65 72 d nodeid ?filter
5ca0: 20 61 74 74 72 20 6d 6f 64 65 20 69 6e 74 65 72 attr mode inter
5cb0: 76 61 6c 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d val?</i></tt>...
5cc0: 0a 20 20 20 20 43 72 65 61 74 65 73 20 61 20 6d . Creates a m
5cd0: 6f 6e 69 74 6f 72 65 64 20 69 74 65 6d 20 6f 66 onitored item of
5ce0: 20 3c 74 74 3e 3c 69 3e 74 79 70 65 3c 2f 69 3e <tt><i>type</i>
5cf0: 3c 2f 74 74 3e 20 28 3c 74 74 3e 64 61 74 61 3c </tt> (<tt>data<
5d00: 2f 74 74 3e 20 6f 72 20 3c 74 74 3e 65 76 65 6e /tt> or <tt>even
5d10: 74 3c 2f 74 74 3e 29 20 66 6f 72 20 74 68 65 20 t</tt>) for the
5d20: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 20 node identifier
5d30: 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 <tt><i>nodeid</i
5d40: 3e 3c 2f 74 74 3e 20 69 6e 20 74 68 65 20 73 75 ></tt> in the su
5d50: 62 73 63 72 69 70 74 69 6f 6e 20 3c 74 74 3e 3c bscription <tt><
5d60: 69 3e 73 75 62 69 64 3c 2f 69 3e 3c 2f 74 74 3e i>subid</i></tt>
5d70: 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f on the client o
5d80: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
5d90: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 dle</i></tt>. Th
5da0: 65 20 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e e parameter <tt>
5db0: 3c 69 3e 66 69 6c 74 65 72 3c 2f 69 3e 3c 2f 74 <i>filter</i></t
5dc0: 74 3e 20 6d 75 73 74 20 62 65 20 73 70 65 63 69 t> must be speci
5dd0: 66 69 65 64 20 66 6f 72 20 3c 74 74 3e 3c 69 3e fied for <tt><i>
5de0: 65 76 65 6e 74 3c 2f 69 3e 3c 2f 74 74 3e 20 6d event</i></tt> m
5df0: 6f 6e 69 74 6f 72 73 20 6f 6e 6c 79 20 61 6e 64 onitors only and
5e00: 20 6d 75 73 74 20 62 65 20 61 20 6c 69 73 74 20 must be a list
5e10: 6d 61 64 65 20 75 70 20 6f 66 20 74 79 70 65 20 made up of type
5e20: 69 64 65 6e 74 69 66 69 65 72 73 2c 20 71 75 61 identifiers, qua
5e30: 6c 69 66 69 65 64 20 6e 61 6d 65 73 2c 20 61 6e lified names, an
5e40: 64 20 61 74 74 72 69 62 75 74 65 73 2c 20 65 2e d attributes, e.
5e50: 67 2e 20 3c 74 74 3e 7b 3c 69 3e 42 61 73 65 45 g. <tt>{<i>BaseE
5e60: 76 65 6e 74 54 79 70 65 3c 2f 69 3e 20 4d 65 73 ventType</i> Mes
5e70: 73 61 67 65 20 56 61 6c 75 65 20 2e 2e 2e 7d 3c sage Value ...}<
5e80: 2f 74 74 3e 2c 20 77 68 65 72 65 20 3c 74 74 3e /tt>, where <tt>
5e90: 3c 69 3e 42 61 73 65 45 76 65 6e 74 54 79 70 65 <i>BaseEventType
5ea0: 3c 2f 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 </i></tt> must b
5eb0: 65 20 67 69 76 65 6e 20 61 73 20 6e 6f 64 65 20 e given as node
5ec0: 69 64 65 6e 74 69 66 69 65 72 20 62 79 20 6c 6f identifier by lo
5ed0: 6f 6b 20 75 70 20 70 65 72 20 3c 74 74 3e 6f 70 ok up per <tt>op
5ee0: 63 75 61 20 74 72 61 6e 73 6c 61 74 65 3c 2f 74 cua translate</t
5ef0: 74 3e 2e 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c t>. The optional
5f00: 20 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e 3c parameter <tt><
5f10: 69 3e 61 74 74 72 3c 2f 69 3e 3c 2f 74 74 3e 20 i>attr</i></tt>
5f20: 73 65 6c 65 63 74 73 20 74 68 65 20 61 74 74 72 selects the attr
5f30: 69 62 75 74 65 20 6f 66 20 74 68 65 20 6e 6f 64 ibute of the nod
5f40: 65 20 74 6f 20 62 65 20 6d 6f 6e 69 74 6f 72 65 e to be monitore
5f50: 64 20 28 3c 74 74 3e 56 61 6c 75 65 3c 2f 74 74 d (<tt>Value</tt
5f60: 3e 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 > is the default
5f70: 20 66 6f 72 20 3c 74 74 3e 64 61 74 61 3c 2f 74 for <tt>data</t
5f80: 74 3e 20 6d 6f 6e 69 74 6f 72 73 2c 20 3c 74 74 t> monitors, <tt
5f90: 3e 45 76 65 6e 74 4e 6f 74 69 66 69 65 72 3c 2f >EventNotifier</
5fa0: 74 74 3e 20 66 6f 72 20 3c 74 74 3e 65 76 65 6e tt> for <tt>even
5fb0: 74 3c 2f 74 74 3e 20 6d 6f 6e 69 74 6f 72 73 29 t</tt> monitors)
5fc0: 2e 20 54 68 65 20 6d 6f 6e 69 74 6f 72 20 6d 6f . The monitor mo
5fd0: 64 65 20 3c 74 74 3e 3c 69 3e 6d 6f 64 65 3c 2f de <tt><i>mode</
5fe0: 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 20 i></tt> must be
5ff0: 6f 6e 65 20 6f 66 20 3c 74 74 3e 44 69 73 61 62 one of <tt>Disab
6000: 6c 65 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e 53 61 led</tt>, <tt>Sa
6010: 6d 70 6c 69 6e 67 3c 2f 74 74 3e 2c 20 61 6e 64 mpling</tt>, and
6020: 20 3c 74 74 3e 52 65 70 6f 72 74 69 6e 67 3c 2f <tt>Reporting</
6030: 74 74 3e 2e 20 54 68 65 20 6d 6f 6e 69 74 6f 72 tt>. The monitor
6040: 69 6e 67 20 69 6e 74 65 72 76 61 6c 20 3c 74 74 ing interval <tt
6050: 3e 3c 69 3e 69 6e 74 65 72 76 61 6c 3c 2f 69 3e ><i>interval</i>
6060: 3c 2f 74 74 3e 20 6d 75 73 74 20 62 65 20 67 69 </tt> must be gi
6070: 76 65 6e 20 61 73 20 6e 75 6d 62 65 72 20 6f 66 ven as number of
6080: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 2c 20 69 milliseconds, i
6090: 66 20 6f 6d 69 74 74 65 64 20 69 74 73 20 76 61 f omitted its va
60a0: 6c 75 65 20 69 73 20 64 65 72 69 76 65 64 20 66 lue is derived f
60b0: 72 6f 6d 20 74 68 65 20 73 75 62 73 63 72 69 70 rom the subscrip
60c0: 74 69 6f 6e 2e 20 54 68 65 20 63 61 6c 6c 62 61 tion. The callba
60d0: 63 6b 20 63 6f 6d 6d 61 6e 64 20 70 61 72 61 6d ck command param
60e0: 65 74 65 72 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c eter <tt><i>cmd<
60f0: 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 64 69 73 63 /i></tt> is disc
6100: 75 73 73 65 64 20 69 6e 20 73 65 63 74 69 6f 6e ussed in section
6110: 20 3c 62 3e 4d 6f 6e 69 74 6f 72 20 43 61 6c 6c <b>Monitor Call
6120: 62 61 63 6b 73 3c 2f 62 3e 20 62 65 6c 6f 77 2e backs</b> below.
6130: 20 54 68 65 20 63 6f 6d 6d 61 6e 64 20 72 65 74 The command ret
6140: 75 72 6e 73 20 61 20 6e 75 6d 65 72 69 63 20 69 urns a numeric i
6150: 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65 dentifier of the
6160: 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20 6d newly created m
6170: 6f 6e 69 74 6f 72 2e 0d 0a 0d 0a 3c 74 74 3e 6f onitor.....<tt>o
6180: 70 63 75 61 20 6d 72 65 61 64 20 3c 69 3e 68 61 pcua mread <i>ha
6190: 6e 64 6c 65 20 63 6d 64 20 6e 6f 64 65 69 64 20 ndle cmd nodeid
61a0: 2e 2e 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a ...</i></tt>....
61b0: 20 20 20 20 53 69 6d 69 6c 61 72 20 74 6f 20 3c Similar to <
61c0: 74 74 3e 6f 70 63 75 61 20 72 65 61 64 3c 2f 74 tt>opcua read</t
61d0: 74 3e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 t> this command
61e0: 63 61 72 72 69 65 73 20 6f 75 74 20 61 20 6d 75 carries out a mu
61f0: 6c 74 69 20 72 65 61 64 20 6f 70 65 72 61 74 69 lti read operati
6200: 6f 6e 20 6f 66 20 76 61 6c 75 65 20 61 74 74 72 on of value attr
6210: 69 62 75 74 65 73 20 6f 6e 20 3c 74 74 3e 3c 69 ibutes on <tt><i
6220: 3e 6e 6f 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e >nodeid</i></tt>
6230: 20 61 6e 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 6e and following n
6240: 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 73 2e ode identifiers.
6250: 20 49 66 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f If <tt><i>cmd</
6260: 69 3e 3c 2f 74 74 3e 20 69 73 20 67 69 76 65 6e i></tt> is given
6270: 20 61 73 20 65 6d 70 74 79 20 73 74 72 69 6e 67 as empty string
6280: 2c 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 , the operation
6290: 69 73 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 61 is synchronous a
62a0: 6e 64 20 61 20 6c 69 73 74 20 6f 66 20 76 61 6c nd a list of val
62b0: 75 65 20 61 74 74 72 69 62 75 74 65 73 20 69 73 ue attributes is
62c0: 20 72 65 74 75 72 6e 65 64 2e 20 46 6f 72 20 61 returned. For a
62d0: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f 70 65 72 synchronous oper
62e0: 61 74 69 6f 6e 20 73 65 65 20 3c 74 74 3e 6f 70 ation see <tt>op
62f0: 63 75 61 20 63 61 6c 6c 3c 2f 74 74 3e 20 61 6e cua call</tt> an
6300: 64 20 73 65 63 74 69 6f 6e 20 3c 62 3e 41 79 6e d section <b>Ayn
6310: 63 68 72 6f 6e 6f 75 73 20 4f 70 65 72 61 74 69 chronous Operati
6320: 6f 6e 73 3c 2f 62 3e 2e 0d 0a 0d 0a 3c 74 74 3e ons</b>.....<tt>
6330: 6f 70 63 75 61 20 6d 72 65 61 64 78 20 3c 69 3e opcua mreadx <i>
6340: 68 61 6e 64 6c 65 20 63 6d 64 20 6e 6f 64 65 69 handle cmd nodei
6350: 64 20 61 74 74 72 20 69 6e 64 65 78 20 2e 2e 2e d attr index ...
6360: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
6370: 20 53 69 6d 69 6c 61 72 20 74 6f 20 3c 74 74 3e Similar to <tt>
6380: 6f 70 63 75 61 20 6d 72 65 61 64 3c 2f 74 74 3e opcua mread</tt>
6390: 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 63 61 this command ca
63a0: 72 72 69 65 73 20 6f 75 74 20 61 20 6d 75 6c 74 rries out a mult
63b0: 69 20 72 65 61 64 20 6f 70 65 72 61 74 69 6f 6e i read operation
63c0: 20 6f 66 20 61 74 74 72 69 62 75 74 65 20 3c 74 of attribute <t
63d0: 74 3e 3c 69 3e 61 74 74 72 3c 2f 69 3e 3c 2f 74 t><i>attr</i></t
63e0: 74 3e 20 77 69 74 68 20 3c 74 74 3e 3c 69 3e 69 t> with <tt><i>i
63f0: 6e 64 65 78 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e ndex</i></tt> on
6400: 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f <tt><i>nodeid</
6410: 69 3e 3c 2f 74 74 3e 20 61 6e 64 20 66 6f 6c 6c i></tt> and foll
6420: 6f 77 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 owing parameters
6430: 2e 20 45 61 63 68 20 73 69 6e 67 6c 65 20 72 65 . Each single re
6440: 61 64 20 69 73 20 64 65 73 63 72 69 62 65 64 20 ad is described
6450: 62 79 20 6e 6f 74 65 20 69 64 65 6e 74 69 66 69 by note identifi
6460: 65 72 2c 20 61 74 74 72 69 62 75 74 65 2c 20 61 er, attribute, a
6470: 6e 64 20 69 6e 64 65 78 2e 20 54 68 65 20 3c 74 nd index. The <t
6480: 74 3e 3c 69 3e 69 6e 64 65 78 3c 2f 69 3e 3c 2f t><i>index</i></
6490: 74 74 3e 20 70 61 72 61 6d 65 74 65 72 20 6d 75 tt> parameter mu
64a0: 73 74 20 62 65 20 61 6e 20 65 6d 70 74 79 20 73 st be an empty s
64b0: 74 72 69 6e 67 20 6f 72 20 61 20 76 61 6c 69 64 tring or a valid
64c0: 20 4f 50 43 2f 55 41 20 69 6e 64 65 78 20 72 61 OPC/UA index ra
64d0: 6e 67 65 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 63 nge. If <tt><i>c
64e0: 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 67 md</i></tt> is g
64f0: 69 76 65 6e 20 61 73 20 65 6d 70 74 79 20 73 74 iven as empty st
6500: 72 69 6e 67 2c 20 74 68 65 20 6f 70 65 72 61 74 ring, the operat
6510: 69 6f 6e 20 69 73 20 73 79 6e 63 68 72 6f 6e 6f ion is synchrono
6520: 75 73 20 61 6e 64 20 61 20 6c 69 73 74 20 6f 66 us and a list of
6530: 20 61 74 74 72 69 62 75 74 65 73 20 69 73 20 72 attributes is r
6540: 65 74 75 72 6e 65 64 2e 20 46 6f 72 20 61 73 79 eturned. For asy
6550: 6e 63 68 72 6f 6e 6f 75 73 20 6f 70 65 72 61 74 nchronous operat
6560: 69 6f 6e 20 73 65 65 20 3c 74 74 3e 6f 70 63 75 ion see <tt>opcu
6570: 61 20 63 61 6c 6c 3c 2f 74 74 3e 20 61 6e 64 20 a call</tt> and
6580: 73 65 63 74 69 6f 6e 20 3c 62 3e 41 79 6e 63 68 section <b>Aynch
6590: 72 6f 6e 6f 75 73 20 4f 70 65 72 61 74 69 6f 6e ronous Operation
65a0: 73 3c 2f 62 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 s</b>.....<tt>op
65b0: 63 75 61 20 6d 77 72 69 74 65 20 3c 69 3e 68 61 cua mwrite <i>ha
65c0: 6e 64 6c 65 20 63 6d 64 20 6e 6f 64 65 69 64 20 ndle cmd nodeid
65d0: 74 79 70 65 20 76 61 6c 75 65 20 2e 2e 2e 3c 2f type value ...</
65e0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 53 i></tt>.... S
65f0: 69 6d 69 6c 61 72 20 74 6f 20 3c 74 74 3e 6f 70 imilar to <tt>op
6600: 63 75 61 20 77 72 69 74 65 3c 2f 74 74 3e 20 74 cua write</tt> t
6610: 68 69 73 20 63 6f 6d 6d 61 6e 64 20 63 61 72 72 his command carr
6620: 69 65 73 20 6f 75 74 20 61 20 6d 75 6c 74 69 20 ies out a multi
6630: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 write operation
6640: 6f 66 20 76 61 6c 75 65 20 61 74 74 72 69 62 75 of value attribu
6650: 74 65 73 20 6f 6e 20 3c 74 74 3e 3c 69 3e 6e 6f tes on <tt><i>no
6660: 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e deid</i></tt> an
6670: 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 6e 6f 64 65 d following node
6680: 20 69 64 65 6e 74 69 66 69 65 72 73 2e 20 45 61 identifiers. Ea
6690: 63 68 20 73 69 6e 67 6c 65 20 77 72 69 74 65 20 ch single write
66a0: 69 73 20 64 65 73 63 72 69 62 65 64 20 62 79 20 is described by
66b0: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 2c node identifier,
66c0: 20 64 61 74 61 20 74 79 70 65 2c 20 61 6e 64 20 data type, and
66d0: 76 61 6c 75 65 2e 20 49 66 20 3c 74 74 3e 3c 69 value. If <tt><i
66e0: 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 >cmd</i></tt> is
66f0: 20 67 69 76 65 6e 20 61 73 20 65 6d 70 74 79 20 given as empty
6700: 73 74 72 69 6e 67 2c 20 74 68 65 20 6f 70 65 72 string, the oper
6710: 61 74 69 6f 6e 20 69 73 20 73 79 6e 63 68 72 6f ation is synchro
6720: 6e 6f 75 73 2e 20 46 6f 72 20 61 73 79 6e 63 68 nous. For asynch
6730: 72 6f 6e 6f 75 73 20 6f 70 65 72 61 74 69 6f 6e ronous operation
6740: 20 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 63 see <tt>opcua c
6750: 61 6c 6c 3c 2f 74 74 3e 20 61 6e 64 20 73 65 63 all</tt> and sec
6760: 74 69 6f 6e 20 3c 62 3e 41 73 79 6e 63 68 72 6f tion <b>Asynchro
6770: 6e 6f 75 73 20 4f 70 65 72 61 74 69 6f 6e 73 3c nous Operations<
6780: 2f 62 3e 2e 20 49 6e 20 63 6f 6e 74 72 61 73 74 /b>. In contrast
6790: 20 74 6f 20 74 68 65 20 3c 74 74 3e 6f 70 63 75 to the <tt>opcu
67a0: 61 20 77 72 69 74 65 3c 2f 74 74 3e 20 63 6f 6d a write</tt> com
67b0: 6d 61 6e 64 20 74 68 69 73 20 6f 70 65 72 61 74 mand this operat
67c0: 69 6f 6e 20 74 72 61 6e 73 66 65 72 73 20 61 6c ion transfers al
67d0: 6c 20 76 61 6c 75 65 73 20 77 69 74 68 20 74 68 l values with th
67e0: 65 69 72 20 73 6f 75 72 63 65 20 74 69 6d 65 73 eir source times
67f0: 74 61 6d 70 20 73 65 74 20 74 6f 20 74 68 65 20 tamp set to the
6800: 63 75 72 72 65 6e 74 20 74 69 6d 65 2e 0d 0a 0d current time....
6810: 0a 3c 74 74 3e 6f 70 63 75 61 20 6d 77 72 69 74 .<tt>opcua mwrit
6820: 65 78 20 3c 69 3e 68 61 6e 64 6c 65 20 63 6d 64 ex <i>handle cmd
6830: 20 6e 6f 64 65 69 64 20 61 74 74 72 20 69 6e 64 nodeid attr ind
6840: 65 78 20 74 79 70 65 20 76 61 6c 75 65 20 2e 2e ex type value ..
6850: 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 .</i></tt>....
6860: 20 20 53 69 6d 69 6c 61 72 20 74 6f 20 3c 74 74 Similar to <tt
6870: 3e 6f 70 63 75 61 20 6d 77 72 69 74 65 3c 2f 74 >opcua mwrite</t
6880: 74 3e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 20 t> this command
6890: 63 61 72 72 69 65 73 20 6f 75 74 20 61 20 6d 75 carries out a mu
68a0: 6c 74 69 20 77 72 69 74 65 20 6f 70 65 72 61 74 lti write operat
68b0: 69 6f 6e 20 6f 66 20 61 74 74 72 69 62 75 74 65 ion of attribute
68c0: 20 3c 74 74 3e 3c 69 3e 61 74 74 72 3c 2f 69 3e <tt><i>attr</i>
68d0: 3c 2f 74 74 3e 20 77 69 74 68 20 3c 74 74 3e 3c </tt> with <tt><
68e0: 69 3e 69 6e 64 65 78 3c 2f 69 3e 3c 2f 74 74 3e i>index</i></tt>
68f0: 20 6f 6e 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 on <tt><i>nodei
6900: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 67 69 76 65 6e d</i></tt> given
6910: 20 3c 74 74 3e 3c 69 3e 74 79 70 65 3c 2f 69 3e <tt><i>type</i>
6920: 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 74 3e 3c 69 </tt> and <tt><i
6930: 3e 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e 2e >value</i></tt>.
6940: 20 45 61 63 68 20 73 69 6e 67 6c 65 20 77 72 69 Each single wri
6950: 74 65 20 69 73 20 64 65 73 63 72 69 62 65 64 20 te is described
6960: 62 79 20 6e 6f 74 65 20 69 64 65 6e 74 69 66 69 by note identifi
6970: 65 72 2c 20 61 74 74 72 69 62 75 74 65 2c 20 69 er, attribute, i
6980: 6e 64 65 78 2c 20 64 61 74 61 20 74 79 70 65 20 ndex, data type
6990: 61 6e 64 20 76 61 6c 75 65 2e 20 54 68 65 20 3c and value. The <
69a0: 74 74 3e 3c 69 3e 69 6e 64 65 78 3c 2f 69 3e 3c tt><i>index</i><
69b0: 2f 74 74 3e 20 70 61 72 61 6d 65 74 65 72 20 6d /tt> parameter m
69c0: 75 73 74 20 62 65 20 61 6e 20 65 6d 70 74 79 20 ust be an empty
69d0: 73 74 72 69 6e 67 20 6f 72 20 61 20 76 61 6c 69 string or a vali
69e0: 64 20 4f 50 43 2f 55 41 20 69 6e 64 65 78 20 72 d OPC/UA index r
69f0: 61 6e 67 65 2e 20 49 66 20 3c 74 74 3e 3c 69 3e ange. If <tt><i>
6a00: 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 cmd</i></tt> is
6a10: 67 69 76 65 6e 20 61 73 20 65 6d 70 74 79 20 73 given as empty s
6a20: 74 72 69 6e 67 2c 20 74 68 65 20 6f 70 65 72 61 tring, the opera
6a30: 74 69 6f 6e 20 69 73 20 73 79 6e 63 68 72 6f 6e tion is synchron
6a40: 6f 75 73 2e 20 46 6f 72 20 61 73 79 6e 63 68 72 ous. For asynchr
6a50: 6f 6e 6f 75 73 20 6f 70 65 72 61 74 69 6f 6e 20 onous operation
6a60: 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 63 61 see <tt>opcua ca
6a70: 6c 6c 3c 2f 74 74 3e 20 61 6e 64 20 73 65 63 74 ll</tt> and sect
6a80: 69 6f 6e 20 3c 62 3e 41 79 6e 63 68 72 6f 6e 6f ion <b>Aynchrono
6a90: 75 73 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 62 us Operations</b
6aa0: 3e 2e 20 49 6e 20 63 6f 6e 74 72 61 73 74 20 74 >. In contrast t
6ab0: 6f 20 74 68 65 20 3c 74 74 3e 6f 70 63 75 61 20 o the <tt>opcua
6ac0: 77 72 69 74 65 3c 2f 74 74 3e 20 63 6f 6d 6d 61 write</tt> comma
6ad0: 6e 64 20 74 68 69 73 20 6f 70 65 72 61 74 69 6f nd this operatio
6ae0: 6e 20 74 72 61 6e 73 66 65 72 73 20 61 6c 6c 20 n transfers all
6af0: 76 61 6c 75 65 73 20 77 69 74 68 20 74 68 65 69 values with thei
6b00: 72 20 73 6f 75 72 63 65 20 74 69 6d 65 73 74 61 r source timesta
6b10: 6d 70 20 73 65 74 20 74 6f 20 74 68 65 20 63 75 mp set to the cu
6b20: 72 72 65 6e 74 20 74 69 6d 65 2e 0d 0a 0d 0a 3c rrent time.....<
6b30: 74 74 3e 6f 70 63 75 61 20 6e 61 6d 65 73 70 61 tt>opcua namespa
6b40: 63 65 20 3c 69 3e 68 61 6e 64 6c 65 20 3f 75 72 ce <i>handle ?ur
6b50: 69 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 i?</i></tt>....
6b60: 20 20 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e Returns the n
6b70: 61 6d 65 73 70 61 63 65 20 69 6e 64 65 78 20 66 amespace index f
6b80: 6f 72 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 or the namespace
6b90: 20 3c 74 74 3e 3c 69 3e 75 72 69 3c 2f 69 3e 3c <tt><i>uri</i><
6ba0: 2f 74 74 3e 20 6f 66 20 74 68 65 20 63 6c 69 65 /tt> of the clie
6bb0: 6e 74 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a nt or server obj
6bc0: 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c ect <tt><i>handl
6bd0: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 28 6f 72 20 74 e</i></tt> (or t
6be0: 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72 20 65 hrows an error e
6bf0: 2e 67 2e 20 77 68 65 6e 20 74 68 65 20 6e 61 6d .g. when the nam
6c00: 65 73 70 61 63 65 20 64 6f 65 73 6e 27 74 20 65 espace doesn't e
6c10: 78 69 73 74 29 2e 20 49 66 20 3c 74 74 3e 3c 69 xist). If <tt><i
6c20: 3e 75 72 69 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 >uri</i></tt> is
6c30: 20 6f 6d 69 74 74 65 64 2c 20 61 20 6c 69 73 74 omitted, a list
6c40: 20 6f 66 20 61 6c 6c 20 6b 6e 6f 77 6e 20 6e 61 of all known na
6c50: 6d 65 73 70 61 63 65 20 69 6e 64 69 63 65 73 20 mespace indices
6c60: 61 6e 64 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e and correspondin
6c70: 67 20 55 52 49 73 20 69 73 20 72 65 74 75 72 6e g URIs is return
6c80: 65 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 ed.....<tt>opcua
6c90: 20 6e 65 77 20 3f 63 6c 69 65 6e 74 3f 20 3c 69 new ?client? <i
6ca0: 3e 3f 6e 61 6d 65 3f 3c 2f 69 3e 3c 2f 74 74 3e >?name?</i></tt>
6cb0: 3c 62 72 3e 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 <br>..<tt>opcua
6cc0: 6e 65 77 20 73 65 72 76 65 72 20 3c 69 3e 70 6f new server <i>po
6cd0: 72 74 20 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e rt name</i></tt>
6ce0: 0d 0a 0d 0a 20 20 20 20 43 72 65 61 74 65 73 20 .... Creates
6cf0: 61 20 6e 65 77 20 63 6c 69 65 6e 74 20 6f 72 20 a new client or
6d00: 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 61 6e server object an
6d10: 64 20 72 65 74 75 72 6e 73 20 69 74 73 20 68 61 d returns its ha
6d20: 6e 64 6c 65 2e 20 54 68 65 20 3c 74 74 3e 3c 69 ndle. The <tt><i
6d30: 3e 70 6f 72 74 3c 2f 69 3e 3c 2f 74 74 3e 20 70 >port</i></tt> p
6d40: 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 arameter must be
6d50: 20 70 72 65 73 65 6e 74 20 66 6f 72 20 73 65 72 present for ser
6d60: 76 65 72 20 6f 62 6a 65 63 74 73 20 61 6e 64 20 ver objects and
6d70: 73 70 65 63 69 66 69 65 73 20 74 68 65 20 73 65 specifies the se
6d80: 72 76 65 72 27 73 20 54 43 50 20 70 6f 72 74 2e rver's TCP port.
6d90: 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 3c 74 The optional <t
6da0: 74 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 t><i>name</i></t
6db0: 74 3e 20 69 73 20 74 68 65 20 6f 62 6a 65 63 74 t> is the object
6dc0: 20 6e 61 6d 65 20 28 74 68 65 20 20 68 61 6e 64 name (the hand
6dd0: 6c 65 29 2e 20 49 66 20 6e 6f 20 70 61 72 61 6d le). If no param
6de0: 65 74 65 72 73 20 61 72 65 20 67 69 76 65 6e 20 eters are given
6df0: 74 6f 20 3c 74 74 3e 6f 70 63 75 61 20 6e 65 77 to <tt>opcua new
6e00: 3c 2f 74 74 3e 20 61 20 63 6c 69 65 6e 74 20 6f </tt> a client o
6e10: 62 6a 65 63 74 20 77 69 74 68 20 61 6e 20 61 75 bject with an au
6e20: 74 6f 6d 61 74 69 63 20 6e 61 6d 65 20 69 73 20 tomatic name is
6e30: 63 72 65 61 74 65 64 2e 20 44 75 72 69 6e 67 20 created. During
6e40: 74 68 61 74 20 70 72 6f 63 65 73 73 20 74 68 65 that process the
6e50: 20 54 63 6c 20 6e 61 6d 65 73 70 61 63 65 20 3c Tcl namespace <
6e60: 74 74 3e 3a 3a 6f 70 63 75 61 3a 3a 3c 69 3e 6e tt>::opcua::<i>n
6e70: 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 ame</i></tt> is
6e80: 63 72 65 61 74 65 64 20 77 68 69 63 68 20 6c 61 created which la
6e90: 74 65 72 20 69 73 20 75 73 65 64 20 74 6f 20 68 ter is used to h
6ea0: 6f 6c 64 20 6d 65 74 68 6f 64 20 73 74 75 62 20 old method stub
6eb0: 70 72 6f 63 65 64 75 72 65 73 20 20 61 6e 64 20 procedures and
6ec0: 6f 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f other informatio
6ed0: 6e 2e 20 54 68 61 74 20 6e 61 6d 65 73 70 61 63 n. That namespac
6ee0: 65 20 69 73 20 74 69 65 64 20 74 6f 20 74 68 65 e is tied to the
6ef0: 20 6c 69 66 65 20 74 69 6d 65 20 6f 66 20 74 68 life time of th
6f00: 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 e client or serv
6f10: 65 72 20 6f 62 6a 65 63 74 2e 20 54 68 65 20 69 er object. The i
6f20: 6e 69 74 69 61 6c 20 61 63 63 65 73 73 20 63 6f nitial access co
6f30: 6e 74 72 6f 6c 20 6c 69 73 74 20 6f 66 20 61 20 ntrol list of a
6f40: 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 69 73 server object is
6f50: 20 65 6d 70 74 79 2e 0d 0a 0d 0a 3c 74 74 3e 6f empty.....<tt>o
6f60: 70 63 75 61 20 6f 6e 63 6c 69 65 6e 74 73 74 61 pcua onclientsta
6f70: 74 65 20 3c 69 3e 68 61 6e 64 6c 65 20 3f 63 6d te <i>handle ?cm
6f80: 64 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 d?</i></tt>....
6f90: 20 20 20 52 65 74 75 72 6e 73 20 6f 72 20 73 65 Returns or se
6fa0: 74 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 ts the callback
6fb0: 66 6f 72 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 for client conne
6fc0: 63 74 69 6f 6e 20 73 74 61 74 65 20 63 68 61 6e ction state chan
6fd0: 67 65 73 20 66 6f 72 20 74 68 65 20 63 6c 69 65 ges for the clie
6fe0: 6e 74 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 nt object <tt><i
6ff0: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
7000: 2e 20 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 . The parameter
7010: 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f <tt><i>cmd</i></
7020: 74 74 3e 20 69 73 20 74 68 65 20 54 63 6c 20 63 tt> is the Tcl c
7030: 61 6c 6c 62 61 63 6b 20 74 6f 20 72 65 63 65 69 allback to recei
7040: 76 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 ve connection st
7050: 61 74 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 3b ate information;
7060: 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 it is invoked w
7070: 69 74 68 20 74 68 72 65 65 20 61 64 64 65 64 20 ith three added
7080: 70 61 72 61 6d 65 74 65 72 73 3a 20 31 2e 20 74 parameters: 1. t
7090: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 he connection st
70a0: 61 74 65 20 61 73 20 6e 75 6d 65 72 69 63 20 4f ate as numeric O
70b0: 50 43 2f 55 41 20 73 74 61 74 75 73 20 63 6f 64 PC/UA status cod
70c0: 65 2c 20 32 2e 20 74 68 65 20 73 65 63 75 72 65 e, 2. the secure
70d0: 20 63 68 61 6e 6e 65 6c 20 73 74 61 74 65 20 61 channel state a
70e0: 73 20 61 20 73 74 72 69 6e 67 2c 20 61 6e 64 20 s a string, and
70f0: 33 2e 20 74 68 65 20 73 65 73 73 69 6f 6e 20 73 3. the session s
7100: 74 61 74 65 20 61 73 20 61 20 73 74 72 69 6e 67 tate as a string
7110: 2e 20 50 6f 73 73 69 62 6c 65 20 73 65 63 75 72 . Possible secur
7120: 65 20 63 68 61 6e 6e 65 6c 20 73 74 61 74 65 73 e channel states
7130: 20 61 72 65 20 3c 74 74 3e 63 6c 6f 73 65 64 3c are <tt>closed<
7140: 2f 74 74 3e 2c 20 3c 74 74 3e 68 65 6c 5f 73 65 /tt>, <tt>hel_se
7150: 6e 74 3c 2f 74 74 3e 2c 20 3c 74 74 3e 68 65 6c nt</tt>, <tt>hel
7160: 5f 72 65 63 65 69 76 65 64 3c 2f 74 74 3e 2c 20 _received</tt>,
7170: 3c 74 74 3e 61 63 6b 5f 73 65 6e 74 3c 2f 74 74 <tt>ack_sent</tt
7180: 3e 2c 20 3c 74 74 3e 61 63 6b 5f 72 65 63 65 69 >, <tt>ack_recei
7190: 76 65 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e 6f 70 ved</tt>, <tt>op
71a0: 6e 5f 73 65 6e 74 3c 2f 74 74 3e 2c 20 3c 74 74 n_sent</tt>, <tt
71b0: 3e 6f 70 65 6e 3c 2f 74 74 3e 2c 20 61 6e 64 20 >open</tt>, and
71c0: 3c 74 74 3e 63 6c 6f 73 69 6e 67 3c 2f 74 74 3e <tt>closing</tt>
71d0: 2e 20 50 6f 73 73 69 62 6c 65 20 73 65 73 73 69 . Possible sessi
71e0: 6f 6e 20 73 74 61 74 65 73 20 61 72 65 20 3c 74 on states are <t
71f0: 74 3e 63 6c 6f 73 65 64 3c 2f 74 74 3e 2c 20 3c t>closed</tt>, <
7200: 74 74 3e 63 72 65 61 74 65 5f 72 65 71 75 65 73 tt>create_reques
7210: 74 65 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e 63 72 ted</tt>, <tt>cr
7220: 65 61 74 65 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e eated</tt>, <tt>
7230: 61 63 74 69 76 61 74 65 5f 72 65 71 75 65 73 74 activate_request
7240: 65 64 3c 2f 74 74 3e 2c 20 3c 74 74 3e 61 63 74 ed</tt>, <tt>act
7250: 69 76 61 74 65 64 3c 2f 74 74 3e 2c 20 61 6e 64 ivated</tt>, and
7260: 20 3c 74 74 3e 63 6c 6f 73 69 6e 67 3c 2f 74 74 <tt>closing</tt
7270: 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 >.....<tt>opcua
7280: 6f 6e 66 69 6e 61 6c 69 7a 65 20 3c 69 3e 68 61 onfinalize <i>ha
7290: 6e 64 6c 65 20 3f 63 6d 64 3f 3c 2f 69 3e 3c 2f ndle ?cmd?</i></
72a0: 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 tt>.... Retur
72b0: 6e 73 20 6f 72 20 73 65 74 73 20 74 68 65 20 63 ns or sets the c
72c0: 61 6c 6c 62 61 63 6b 20 66 6f 72 20 6e 6f 64 65 allback for node
72d0: 20 66 69 6e 61 6c 69 7a 61 74 69 6f 6e 20 65 76 finalization ev
72e0: 65 6e 74 73 20 6f 6e 20 74 68 65 20 73 65 72 76 ents on the serv
72f0: 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 er object <tt><i
7300: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
7310: 2e 20 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 . The parameter
7320: 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c 2f <tt><i>cmd</i></
7330: 74 74 3e 20 69 73 20 74 68 65 20 54 63 6c 20 63 tt> is the Tcl c
7340: 61 6c 6c 62 61 63 6b 20 74 6f 20 68 61 6e 64 6c allback to handl
7350: 65 20 74 68 65 20 66 69 6e 61 6c 69 7a 61 74 69 e the finalizati
7360: 6f 6e 20 65 76 65 6e 74 3b 20 69 74 20 69 73 20 on event; it is
7370: 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 6e invoked when a n
7380: 6f 64 65 20 69 6e 20 74 68 65 20 73 65 72 76 65 ode in the serve
7390: 72 27 73 20 61 64 64 72 65 73 73 20 73 70 61 63 r's address spac
73a0: 65 20 69 73 20 64 65 6c 65 74 65 64 20 77 69 74 e is deleted wit
73b0: 68 20 6f 6e 65 20 61 64 64 69 74 69 6f 6e 61 6c h one additional
73c0: 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 parameter which
73d0: 20 69 73 20 74 68 65 20 6e 6f 64 65 20 69 64 65 is the node ide
73e0: 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65 20 6e ntifier of the n
73f0: 6f 64 65 20 62 65 69 6e 67 20 64 65 6c 65 74 65 ode being delete
7400: 64 2e 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 d. <tt><i>cmd</i
7410: 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 68 61 76 65 ></tt> must have
7420: 20 70 72 6f 70 65 72 20 6c 69 73 74 20 66 6f 72 proper list for
7430: 6d 61 74 2e 20 49 66 20 73 70 65 63 69 66 69 65 mat. If specifie
7440: 64 20 61 73 20 61 6e 20 65 6d 70 74 79 20 6c 69 d as an empty li
7450: 73 74 2c 20 6e 6f 20 63 61 6c 6c 62 61 63 6b 20 st, no callback
7460: 6f 6e 20 6e 6f 64 65 20 66 69 6e 61 6c 69 7a 61 on node finaliza
7470: 74 69 6f 6e 20 69 73 20 63 61 72 72 69 65 64 20 tion is carried
7480: 6f 75 74 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 out.....<tt>opcu
7490: 61 20 6f 6e 69 6e 69 74 69 61 6c 69 7a 65 20 3c a oninitialize <
74a0: 69 3e 68 61 6e 64 6c 65 20 3f 63 6d 64 3f 3c 2f i>handle ?cmd?</
74b0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 i></tt>.... R
74c0: 65 74 75 72 6e 73 20 6f 72 20 73 65 74 73 20 74 eturns or sets t
74d0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 he callback for
74e0: 6e 6f 64 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 node initializat
74f0: 69 6f 6e 20 65 76 65 6e 74 73 20 6f 6e 20 74 68 ion events on th
7500: 65 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 e server object
7510: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
7520: 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 70 61 72 61 ></tt>. The para
7530: 6d 65 74 65 72 20 3c 74 74 3e 3c 69 3e 63 6d 64 meter <tt><i>cmd
7540: 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 74 68 65 </i></tt> is the
7550: 20 54 63 6c 20 63 61 6c 6c 62 61 63 6b 20 74 6f Tcl callback to
7560: 20 68 61 6e 64 6c 65 20 74 68 65 20 69 6e 69 74 handle the init
7570: 69 61 6c 69 7a 61 74 69 6f 6e 20 65 76 65 6e 74 ialization event
7580: 3b 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 ; it is invoked
7590: 77 68 65 6e 20 61 20 6e 65 77 20 6e 6f 64 65 20 when a new node
75a0: 69 73 20 61 64 64 65 64 20 69 6e 0d 0a 74 68 65 is added in..the
75b0: 20 73 65 72 76 65 72 27 73 20 61 64 64 72 65 73 server's addres
75c0: 73 20 73 70 61 63 65 20 77 69 74 68 20 74 77 6f s space with two
75d0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 61 72 61 additional para
75e0: 6d 65 74 65 72 20 77 68 69 63 68 20 61 72 65 20 meter which are
75f0: 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 the node identif
7600: 69 65 72 20 6f 66 20 74 68 65 20 6e 65 77 20 6e ier of the new n
7610: 6f 64 65 20 61 6e 64 20 69 74 73 20 6e 6f 64 65 ode and its node
7620: 20 63 6c 61 73 73 2e 20 3c 74 74 3e 3c 69 3e 43 class. <tt><i>C
7630: 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 md</i></tt> must
7640: 20 68 61 76 65 20 70 72 6f 70 65 72 20 6c 69 73 have proper lis
7650: 74 20 66 6f 72 6d 61 74 2e 20 49 66 20 73 70 65 t format. If spe
7660: 63 69 66 69 65 64 20 61 73 20 61 6e 20 65 6d 70 cified as an emp
7670: 74 79 20 6c 69 73 74 2c 20 6e 6f 20 63 61 6c 6c ty list, no call
7680: 62 61 63 6b 20 6f 6e 20 6e 6f 64 65 20 69 6e 69 back on node ini
7690: 74 69 61 6c 69 7a 61 74 69 6f 6e 20 69 73 20 63 tialization is c
76a0: 61 72 72 69 65 64 20 6f 75 74 2e 0d 0a 0d 0a 3c arried out.....<
76b0: 74 74 3e 6f 70 63 75 61 20 70 61 72 65 6e 74 20 tt>opcua parent
76c0: 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 65 69 64 <i>handle nodeid
76d0: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
76e0: 20 52 65 74 75 72 6e 73 20 74 68 65 20 70 61 72 Returns the par
76f0: 65 6e 74 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 ent node identif
7700: 69 65 72 20 6f 66 20 74 68 65 20 67 69 76 65 6e ier of the given
7710: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
7720: 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f <tt><i>nodeid</
7730: 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 63 i></tt> on the c
7740: 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 20 lient or server
7750: 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 object <tt><i>ha
7760: 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a ndle</i></tt>...
7770: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 70 74 72 65 ..<tt>opcua ptre
7780: 65 20 3c 69 3e 68 61 6e 64 6c 65 20 3f 6e 6f 64 e <i>handle ?nod
7790: 65 69 64 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d eid?</i></tt>...
77a0: 0a 20 20 20 20 52 65 74 75 72 6e 73 20 69 6e 66 . Returns inf
77b0: 6f 72 6d 61 74 69 6f 6e 20 73 69 6d 69 6c 61 72 ormation similar
77c0: 20 74 6f 20 3c 74 74 3e 6f 70 63 75 61 20 74 72 to <tt>opcua tr
77d0: 65 65 3c 2f 74 74 3e 20 75 73 69 6e 67 20 74 68 ee</tt> using th
77e0: 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 e client or serv
77f0: 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 er object <tt><i
7800: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
7810: 2e 20 54 68 65 20 61 64 64 72 65 73 73 20 73 70 . The address sp
7820: 61 63 65 20 69 73 20 74 72 61 76 65 72 73 65 64 ace is traversed
7830: 20 73 74 61 72 74 69 6e 67 20 61 74 20 74 68 65 starting at the
7840: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
7850: 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f <tt><i>nodeid</
7860: 69 3e 3c 2f 74 74 3e 20 28 74 68 65 20 72 6f 6f i></tt> (the roo
7870: 74 20 6e 6f 64 65 20 69 66 20 6f 6d 69 74 74 65 t node if omitte
7880: 64 29 2e 20 54 68 65 20 72 65 73 75 6c 74 20 6c d). The result l
7890: 69 73 74 20 69 73 20 6d 61 64 65 20 75 70 20 6f ist is made up o
78a0: 66 20 62 72 6f 77 73 65 20 70 61 74 68 20 6e 61 f browse path na
78b0: 6d 65 2c 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 me, node identif
78c0: 69 65 72 2c 20 6e 6f 64 65 20 63 6c 61 73 73 20 ier, node class
78d0: 70 61 74 68 2c 20 72 65 66 65 72 65 6e 63 65 20 path, reference
78e0: 6e 6f 64 65 20 69 64 65 6e 74 69 65 72 2c 20 74 node identier, t
78f0: 79 70 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 ype node identif
7900: 69 65 72 2c 20 61 6e 64 20 70 61 72 65 6e 74 20 ier, and parent
7910: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 2e node identifier.
7920: 20 54 68 65 20 62 72 6f 77 73 65 20 70 61 74 68 The browse path
7930: 20 6e 61 6d 65 20 69 73 20 61 20 70 61 74 68 20 name is a path
7940: 6e 61 6d 65 20 6c 69 6b 65 20 6e 6f 74 61 74 69 name like notati
7950: 6f 6e 20 6d 61 64 65 20 75 70 20 6f 66 20 74 68 on made up of th
7960: 65 20 62 72 6f 77 73 65 20 6e 61 6d 65 73 20 70 e browse names p
7970: 6f 69 6e 74 69 6e 67 20 74 6f 20 74 68 65 20 66 ointing to the f
7980: 69 6e 61 6c 20 6e 6f 64 65 20 61 73 20 73 65 65 inal node as see
7990: 6e 20 66 72 6f 6d 20 74 68 65 20 73 74 61 72 74 n from the start
79a0: 69 6e 67 20 6e 6f 64 65 2e 20 42 72 6f 77 73 65 ing node. Browse
79b0: 20 6e 61 6d 65 73 20 61 72 65 20 77 72 69 74 74 names are writt
79c0: 65 6e 20 61 73 20 71 75 61 6c 69 66 69 65 64 20 en as qualified
79d0: 6e 61 6d 65 73 2c 20 69 2e 65 2e 20 69 6e 63 6c names, i.e. incl
79e0: 75 64 69 6e 67 20 74 68 65 20 6e 75 6d 65 72 69 uding the numeri
79f0: 63 20 6e 61 6d 65 73 70 61 63 65 20 69 6e 64 65 c namespace inde
7a00: 78 20 69 66 20 6e 6f 74 20 69 6e 20 72 6f 6f 74 x if not in root
7a10: 20 6e 61 6d 65 73 70 61 63 65 2e 20 53 69 6d 69 namespace. Simi
7a20: 6c 61 72 6c 79 2c 20 74 68 65 20 6e 6f 64 65 20 larly, the node
7a30: 63 6c 61 73 73 20 70 61 74 68 20 69 73 20 61 20 class path is a
7a40: 70 61 74 68 20 6e 61 6d 65 20 6c 69 6b 65 20 6e path name like n
7a50: 6f 74 61 74 69 6f 6e 20 6d 61 64 65 20 75 70 20 otation made up
7a60: 6f 66 20 74 68 65 20 6e 6f 64 65 20 63 6c 61 73 of the node clas
7a70: 73 65 73 20 6f 66 20 61 6c 6c 20 6e 6f 64 65 73 ses of all nodes
7a80: 20 61 6c 6f 6e 67 20 74 68 65 20 70 61 74 68 2e along the path.
7a90: 20 54 68 65 20 3c 74 74 3e 6f 70 63 75 61 20 70 The <tt>opcua p
7aa0: 74 72 65 65 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e tree</tt> comman
7ab0: 64 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e d is used intern
7ac0: 61 6c 6c 79 20 62 79 20 74 68 65 20 3c 74 74 3e ally by the <tt>
7ad0: 6f 70 63 75 61 20 67 65 6e 73 74 75 62 73 3c 2f opcua genstubs</
7ae0: 74 74 3e 20 63 6f 6d 6d 61 6e 64 20 69 6e 20 6f tt> command in o
7af0: 72 64 65 72 20 74 6f 20 66 69 6c 74 65 72 20 6f rder to filter o
7b00: 75 74 20 6f 62 6a 65 63 74 73 20 61 6e 64 20 6d ut objects and m
7b10: 65 74 68 6f 64 73 20 77 68 65 6e 20 63 72 65 61 ethods when crea
7b20: 74 69 6e 67 20 73 74 75 62 20 54 63 6c 20 63 6f ting stub Tcl co
7b30: 6d 6d 61 6e 64 73 20 74 6f 20 69 6e 76 6f 6b 65 mmands to invoke
7b40: 20 6d 65 74 68 6f 64 73 20 6f 6e 20 6f 62 6a 65 methods on obje
7b50: 63 74 73 2e 0d 0a 0d 0a 3c 74 74 3e 42 6f 70 63 cts.....<tt>Bopc
7b60: 75 61 20 70 75 62 73 75 62 20 3c 69 3e 68 61 6e ua pubsub <i>han
7b70: 64 6c 65 3c 2f 69 3e 20 41 64 64 43 6f 6e 6e 65 dle</i> AddConne
7b80: 63 74 69 6f 6e 20 3c 69 3e 63 6f 6e 66 69 67 3c ction <i>config<
7b90: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
7ba0: 41 64 64 73 20 61 20 6e 65 77 20 3c 74 74 3e 50 Adds a new <tt>P
7bb0: 75 62 53 75 62 43 6f 6e 6e 65 63 74 69 6f 6e 3c ubSubConnection<
7bc0: 2f 74 74 3e 20 77 69 74 68 20 74 68 65 20 70 61 /tt> with the pa
7bd0: 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 3c 74 rameters from <t
7be0: 74 3e 3c 69 3e 63 6f 6e 66 69 67 3c 2f 69 3e 3c t><i>config</i><
7bf0: 2f 74 74 3e 2c 20 77 68 69 63 68 20 6d 75 73 74 /tt>, which must
7c00: 20 62 65 20 61 20 64 69 63 74 69 6f 6e 61 72 79 be a dictionary
7c10: 20 6f 66 20 74 79 70 65 20 3c 74 74 3e 50 75 62 of type <tt>Pub
7c20: 53 75 62 43 6f 6e 6e 65 63 74 69 6f 6e 44 61 74 SubConnectionDat
7c30: 61 54 79 70 65 3c 2f 74 74 3e 2e 20 54 68 65 20 aType</tt>. The
7c40: 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 63 61 72 operation is car
7c50: 72 69 65 64 20 6f 75 74 20 6f 6e 20 74 68 65 20 ried out on the
7c60: 73 65 72 76 65 72 20 67 69 76 65 6e 20 74 68 65 server given the
7c70: 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 65 client or serve
7c80: 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e r object <tt><i>
7c90: 68 61 6e 64 6c 65 3c 69 3e 3c 2f 74 74 3e 2e 20 handle<i></tt>.
7ca0: 54 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 The node identif
7cb0: 69 65 72 20 6f 66 20 74 68 65 20 6e 65 77 20 3c ier of the new <
7cc0: 74 74 3e 50 75 62 53 75 62 43 6f 6e 6e 65 63 74 tt>PubSubConnect
7cd0: 69 6f 6e 3c 2f 74 74 3e 20 69 73 20 72 65 74 75 ion</tt> is retu
7ce0: 72 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 rned.....<tt>opc
7cf0: 75 61 20 70 75 62 73 75 62 20 3c 69 3e 68 61 6e ua pubsub <i>han
7d00: 64 6c 65 3c 2f 69 3e 20 41 64 64 44 61 74 61 53 dle</i> AddDataS
7d10: 65 74 46 6f 6c 64 65 72 20 3c 69 3e 6e 61 6d 65 etFolder <i>name
7d20: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
7d30: 20 41 64 64 73 20 61 20 6e 65 77 20 3c 74 74 3e Adds a new <tt>
7d40: 44 61 74 61 53 65 74 46 6f 6c 64 65 72 3c 2f 74 DataSetFolder</t
7d50: 74 3e 20 6f 62 6a 65 63 74 20 77 69 74 68 20 6e t> object with n
7d60: 61 6d 65 20 3c 74 74 3e 3c 69 3e 6e 61 6d 65 3c ame <tt><i>name<
7d70: 2f 69 3e 3c 2f 74 74 3e 20 69 6e 20 74 68 65 20 /i></tt> in the
7d80: 73 65 72 76 65 72 20 67 69 76 65 6e 20 74 68 65 server given the
7d90: 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 65 client or serve
7da0: 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e r object <tt><i>
7db0: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e handle</i></tt>.
7dc0: 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 The operation i
7dd0: 73 20 63 61 72 72 69 65 64 20 6f 75 74 20 6f 6e s carried out on
7de0: 20 74 68 65 20 73 65 72 76 65 72 20 67 69 76 65 the server give
7df0: 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 0d n the client or.
7e00: 0a 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c .server object <
7e10: 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e tt><i>handle</i>
7e20: 3c 2f 74 74 3e 2e 20 54 68 65 20 6e 6f 64 65 20 </tt>. The node
7e30: 69 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 identifier of th
7e40: 65 20 6e 65 77 20 3c 74 74 3e 44 61 74 61 53 65 e new <tt>DataSe
7e50: 74 46 6f 6c 64 65 72 3c 2f 74 74 3e 20 69 73 20 tFolder</tt> is
7e60: 72 65 74 75 72 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 returned.....<tt
7e70: 3e 6f 70 63 75 61 20 70 75 62 73 75 62 20 3c 69 >opcua pubsub <i
7e80: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 41 64 64 44 >handle</i> AddD
7e90: 61 74 61 53 65 74 52 65 61 64 65 72 20 3c 69 3e ataSetReader <i>
7ea0: 67 72 6f 75 70 49 64 20 72 65 61 64 65 72 44 61 groupId readerDa
7eb0: 74 61 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 ta</i></tt>....
7ec0: 20 20 20 41 64 64 73 20 61 20 6e 65 77 20 3c 74 Adds a new <t
7ed0: 74 3e 44 61 74 61 53 65 74 52 65 61 64 65 72 3c t>DataSetReader<
7ee0: 2f 74 74 3e 20 6f 62 6a 65 63 74 20 77 69 74 68 /tt> object with
7ef0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f information fro
7f00: 6d 20 3c 74 74 3e 3c 69 3e 72 65 61 64 65 72 44 m <tt><i>readerD
7f10: 61 74 61 3c 2f 69 3e 3c 2f 74 74 3e 20 77 68 69 ata</i></tt> whi
7f20: 63 68 20 6d 75 73 74 20 62 65 20 61 20 64 69 63 ch must be a dic
7f30: 74 69 6f 6e 61 72 79 20 6f 66 20 74 79 70 65 20 tionary of type
7f40: 3c 74 74 3e 44 61 74 61 53 65 74 52 65 61 64 65 <tt>DataSetReade
7f50: 72 44 61 74 61 54 79 70 65 3c 2f 74 74 3e 20 6f rDataType</tt> o
7f60: 6e 20 74 68 65 20 3c 74 74 3e 52 65 61 64 65 72 n the <tt>Reader
7f70: 47 72 6f 75 70 3c 2f 74 74 3e 20 77 69 74 68 20 Group</tt> with
7f80: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 20 node identifier
7f90: 3c 74 74 3e 3c 69 3e 67 72 6f 75 70 49 64 3c 2f <tt><i>groupId</
7fa0: 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6f 70 65 i></tt>. The ope
7fb0: 72 61 74 69 6f 6e 20 69 73 20 63 61 72 72 69 65 ration is carrie
7fc0: 64 20 6f 75 74 20 6f 6e 20 74 68 65 20 73 65 72 d out on the ser
7fd0: 76 65 72 20 67 69 76 65 6e 20 74 68 65 20 63 6c ver given the cl
7fe0: 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 20 6f ient or server o
7ff0: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
8000: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 dle</i></tt>. Th
8010: 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 e node identifie
8020: 72 20 6f 66 20 74 68 65 20 6e 65 77 20 3c 74 74 r of the new <tt
8030: 3e 44 61 74 61 53 65 74 52 65 61 64 65 72 3c 2f >DataSetReader</
8040: 74 74 3e 20 69 73 20 72 65 74 75 72 6e 65 64 2e tt> is returned.
8050: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 70 75 ....<tt>opcua pu
8060: 62 73 75 62 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f bsub <i>handle</
8070: 69 3e 20 41 64 64 44 61 74 61 53 65 74 57 72 69 i> AddDataSetWri
8080: 74 65 72 20 3c 69 3e 67 72 6f 75 70 49 64 20 77 ter <i>groupId w
8090: 72 69 74 65 72 44 61 74 61 3c 2f 69 3e 3c 2f 74 riterData</i></t
80a0: 74 3e 0d 0a 0d 0a 20 20 20 20 41 64 64 73 20 61 t>.... Adds a
80b0: 20 6e 65 77 20 3c 74 74 3e 44 61 74 61 53 65 74 new <tt>DataSet
80c0: 57 72 69 74 65 72 3c 2f 74 74 3e 20 6f 62 6a 65 Writer</tt> obje
80d0: 63 74 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 ct with informat
80e0: 69 6f 6e 20 66 72 6f 6d 20 3c 74 74 3e 3c 69 3e ion from <tt><i>
80f0: 77 72 69 74 65 72 44 61 74 61 3c 2f 69 3e 3c 2f writerData</i></
8100: 74 74 3e 20 77 68 69 63 68 20 6d 75 73 74 20 62 tt> which must b
8110: 65 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 6f e a dictionary o
8120: 66 20 74 79 70 65 20 3c 74 74 3e 44 61 74 61 53 f type <tt>DataS
8130: 65 74 57 72 69 74 65 72 44 61 74 61 54 79 70 65 etWriterDataType
8140: 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 3c 74 74 </tt> on the <tt
8150: 3e 57 72 69 74 65 72 47 72 6f 75 70 3c 2f 74 74 >WriterGroup</tt
8160: 3e 20 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e > with node iden
8170: 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 67 72 tifier <tt><i>gr
8180: 6f 75 70 49 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 oupId</i></tt>.
8190: 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 The operation is
81a0: 20 63 61 72 72 69 65 64 20 6f 75 74 20 6f 6e 20 carried out on
81b0: 74 68 65 20 73 65 72 76 65 72 20 67 69 76 65 6e the server given
81c0: 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 the client or s
81d0: 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 erver object <tt
81e0: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
81f0: 74 74 3e 2e 20 54 68 65 20 6e 6f 64 65 20 69 64 tt>. The node id
8200: 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65 20 entifier of the
8210: 6e 65 77 20 3c 74 74 3e 44 61 74 61 53 65 74 57 new <tt>DataSetW
8220: 72 69 74 65 72 3c 2f 74 74 3e 20 69 73 20 72 65 riter</tt> is re
8230: 74 75 72 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f turned.....<tt>o
8240: 70 63 75 61 20 70 75 62 73 75 62 20 3c 69 3e 68 pcua pubsub <i>h
8250: 61 6e 64 6c 65 3c 2f 69 3e 20 41 64 64 50 75 62 andle</i> AddPub
8260: 6c 69 73 68 65 64 44 61 74 61 49 74 65 6d 73 20 lishedDataItems
8270: 3c 69 3e 6e 61 6d 65 20 61 6c 69 61 73 65 73 20 <i>name aliases
8280: 66 6c 61 67 73 20 76 61 72 73 3c 2f 69 3e 3c 2f flags vars</i></
8290: 74 74 3e 0d 0a 0d 0a 20 20 20 20 41 64 64 73 20 tt>.... Adds
82a0: 61 20 6e 65 77 20 3c 74 74 3e 50 75 62 6c 69 73 a new <tt>Publis
82b0: 68 65 64 44 61 74 61 53 65 74 3c 2f 74 74 3e 20 hedDataSet</tt>
82c0: 77 69 74 68 20 6e 61 6d 65 20 3c 74 74 3e 3c 69 with name <tt><i
82d0: 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 3e 20 61 >name</i></tt> a
82e0: 6e 64 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 nd the informati
82f0: 6f 6e 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 on contained in
8300: 74 68 65 20 74 68 72 65 65 20 70 61 72 61 6d 65 the three parame
8310: 74 65 72 73 20 3c 74 74 3e 3c 69 3e 61 6c 69 61 ters <tt><i>alia
8320: 73 65 73 3c 2f 69 3e 3c 2f 74 74 3e 20 28 6c 69 ses</i></tt> (li
8330: 73 74 20 6f 66 20 3c 74 74 3e 53 74 72 69 6e 67 st of <tt>String
8340: 3c 2f 74 74 3e 20 74 79 70 65 29 2c 20 3c 74 74 </tt> type), <tt
8350: 3e 3c 69 3e 66 6c 61 67 73 3c 2f 69 3e 3c 2f 74 ><i>flags</i></t
8360: 74 3e 20 28 6c 69 73 74 20 6f 66 20 3c 74 74 3e t> (list of <tt>
8370: 55 49 6e 74 31 36 3c 2f 74 74 3e 20 74 79 70 65 UInt16</tt> type
8380: 29 2c 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 76 61 ), and <tt><i>va
8390: 72 73 3c 2f 69 3e 3c 2f 74 74 3e 20 28 6c 69 73 rs</i></tt> (lis
83a0: 74 20 6f 66 20 3c 74 74 3e 50 75 62 6c 69 73 68 t of <tt>Publish
83b0: 65 64 56 61 72 69 61 62 6c 65 44 61 74 61 54 79 edVariableDataTy
83c0: 70 65 3c 2f 74 74 3e 29 2e 20 54 68 65 20 74 68 pe</tt>). The th
83d0: 72 65 65 20 6c 69 73 74 73 20 6d 75 73 74 20 68 ree lists must h
83e0: 61 76 65 20 74 68 65 20 73 61 6d 65 20 6e 75 6d ave the same num
83f0: 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 2e ber of elements.
8400: 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 The operation i
8410: 73 20 63 61 72 72 69 65 64 20 6f 75 74 20 6f 6e s carried out on
8420: 20 74 68 65 20 73 65 72 76 65 72 20 67 69 76 65 the server give
8430: 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 n the client or
8440: 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 server object <t
8450: 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c t><i>handle</i><
8460: 2f 74 74 3e 2e 20 54 68 65 20 6e 6f 64 65 20 69 /tt>. The node i
8470: 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65 dentifier of the
8480: 20 6e 65 77 20 3c 74 74 3e 50 75 62 6c 69 73 68 new <tt>Publish
8490: 65 64 44 61 74 61 53 65 74 3c 2f 74 74 3e 20 69 edDataSet</tt> i
84a0: 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 0d 0a 3c s returned.....<
84b0: 74 74 3e 6f 70 63 75 61 20 70 75 62 73 75 62 20 tt>opcua pubsub
84c0: 3c 2f 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 41 </i>handle</i> A
84d0: 64 64 52 65 61 64 65 72 47 72 6f 75 70 20 3c 69 ddReaderGroup <i
84e0: 3e 63 6f 6e 6e 49 64 20 72 65 61 64 65 72 47 72 >connId readerGr
84f0: 6f 75 70 44 61 74 61 3c 2f 69 3e 3c 2f 74 74 3e oupData</i></tt>
8500: 0d 0a 0d 0a 20 20 20 20 41 64 64 73 20 61 20 6e .... Adds a n
8510: 65 77 20 3c 74 74 3e 52 65 61 64 65 72 47 72 6f ew <tt>ReaderGro
8520: 75 70 3c 2f 74 74 3e 20 6f 62 6a 65 63 74 20 77 up</tt> object w
8530: 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 ith information
8540: 66 72 6f 6d 20 3c 74 74 3e 3c 69 3e 72 65 61 64 from <tt><i>read
8550: 65 72 47 72 6f 75 70 44 61 74 61 3c 2f 69 3e 3c erGroupData</i><
8560: 2f 74 74 3e 20 77 68 69 63 68 20 6d 75 73 74 20 /tt> which must
8570: 62 65 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 be a dictionary
8580: 6f 66 20 74 79 70 65 20 3c 74 74 3e 52 65 61 64 of type <tt>Read
8590: 65 72 47 72 6f 75 70 44 61 74 61 54 79 70 65 3c erGroupDataType<
85a0: 2f 74 74 3e 20 6f 6e 20 74 68 65 20 3c 74 74 3e /tt> on the <tt>
85b0: 50 75 62 53 75 62 43 6f 6e 6e 65 63 74 69 6f 6e PubSubConnection
85c0: 3c 2f 74 74 3e 20 77 69 74 68 20 6e 6f 64 65 20 </tt> with node
85d0: 69 64 65 6e 74 69 66 69 65 72 20 3c 74 74 3e 3c identifier <tt><
85e0: 69 3e 63 6f 6e 6e 49 64 3c 2f 69 3e 3c 2f 74 74 i>connId</i></tt
85f0: 3e 2e 20 54 68 65 20 6f 70 65 72 61 74 69 6f 6e >. The operation
8600: 20 69 73 20 63 61 72 72 69 65 64 20 6f 75 74 20 is carried out
8610: 6f 6e 20 74 68 65 20 73 65 72 76 65 72 20 67 69 on the server gi
8620: 76 65 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f ven the client o
8630: 72 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 20 r server object
8640: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
8650: 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6e 6f 64 65 ></tt>. The node
8660: 20 69 64 65 6e 74 69 66 69 65 72 20 6f 66 20 74 identifier of t
8670: 68 65 20 6e 65 77 20 3c 74 74 3e 52 65 61 64 65 he new <tt>Reade
8680: 72 47 72 6f 75 70 3c 2f 74 74 3e 20 69 73 20 72 rGroup</tt> is r
8690: 65 74 75 72 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 3e eturned.....<tt>
86a0: 6f 70 63 75 61 20 70 75 62 73 75 62 20 3c 69 3e opcua pubsub <i>
86b0: 68 61 6e 64 6c 65 3c 2f 69 3e 20 41 64 64 57 72 handle</i> AddWr
86c0: 69 74 65 72 47 72 6f 75 70 20 3c 69 3e 63 6f 6e iterGroup <i>con
86d0: 6e 49 64 20 77 72 69 74 65 72 47 72 6f 75 70 44 nId writerGroupD
86e0: 61 74 61 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a ata</i></tt>....
86f0: 20 20 20 20 41 64 64 73 20 61 20 6e 65 77 20 3c Adds a new <
8700: 74 74 3e 57 72 69 74 65 72 47 72 6f 75 70 3c 2f tt>WriterGroup</
8710: 74 74 3e 20 6f 62 6a 65 63 74 20 77 69 74 68 20 tt> object with
8720: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d information from
8730: 20 3c 74 74 3e 3c 69 3e 77 72 69 74 65 72 47 72 <tt><i>writerGr
8740: 6f 75 70 44 61 74 61 3c 2f 69 3e 3c 2f 74 74 3e oupData</i></tt>
8750: 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 20 61 which must be a
8760: 20 64 69 63 74 69 6f 6e 61 72 79 20 6f 66 20 74 dictionary of t
8770: 79 70 65 20 3c 74 74 3e 57 72 69 74 65 72 47 72 ype <tt>WriterGr
8780: 6f 75 70 44 61 74 61 54 79 70 65 3c 2f 74 74 3e oupDataType</tt>
8790: 20 6f 6e 20 74 68 65 20 3c 74 74 3e 50 75 62 53 on the <tt>PubS
87a0: 75 62 43 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 74 74 ubConnection</tt
87b0: 3e 20 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e > with node iden
87c0: 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 63 6f tifier <tt><i>co
87d0: 6e 6e 49 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 nnId</i></tt>. T
87e0: 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 he operation is
87f0: 63 61 72 72 69 65 64 20 6f 75 74 20 6f 6e 20 74 carried out on t
8800: 68 65 20 73 65 72 76 65 72 20 67 69 76 65 6e 20 he server given
8810: 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 the client or se
8820: 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e rver object <tt>
8830: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
8840: 74 3e 2e 20 54 68 65 20 6e 6f 64 65 20 69 64 65 t>. The node ide
8850: 6e 74 69 66 69 65 72 20 6f 66 20 74 68 65 20 6e ntifier of the n
8860: 65 77 20 3c 74 74 3e 57 72 69 74 65 72 47 72 6f ew <tt>WriterGro
8870: 75 70 3c 2f 74 74 3e 20 69 73 20 72 65 74 75 72 up</tt> is retur
8880: 6e 65 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 ned.....<tt>opcu
8890: 61 20 70 75 62 73 75 62 20 3c 69 3e 68 61 6e 64 a pubsub <i>hand
88a0: 6c 65 3c 2f 69 3e 20 44 65 6c 65 74 65 50 75 62 le</i> DeletePub
88b0: 53 75 62 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e SubConfiguration
88c0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 6d </tt>.... Rem
88d0: 6f 76 65 73 20 61 6c 6c 20 63 75 72 72 65 6e 74 oves all current
88e0: 6c 79 20 63 6f 6e 66 69 67 75 72 65 64 20 50 75 ly configured Pu
88f0: 62 53 75 62 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 bSub components
8900: 28 3c 74 74 3e 50 75 62 53 75 62 43 6f 6e 6e 65 (<tt>PubSubConne
8910: 63 74 69 6f 6e 73 3c 2f 74 74 3e 2c 20 3c 74 74 ctions</tt>, <tt
8920: 3e 52 65 61 64 65 72 47 72 6f 75 70 73 3c 2f 74 >ReaderGroups</t
8930: 74 3e 2c 20 3c 74 74 3e 57 72 69 74 65 72 47 72 t>, <tt>WriterGr
8940: 6f 75 70 73 3c 2f 74 74 3e 2c 20 3c 74 74 3e 50 oups</tt>, <tt>P
8950: 75 62 6c 69 73 68 65 64 44 61 74 61 53 65 74 73 ublishedDataSets
8960: 3c 2f 74 74 3e 2c 20 3c 74 74 3e 44 61 74 61 53 </tt>, <tt>DataS
8970: 65 74 52 65 61 64 65 72 73 3c 2f 74 74 3e 2c 20 etReaders</tt>,
8980: 61 6e 64 20 3c 74 74 3e 44 61 74 61 53 65 74 57 and <tt>DataSetW
8990: 72 69 74 65 72 73 3c 2f 74 74 3e 29 20 69 6e 20 riters</tt>) in
89a0: 74 68 65 20 73 65 72 76 65 72 20 67 69 76 65 6e the server given
89b0: 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 the client or s
89c0: 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 erver object <tt
89d0: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
89e0: 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 tt>.....<tt>opcu
89f0: 61 20 70 75 62 73 75 62 20 3c 69 3e 68 61 6e 64 a pubsub <i>hand
8a00: 6c 65 3c 2f 69 3e 20 4c 6f 61 64 50 75 62 53 75 le</i> LoadPubSu
8a10: 62 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 46 69 bConfigurationFi
8a20: 6c 65 20 3c 69 3e 62 79 74 65 73 3c 2f 69 3e 3c le <i>bytes</i><
8a30: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 54 68 69 73 /tt>.... This
8a40: 20 73 75 62 63 6f 6d 6d 61 6e 64 20 69 73 20 69 subcommand is i
8a50: 64 65 6e 74 69 63 61 6c 20 74 6f 20 3c 74 74 3e dentical to <tt>
8a60: 6f 70 63 75 61 20 70 75 62 73 75 62 63 66 67 20 opcua pubsubcfg
8a70: 6c 6f 61 64 3c 2f 74 74 3e 20 62 75 74 20 63 61 load</tt> but ca
8a80: 6e 20 62 65 20 69 6e 76 6f 6b 65 64 20 66 72 6f n be invoked fro
8a90: 6d 20 61 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 m a client objec
8aa0: 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c t <tt><i>handle<
8ab0: 2f 69 3e 3c 2f 74 74 3e 2c 20 74 6f 6f 2e 0d 0a /i></tt>, too...
8ac0: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 70 75 62 73 ..<tt>opcua pubs
8ad0: 75 62 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e ub <i>handle</i>
8ae0: 20 52 65 6d 6f 76 65 43 6f 6e 6e 65 63 74 69 6f RemoveConnectio
8af0: 6e 20 3c 69 3e 63 6f 6e 6e 49 64 3c 2f 69 3e 3c n <i>connId</i><
8b00: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 6d 6f /tt>.... Remo
8b10: 76 65 73 20 74 68 65 20 3c 74 74 3e 50 75 62 53 ves the <tt>PubS
8b20: 75 62 43 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 74 74 ubConnection</tt
8b30: 3e 20 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e > with node iden
8b40: 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 63 6f tifier <tt><i>co
8b50: 6e 6e 49 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 nnId</i></tt>. T
8b60: 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 he operation is
8b70: 63 61 72 72 69 65 64 20 6f 75 74 20 6f 6e 20 74 carried out on t
8b80: 68 65 20 73 65 72 76 65 72 20 67 69 76 65 6e 20 he server given
8b90: 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 the client or se
8ba0: 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e rver object <tt>
8bb0: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
8bc0: 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 t>.....<tt>opcua
8bd0: 20 70 75 62 73 75 62 20 3c 69 3e 68 61 6e 64 6c pubsub <i>handl
8be0: 65 3c 2f 69 3e 20 52 65 6d 6f 76 65 44 61 74 61 e</i> RemoveData
8bf0: 53 65 74 46 6f 6c 64 65 72 20 3c 69 3e 66 6f 6c SetFolder <i>fol
8c00: 64 65 72 49 64 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a derId</i></tt>..
8c10: 0d 0a 20 20 20 20 52 65 6d 6f 76 65 73 20 74 68 .. Removes th
8c20: 65 20 3c 74 74 3e 44 61 74 61 53 65 74 46 6f 6c e <tt>DataSetFol
8c30: 64 65 72 3c 2f 74 74 3e 20 6f 62 6a 65 63 74 20 der</tt> object
8c40: 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e 74 69 with node identi
8c50: 66 69 65 72 20 3c 74 74 3e 3c 69 3e 66 6f 6c 64 fier <tt><i>fold
8c60: 65 72 49 64 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e erId</i></tt> an
8c70: 64 20 61 6c 6c 20 63 6f 6e 74 61 69 6e 65 64 20 d all contained
8c80: 3c 74 74 3e 50 75 62 6c 69 73 68 65 64 44 61 74 <tt>PublishedDat
8c90: 61 53 65 74 73 3c 2f 74 74 3e 2e 20 54 68 65 20 aSets</tt>. The
8ca0: 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 63 61 72 operation is car
8cb0: 72 69 65 64 20 6f 75 74 20 6f 6e 20 74 68 65 20 ried out on the
8cc0: 73 65 72 76 65 72 20 67 69 76 65 6e 20 74 68 65 server given the
8cd0: 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 76 65 client or serve
8ce0: 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e r object <tt><i>
8cf0: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e handle</i></tt>.
8d00: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 70 75 ....<tt>opcua pu
8d10: 62 73 75 62 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f bsub <i>handle</
8d20: 69 3e 20 52 65 6d 6f 76 65 44 61 74 61 53 65 74 i> RemoveDataSet
8d30: 52 65 61 64 65 72 20 3c 69 3e 67 72 6f 75 70 49 Reader <i>groupI
8d40: 64 20 72 65 61 64 65 72 49 64 3c 2f 69 3e 3c 2f d readerId</i></
8d50: 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 6d 6f 76 tt>.... Remov
8d60: 65 73 20 74 68 65 20 3c 74 74 3e 44 61 74 61 53 es the <tt>DataS
8d70: 65 74 52 65 61 64 65 72 3c 2f 74 74 3e 20 77 69 etReader</tt> wi
8d80: 74 68 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 th node identifi
8d90: 65 72 20 3c 74 74 3e 3c 69 3e 72 65 61 64 65 72 er <tt><i>reader
8da0: 49 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 Id</i></tt> on t
8db0: 68 65 20 3c 74 74 3e 52 65 61 64 65 72 47 72 6f he <tt>ReaderGro
8dc0: 75 70 3c 2f 74 74 3e 20 77 69 74 68 20 6e 6f 64 up</tt> with nod
8dd0: 65 20 69 64 65 6e 74 69 66 69 65 72 20 3c 74 74 e identifier <tt
8de0: 3e 3c 69 3e 67 72 6f 75 70 49 64 3c 2f 69 3e 3c ><i>groupId</i><
8df0: 2f 74 74 3e 2e 20 54 68 65 20 6f 70 65 72 61 74 /tt>. The operat
8e00: 69 6f 6e 20 69 73 20 63 61 72 72 69 65 64 20 6f ion is carried o
8e10: 75 74 20 6f 6e 20 74 68 65 20 73 65 72 76 65 72 ut on the server
8e20: 20 67 69 76 65 6e 20 74 68 65 20 63 6c 69 65 6e given the clien
8e30: 74 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a 65 t or server obje
8e40: 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 ct <tt><i>handle
8e50: 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 </i></tt>.....<t
8e60: 74 3e 6f 70 63 75 61 20 70 75 62 73 75 62 20 3c t>opcua pubsub <
8e70: 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 52 65 6d i>handle</i> Rem
8e80: 6f 76 65 44 61 74 61 53 65 74 57 72 69 74 65 72 oveDataSetWriter
8e90: 20 3c 69 3e 67 72 6f 75 70 49 64 20 77 72 69 74 <i>groupId writ
8ea0: 65 72 49 64 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d erId</i></tt>...
8eb0: 0a 20 20 20 20 52 65 6d 6f 76 65 73 20 74 68 65 . Removes the
8ec0: 20 3c 74 74 3e 44 61 74 61 53 65 74 57 72 69 74 <tt>DataSetWrit
8ed0: 65 72 3c 2f 74 74 3e 20 77 69 74 68 20 6e 6f 64 er</tt> with nod
8ee0: 65 20 69 64 65 6e 74 69 66 69 65 72 20 3c 74 74 e identifier <tt
8ef0: 3e 3c 69 3e 77 72 69 74 65 72 49 64 3c 2f 69 3e ><i>writerId</i>
8f00: 3c 2f 74 74 3e 20 6f 6e 20 74 68 65 20 3c 74 74 </tt> on the <tt
8f10: 3e 57 72 69 74 65 72 47 72 6f 75 70 3c 2f 74 74 >WriterGroup</tt
8f20: 3e 20 77 69 74 68 20 6e 6f 64 65 20 69 64 65 6e > with node iden
8f30: 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 67 72 tifier <tt><i>gr
8f40: 6f 75 70 49 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 oupId</i></tt>.
8f50: 54 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 The operation is
8f60: 20 63 61 72 72 69 65 64 20 6f 75 74 20 6f 6e 20 carried out on
8f70: 74 68 65 20 73 65 72 76 65 72 20 67 69 76 65 6e the server given
8f80: 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 the client or s
8f90: 65 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 erver object <tt
8fa0: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
8fb0: 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 tt>.....<tt>opcu
8fc0: 61 20 70 75 62 73 75 62 20 3c 69 3e 68 61 6e 64 a pubsub <i>hand
8fd0: 6c 65 3c 2f 69 3e 20 52 65 6d 6f 76 65 47 72 6f le</i> RemoveGro
8fe0: 75 70 20 3c 69 3e 63 6f 6e 6e 49 64 20 67 72 6f up <i>connId gro
8ff0: 75 70 49 64 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d upId</i></tt>...
9000: 0a 20 20 20 20 52 65 6d 6f 76 65 73 20 74 68 65 . Removes the
9010: 20 3c 74 74 3e 52 65 61 64 65 72 47 72 6f 75 70 <tt>ReaderGroup
9020: 3c 2f 74 74 3e 20 6f 72 20 3c 74 74 3e 57 72 69 </tt> or <tt>Wri
9030: 74 65 72 47 72 6f 75 70 3c 2f 74 74 3e 20 77 69 terGroup</tt> wi
9040: 74 68 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 th node identifi
9050: 65 72 20 3c 74 74 3e 3c 69 3e 67 72 6f 75 70 49 er <tt><i>groupI
9060: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 d</i></tt> on th
9070: 65 20 3c 74 74 3e 50 75 62 53 75 62 43 6f 6e 6e e <tt>PubSubConn
9080: 65 63 74 69 6f 6e 3c 2f 74 74 3e 20 77 69 74 68 ection</tt> with
9090: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
90a0: 20 3c 74 74 3e 3c 69 3e 63 6f 6e 6e 49 64 3c 2f <tt><i>connId</
90b0: 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6f 70 65 i></tt>. The ope
90c0: 72 61 74 69 6f 6e 20 69 73 20 63 61 72 72 69 65 ration is carrie
90d0: 64 20 6f 75 74 20 6f 6e 20 74 68 65 20 73 65 72 d out on the ser
90e0: 76 65 72 20 67 69 76 65 6e 20 74 68 65 20 63 6c ver given the cl
90f0: 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 20 6f ient or server o
9100: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
9110: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d dle</i></tt>....
9120: 0a 3c 74 74 3e 6f 70 63 75 61 20 70 75 62 73 75 .<tt>opcua pubsu
9130: 62 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 b <i>handle</i>
9140: 52 65 6d 6f 76 65 50 75 62 6c 69 73 68 65 64 44 RemovePublishedD
9150: 61 74 61 53 65 74 20 3c 69 3e 70 64 73 49 64 3c ataSet <i>pdsId<
9160: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
9170: 52 65 6d 6f 76 65 73 20 74 68 65 20 3c 74 74 3e Removes the <tt>
9180: 50 75 62 6c 69 73 68 65 64 44 61 74 61 53 65 74 PublishedDataSet
9190: 3c 2f 74 74 3e 20 6f 62 6a 65 63 74 20 77 69 74 </tt> object wit
91a0: 68 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 h node identifie
91b0: 72 20 3c 74 74 3e 3c 69 3e 70 64 73 49 64 3c 2f r <tt><i>pdsId</
91c0: 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6f 70 65 i></tt>. The ope
91d0: 72 61 74 69 6f 6e 20 69 73 20 63 61 72 72 69 65 ration is carrie
91e0: 64 20 6f 75 74 20 6f 6e 20 74 68 65 20 73 65 72 d out on the ser
91f0: 76 65 72 20 67 69 76 65 6e 20 74 68 65 20 63 6c ver given the cl
9200: 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 20 6f ient or server o
9210: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
9220: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d dle</i></tt>....
9230: 0a 3c 74 74 3e 6f 70 63 75 61 20 70 75 62 73 75 .<tt>opcua pubsu
9240: 62 63 66 67 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f bcfg <i>handle</
9250: 69 3e 20 6c 6f 61 64 7c 73 61 76 65 20 3c 69 3e i> load|save <i>
9260: 3f 62 79 74 65 73 3c 2f 69 3e 3f 3c 2f 69 3e 3c ?bytes</i>?</i><
9270: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 50 65 72 66 /tt>.... Perf
9280: 6f 72 6d 73 20 61 20 73 65 72 69 61 6c 69 7a 61 orms a serializa
9290: 74 69 6f 6e 20 28 3c 74 74 3e 73 61 76 65 3c 2f tion (<tt>save</
92a0: 74 74 3e 29 20 6f 72 20 64 65 73 65 72 69 61 6c tt>) or deserial
92b0: 69 7a 61 74 69 6f 6e 20 28 3c 74 74 3e 6c 6f 61 ization (<tt>loa
92c0: 64 3c 2f 74 74 3e 29 20 6f 66 20 74 68 65 20 50 d</tt>) of the P
92d0: 75 62 53 75 62 20 63 6f 6e 66 69 67 75 72 61 74 ubSub configurat
92e0: 69 6f 6e 20 6f 66 20 74 68 65 20 73 65 72 76 65 ion of the serve
92f0: 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e r object <tt><i>
9300: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e handle</i></tt>.
9310: 20 46 6f 72 20 74 68 65 20 3c 74 74 3e 6c 6f 61 For the <tt>loa
9320: 64 3c 2f 74 74 3e 20 6f 70 65 72 61 74 69 6f 6e d</tt> operation
9330: 2c 20 3c 74 74 3e 3c 69 3e 62 79 74 65 73 3c 2f , <tt><i>bytes</
9340: 69 3e 3c 2f 74 74 3e 20 6d 75 73 74 20 63 6f 6e i></tt> must con
9350: 74 61 69 6e 20 61 20 62 79 74 65 20 61 72 72 61 tain a byte arra
9360: 79 20 6f 66 20 74 68 65 20 73 65 72 69 61 6c 69 y of the seriali
9370: 7a 61 74 69 6f 6e 2c 20 66 6f 72 20 3c 74 74 3e zation, for <tt>
9380: 73 61 76 65 3c 2f 74 74 3e 20 61 20 73 65 72 69 save</tt> a seri
9390: 61 6c 69 7a 61 74 69 6f 6e 20 69 73 20 72 65 74 alization is ret
93a0: 75 72 6e 65 64 20 61 73 20 72 65 73 75 6c 74 2e urned as result.
93b0: 20 54 68 65 20 64 65 73 65 72 69 61 6c 69 7a 61 The deserializa
93c0: 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 72 tion operation r
93d0: 65 63 6f 6e 73 74 72 75 63 74 73 20 74 68 65 20 econstructs the
93e0: 50 75 62 53 75 62 20 63 6f 6d 70 6f 6e 65 6e 74 PubSub component
93f0: 73 20 69 6e 20 74 68 65 20 73 65 72 76 65 72 20 s in the server
9400: 64 65 73 63 72 69 62 65 64 20 62 79 20 3c 74 74 described by <tt
9410: 3e 3c 69 3e 62 79 74 65 73 3c 2f 69 3e 3c 2f 74 ><i>bytes</i></t
9420: 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 t>.....<tt>opcua
9430: 20 72 65 61 64 20 3c 69 3e 68 61 6e 64 6c 65 20 read <i>handle
9440: 6e 6f 64 65 69 64 20 3f 61 74 74 72 20 63 6d 64 nodeid ?attr cmd
9450: 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 ?</i></tt>....
9460: 20 20 50 65 72 66 6f 72 6d 73 20 61 20 72 65 61 Performs a rea
9470: 64 20 6f 70 65 72 61 74 69 6f 6e 20 6f 6e 20 74 d operation on t
9480: 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 72 he client or ser
9490: 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c ver object <tt><
94a0: 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 i>handle</i></tt
94b0: 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 > and returns th
94c0: 65 20 76 61 6c 75 65 20 6f 66 20 61 74 74 72 69 e value of attri
94d0: 62 75 74 65 20 3c 74 74 3e 3c 69 3e 61 74 74 72 bute <tt><i>attr
94e0: 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 66 20 74 68 65 </i></tt> of the
94f0: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
9500: 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f <tt><i>nodeid</
9510: 69 3e 3c 2f 74 74 3e 2e 20 49 66 20 3c 74 74 3e i></tt>. If <tt>
9520: 3c 69 3e 61 74 74 72 3c 2f 69 3e 3c 2f 74 74 3e <i>attr</i></tt>
9530: 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 69 74 20 is omitted, it
9540: 64 65 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 defaults to the
9550: 3c 74 74 3e 56 61 6c 75 65 3c 2f 74 74 3e 20 61 <tt>Value</tt> a
9560: 74 74 72 69 62 75 74 65 2e 20 54 68 65 20 6f 70 ttribute. The op
9570: 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 tional parameter
9580: 20 3c 74 74 3e 3c 69 3e 63 6d 64 3c 2f 69 3e 3c <tt><i>cmd</i><
9590: 2f 74 74 3e 20 63 61 6e 20 62 65 20 73 70 65 63 /tt> can be spec
95a0: 69 66 69 65 64 20 6f 6e 20 63 6c 69 65 6e 74 20 ified on client
95b0: 6f 62 6a 65 63 74 73 20 69 6e 20 6f 72 64 65 72 objects in order
95c0: 20 74 6f 20 63 61 72 72 79 20 6f 75 74 20 74 68 to carry out th
95d0: 65 20 72 65 61 64 20 6f 70 65 72 61 74 69 6f 6e e read operation
95e0: 20 69 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 in asynchronous
95f0: 20 6d 6f 64 65 2e 20 53 65 65 20 3c 74 74 3e 6f mode. See <tt>o
9600: 70 63 75 61 20 63 61 6c 6c 3c 2f 74 74 3e 20 61 pcua call</tt> a
9610: 6e 64 20 73 65 63 74 69 6f 6e 20 3c 62 3e 41 73 nd section <b>As
9620: 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 70 65 72 61 ynchronous Opera
9630: 74 69 6f 6e 73 3c 2f 62 3e 20 66 6f 72 20 6d 6f tions</b> for mo
9640: 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d re information..
9650: 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 72 65 66 ...<tt>opcua ref
9660: 74 79 70 65 20 3c 69 3e 3f 6e 61 6d 65 3f 3c 2f type <i>?name?</
9670: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 i></tt>.... R
9680: 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 65 20 eturns the node
9690: 69 64 65 6e 74 69 66 69 65 72 20 66 6f 72 20 74 identifier for t
96a0: 68 65 20 72 65 66 65 72 65 6e 63 65 20 74 79 70 he reference typ
96b0: 65 20 3c 74 74 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 e <tt><i>name</i
96c0: 3e 3c 2f 74 74 3e 2e 20 57 68 65 6e 20 3c 74 74 ></tt>. When <tt
96d0: 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f 74 74 ><i>name</i></tt
96e0: 3e 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 61 20 > is omitted, a
96f0: 6c 69 73 74 20 6f 66 20 61 6c 6c 20 72 65 66 65 list of all refe
9700: 72 65 6e 63 65 20 74 79 70 65 20 6e 61 6d 65 73 rence type names
9710: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 0d is returned....
9720: 0a 3c 74 74 3e 6f 70 63 75 61 20 72 65 67 69 73 .<tt>opcua regis
9730: 74 65 72 20 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f ter <i>handle no
9740: 64 65 6c 69 73 74 3c 2f 69 3e 3c 2f 74 74 3e 0d delist</i></tt>.
9750: 0a 0d 0a 20 20 20 20 52 65 67 69 73 74 65 72 73 ... Registers
9760: 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 the node identi
9770: 66 69 65 72 73 20 66 72 6f 6d 20 3c 74 74 3e 3c fiers from <tt><
9780: 69 3e 6e 6f 64 65 6c 69 73 74 3c 2f 69 3e 3c 2f i>nodelist</i></
9790: 74 74 3e 20 69 6e 20 74 68 65 20 73 65 72 76 65 tt> in the serve
97a0: 72 20 74 6f 20 77 68 69 63 68 20 3c 74 74 3e 3c r to which <tt><
97b0: 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 i>handle</i></tt
97c0: 3e 20 69 73 20 63 6f 6e 6e 65 63 74 65 64 2e 20 > is connected.
97d0: 49 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e If the operation
97e0: 20 73 75 63 63 65 65 64 73 2c 20 61 6e 6f 74 68 succeeds, anoth
97f0: 65 72 20 6c 69 73 74 20 6f 66 20 6e 6f 64 65 20 er list of node
9800: 69 64 65 6e 74 69 66 69 65 72 73 20 69 73 20 72 identifiers is r
9810: 65 74 75 72 6e 65 64 20 77 68 69 63 68 20 70 72 eturned which pr
9820: 6f 76 69 64 65 73 20 61 6c 69 61 73 65 73 20 74 ovides aliases t
9830: 6f 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 o the node ident
9840: 69 66 69 65 72 73 20 70 61 73 73 65 64 20 74 6f ifiers passed to
9850: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 64 75 72 the command dur
9860: 69 6e 67 20 74 68 65 20 6c 69 66 65 20 74 69 6d ing the life tim
9870: 65 20 6f 66 20 74 68 65 20 73 65 73 73 69 6f 6e e of the session
9880: 2e 20 55 73 69 6e 67 20 74 68 65 20 61 6c 69 61 . Using the alia
9890: 73 65 73 20 69 6e 73 74 65 61 64 20 6f 66 20 74 ses instead of t
98a0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 6e 6f 64 65 he original node
98b0: 20 69 64 65 6e 74 69 66 69 65 72 73 20 63 61 6e identifiers can
98c0: 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d improve perform
98d0: 61 6e 63 65 20 6f 66 20 73 75 62 73 65 71 75 65 ance of subseque
98e0: 6e 74 20 3c 74 74 3e 72 65 61 64 3c 2f 74 74 3e nt <tt>read</tt>
98f0: 20 61 6e 64 20 3c 74 74 3e 77 72 69 74 65 3c 2f and <tt>write</
9900: 74 74 3e 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0d tt> operations..
9910: 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 72 65 71 ...<tt>opcua req
9920: 75 65 73 74 20 3c 69 3e 68 61 6e 64 6c 65 20 3f uest <i>handle ?
9930: 72 65 71 69 64 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d reqid?</i></tt>.
9940: 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20 69 ... Returns i
9950: 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 70 65 nformation on pe
9960: 6e 64 69 6e 67 20 61 73 79 6e 63 68 72 6f 6e 6f nding asynchrono
9970: 75 73 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f 66 us operations of
9980: 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 62 6a 65 the client obje
9990: 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 ct <tt><i>handle
99a0: 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 49 66 20 61 20 </i></tt>. If a
99b0: 6e 75 6d 65 72 69 63 20 72 65 71 75 65 73 74 20 numeric request
99c0: 69 64 65 6e 74 69 66 69 65 72 20 3c 74 74 3e 3c identifier <tt><
99d0: 69 3e 72 65 71 69 64 3c 2f 69 3e 3c 2f 74 74 3e i>reqid</i></tt>
99e0: 20 69 73 20 67 69 76 65 6e 2c 20 61 20 74 77 6f is given, a two
99f0: 20 65 6c 65 6d 65 6e 74 20 6c 69 73 74 20 66 6f element list fo
9a00: 72 20 74 68 69 73 20 72 65 71 75 65 73 74 20 69 r this request i
9a10: 73 20 72 65 74 75 72 6e 65 64 20 6d 61 64 65 20 s returned made
9a20: 75 70 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 up of the operat
9a30: 69 6f 6e 20 74 79 70 65 20 28 3c 74 74 3e 63 61 ion type (<tt>ca
9a40: 6c 6c 3c 2f 74 74 3e 2c 20 3c 74 74 3e 72 65 61 ll</tt>, <tt>rea
9a50: 64 3c 2f 74 74 3e 2c 20 6f 72 20 3c 74 74 3e 77 d</tt>, or <tt>w
9a60: 72 69 74 65 3c 2f 74 74 3e 29 20 61 6e 64 20 74 rite</tt>) and t
9a70: 68 65 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d he callback comm
9a80: 61 6e 64 20 77 68 69 63 68 20 72 65 63 65 69 76 and which receiv
9a90: 65 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e es the response.
9aa0: 20 49 66 20 3c 74 74 3e 3c 69 3e 72 65 71 69 64 If <tt><i>reqid
9ab0: 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 6f 6d 69 </i></tt> is omi
9ac0: 74 74 65 64 2c 20 61 20 6c 69 73 74 20 6f 66 20 tted, a list of
9ad0: 61 6c 6c 20 6b 6e 6f 77 6e 20 70 65 6e 64 69 6e all known pendin
9ae0: 67 20 72 65 71 75 65 73 74 20 69 64 65 6e 74 69 g request identi
9af0: 66 69 65 72 73 20 69 73 20 72 65 74 75 72 6e 65 fiers is returne
9b00: 64 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 d.....<tt>opcua
9b10: 72 6f 6f 74 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 root</tt>....
9b20: 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 6f 64 Returns the nod
9b30: 65 20 69 64 65 6e 74 69 66 69 65 72 20 6f 66 20 e identifier of
9b40: 74 68 65 20 72 6f 6f 74 20 6e 6f 64 65 2e 0d 0a the root node...
9b50: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 72 75 6e 20 ..<tt>opcua run
9b60: 3c 69 3e 68 61 6e 64 6c 65 20 3f 6d 73 3f 3c 2f <i>handle ?ms?</
9b70: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 i></tt>.... R
9b80: 75 6e 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 uns asynchronous
9b90: 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 73 75 62 operations (sub
9ba0: 73 63 72 69 70 74 69 6f 6e 73 2c 20 6d 6f 6e 69 scriptions, moni
9bb0: 74 6f 72 65 64 20 69 74 65 6d 73 29 20 6f 6e 20 tored items) on
9bc0: 74 68 65 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 the client objec
9bd0: 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c t <tt><i>handle<
9be0: 2f 69 3e 3c 2f 74 74 3e 20 66 6f 72 20 3c 74 74 /i></tt> for <tt
9bf0: 3e 3c 69 3e 6d 73 3c 2f 69 3e 3c 2f 74 74 3e 20 ><i>ms</i></tt>
9c00: 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 2e 20 49 66 milliseconds. If
9c10: 20 3c 74 74 3e 3c 69 3e 6d 73 3c 2f 69 3e 3c 2f <tt><i>ms</i></
9c20: 74 74 3e 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 tt> is omitted,
9c30: 74 68 61 74 20 64 75 72 61 74 69 6f 6e 20 64 65 that duration de
9c40: 66 61 75 6c 74 73 20 74 6f 20 7a 65 72 6f 2e 20 faults to zero.
9c50: 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 69 73 20 6f Normally, this o
9c60: 70 65 72 61 74 69 6f 6e 20 69 73 20 63 61 72 72 peration is carr
9c70: 69 65 64 20 6f 75 74 20 62 79 20 74 68 65 20 54 ied out by the T
9c80: 63 6c 20 65 76 65 6e 74 20 6c 6f 6f 70 2e 20 20 cl event loop.
9c90: 53 74 69 6c 6c 2c 20 74 68 69 73 20 63 6f 6d 6d Still, this comm
9ca0: 61 6e 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 and can be used
9cb0: 74 6f 20 74 65 73 74 20 69 66 20 74 68 65 20 63 to test if the c
9cc0: 6c 69 65 6e 74 20 6f 62 6a 65 63 74 20 69 73 20 lient object is
9cd0: 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 65 64 in the connected
9ce0: 20 73 74 61 74 65 2e 0d 0a 0d 0a 3c 74 74 3e 6f state.....<tt>o
9cf0: 70 63 75 61 20 73 63 32 73 74 72 20 3c 69 3e 3f pcua sc2str <i>?
9d00: 3c 2f 69 3e 2d 73 68 6f 72 74 3c 69 3e 3f 20 63 </i>-short<i>? c
9d10: 6f 64 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a ode</i></tt>....
9d20: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 73 20 74 Translates t
9d30: 68 65 20 6e 75 6d 65 72 69 63 20 73 74 61 74 75 he numeric statu
9d40: 73 20 63 6f 64 65 20 3c 74 74 3e 3c 69 3e 63 6f s code <tt><i>co
9d50: 64 65 3c 2f 69 3e 3c 2f 74 74 3e 20 74 6f 20 61 de</i></tt> to a
9d60: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 n error message
9d70: 73 74 72 69 6e 67 2e 20 41 20 73 69 6e 67 6c 65 string. A single
9d80: 20 77 6f 72 64 20 65 72 72 6f 72 20 73 74 72 69 word error stri
9d90: 6e 67 20 73 75 63 68 20 61 73 20 3c 74 74 3e 42 ng such as <tt>B
9da0: 61 64 54 69 6d 65 6f 75 74 3c 2f 74 74 3e 20 69 adTimeout</tt> i
9db0: 73 20 70 72 6f 64 75 63 65 64 20 77 68 65 6e 20 s produced when
9dc0: 74 68 65 20 3c 74 74 3e 2d 73 68 6f 72 74 3c 2f the <tt>-short</
9dd0: 74 74 3e 20 6f 70 74 69 6f 6e 20 69 73 20 73 70 tt> option is sp
9de0: 65 63 69 66 69 65 64 2e 0d 0a 0d 0a 3c 74 74 3e ecified.....<tt>
9df0: 6f 70 63 75 61 20 73 65 72 76 65 72 73 20 3c 69 opcua servers <i
9e00: 3e 3f 75 72 6c 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d >?url?</i></tt>.
9e10: 0a 0d 0a 20 20 20 20 51 75 65 72 69 65 73 20 74 ... Queries t
9e20: 68 65 20 6c 6f 63 61 6c 20 4f 50 43 2f 55 41 20 he local OPC/UA
9e30: 73 65 72 76 65 72 20 3c 74 74 3e 6f 70 63 2e 74 server <tt>opc.t
9e40: 63 70 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 3a 34 cp://localhost:4
9e50: 38 34 30 3c 2f 74 74 3e 20 6f 72 20 74 68 65 20 840</tt> or the
9e60: 73 65 72 76 65 72 20 73 70 65 63 69 66 69 65 64 server specified
9e70: 20 62 79 20 74 68 65 20 3c 74 74 3e 3c 69 3e 75 by the <tt><i>u
9e80: 72 6c 3c 2f 69 3e 3c 2f 74 74 3e 20 70 61 72 61 rl</i></tt> para
9e90: 6d 65 74 65 72 20 66 6f 72 20 73 65 72 76 65 72 meter for server
9ea0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 information and
9eb0: 20 72 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 returns a list
9ec0: 6d 61 64 65 20 75 70 20 6f 66 20 64 65 73 65 72 made up of deser
9ed0: 69 61 6c 69 7a 65 64 20 64 69 63 74 69 6f 6e 61 ialized dictiona
9ee0: 72 69 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68 ries based on th
9ef0: 65 20 3c 74 74 3e 55 41 5f 53 65 72 76 65 72 4f e <tt>UA_ServerO
9f00: 6e 4e 65 74 77 6f 72 6b 3c 2f 74 74 3e 20 73 74 nNetwork</tt> st
9f10: 72 75 63 74 75 72 65 2e 20 43 6f 6e 73 75 6c 74 ructure. Consult
9f20: 20 74 68 65 20 6f 70 65 6e 36 32 35 34 31 20 64 the open62541 d
9f30: 6f 63 75 6d 65 6e 74 69 6f 6e 20 66 6f 72 20 6d ocumention for m
9f40: 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e ore information.
9f50: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 73 74 ....<tt>opcua st
9f60: 61 72 74 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 art <i>handle</i
9f70: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 53 74 ></tt>.... St
9f80: 61 72 74 73 20 74 68 65 20 73 65 72 76 65 72 20 arts the server
9f90: 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 object <tt><i>ha
9fa0: 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 53 ndle</i></tt>. S
9fb0: 65 65 20 73 65 63 74 69 6f 6e 20 3c 62 3e 53 65 ee section <b>Se
9fc0: 72 76 65 72 20 4f 62 6a 65 63 74 20 41 6e 64 20 rver Object And
9fd0: 45 76 65 6e 74 20 4c 6f 6f 70 3c 2f 62 3e 20 62 Event Loop</b> b
9fe0: 65 6c 6f 77 20 66 6f 72 20 66 75 72 74 68 65 72 elow for further
9ff0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 0d information....
a000: 0a 3c 74 74 3e 6f 70 63 75 61 20 73 74 61 74 65 .<tt>opcua state
a010: 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f <i>handle</i></
a020: 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 70 6f 72 tt>.... Repor
a030: 74 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 ts the current s
a040: 74 61 74 65 20 6f 66 20 3c 74 74 3e 3c 69 3e 68 tate of <tt><i>h
a050: 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 andle</i></tt>.
a060: 49 66 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 If <tt><i>handle
a070: 3c 2f 69 3e 3c 2f 74 74 3e 20 72 65 66 65 72 73 </i></tt> refers
a080: 20 74 6f 20 61 20 63 6c 69 65 6e 74 2c 20 74 68 to a client, th
a090: 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 74 68 e result is a th
a0a0: 72 65 65 20 65 6c 65 6d 65 6e 74 20 6c 69 73 74 ree element list
a0b0: 20 77 69 74 68 20 74 68 65 20 69 64 65 6e 74 69 with the identi
a0c0: 63 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 cal information
a0d0: 61 73 20 70 61 73 73 65 64 20 69 6e 20 74 68 65 as passed in the
a0e0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 61 72 61 additional para
a0f0: 6d 65 74 65 72 73 20 74 6f 20 20 74 68 65 20 3c meters to the <
a100: 74 74 3e 6f 6e 63 6c 69 65 6e 74 73 74 61 74 65 tt>onclientstate
a110: 3c 2f 74 74 3e 20 63 61 6c 6c 62 61 63 6b 2e 20 </tt> callback.
a120: 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 72 Otherwise, the r
a130: 65 73 75 6c 74 20 69 73 20 61 20 74 77 6f 20 65 esult is a two e
a140: 6c 65 6d 65 6e 74 20 6c 69 73 74 2e 20 54 68 65 lement list. The
a150: 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 20 69 first element i
a160: 73 20 65 69 74 68 65 72 20 3c 74 74 3e 73 74 6f s either <tt>sto
a170: 70 70 65 64 3c 2f 74 74 3e 20 6f 72 20 3c 74 74 pped</tt> or <tt
a180: 3e 72 75 6e 6e 69 6e 67 3c 2f 74 74 3e 20 69 6e >running</tt> in
a190: 64 69 63 61 74 69 6e 67 20 74 68 65 20 73 65 72 dicating the ser
a1a0: 76 65 72 20 73 74 61 74 65 2e 20 54 68 65 20 73 ver state. The s
a1b0: 65 63 6f 6e 64 20 65 6c 65 6d 65 6e 74 20 69 73 econd element is
a1c0: 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 77 69 a dictionary wi
a1d0: 74 68 20 73 74 61 74 69 73 74 69 63 20 63 6f 75 th statistic cou
a1e0: 6e 74 65 72 73 20 66 6f 72 20 63 6f 6e 6e 65 63 nters for connec
a1f0: 74 69 6f 6e 73 2c 20 73 65 63 75 72 65 20 63 68 tions, secure ch
a200: 61 6e 6e 65 6c 73 2c 20 61 6e 64 20 73 65 73 73 annels, and sess
a210: 69 6f 6e 73 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 ions.....<tt>opc
a220: 75 61 20 73 74 6f 70 20 3c 69 3e 68 61 6e 64 6c ua stop <i>handl
a230: 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 e</i></tt>....
a240: 20 20 53 74 6f 70 73 20 74 68 65 20 73 65 72 76 Stops the serv
a250: 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e 3c 69 er object <tt><i
a260: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
a270: 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 73 .....<tt>opcua s
a280: 75 62 73 63 72 69 70 74 69 6f 6e 20 3c 69 3e 68 ubscription <i>h
a290: 61 6e 64 6c 65 3c 2f 69 3e 20 63 6f 6e 66 69 67 andle</i> config
a2a0: 75 72 65 20 3c 69 3e 69 64 20 3f 69 6e 74 65 72 ure <i>id ?inter
a2b0: 76 61 6c 20 6c 69 66 65 74 69 6d 65 20 6b 65 65 val lifetime kee
a2c0: 70 61 6c 69 76 65 20 6d 61 78 20 70 72 69 6f 3f palive max prio?
a2d0: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
a2e0: 20 43 6f 6e 66 69 67 75 72 65 73 20 74 68 65 20 Configures the
a2f0: 73 75 62 73 63 72 69 70 74 69 6f 6e 20 3c 74 74 subscription <tt
a300: 3e 3c 69 3e 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 ><i>id</i></tt>
a310: 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f 62 on the client ob
a320: 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 ject <tt><i>hand
a330: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 53 65 65 le</i></tt>. See
a340: 20 3c 74 74 3e 6f 70 63 75 61 20 73 75 62 73 63 <tt>opcua subsc
a350: 72 69 70 74 69 6f 6e 20 6e 65 77 3c 2f 74 74 3e ription new</tt>
a360: 20 66 6f 72 20 74 68 65 20 6f 70 74 69 6f 6e 61 for the optiona
a370: 6c 20 70 61 72 61 6d 65 74 65 72 73 2e 0d 0a 0d l parameters....
a380: 0a 3c 74 74 3e 6f 70 63 75 61 20 73 75 62 73 63 .<tt>opcua subsc
a390: 72 69 70 74 69 6f 6e 20 3c 69 3e 68 61 6e 64 6c ription <i>handl
a3a0: 65 3c 2f 69 3e 20 64 65 73 74 72 6f 79 20 3c 69 e</i> destroy <i
a3b0: 3e 69 64 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a >id</i></tt>....
a3c0: 20 20 20 20 44 65 73 74 72 6f 79 73 20 74 68 65 Destroys the
a3d0: 20 73 75 62 73 63 72 69 70 74 69 6f 6e 20 3c 74 subscription <t
a3e0: 74 3e 3c 69 3e 69 64 3c 2f 69 3e 3c 2f 74 74 3e t><i>id</i></tt>
a3f0: 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f on the client o
a400: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
a410: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d dle</i></tt>....
a420: 0a 3c 74 74 3e 6f 70 63 75 61 20 73 75 62 73 63 .<tt>opcua subsc
a430: 72 69 70 74 69 6f 6e 20 3c 69 3e 68 61 6e 64 6c ription <i>handl
a440: 65 3c 2f 69 3e 20 69 6e 66 6f 20 3c 69 3e 3f 69 e</i> info <i>?i
a450: 64 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 d?</i></tt>....
a460: 20 20 20 52 65 74 75 72 6e 73 20 69 6e 66 6f 72 Returns infor
a470: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 73 75 62 mation about sub
a480: 73 63 72 69 70 74 69 6f 6e 20 3c 74 74 3e 3c 69 scription <tt><i
a490: 3e 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 >id</i></tt> on
a4a0: 74 68 65 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 the client objec
a4b0: 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c t <tt><i>handle<
a4c0: 2f 69 3e 3c 2f 74 74 3e 20 61 73 20 61 20 6c 69 /i></tt> as a li
a4d0: 73 74 20 6f 66 20 65 6e 61 62 6c 65 20 66 6c 61 st of enable fla
a4e0: 67 2c 20 69 6e 74 65 72 76 61 6c 2c 20 6c 69 66 g, interval, lif
a4f0: 65 74 69 6d 65 2c 20 20 6b 65 65 70 61 6c 69 76 etime, keepaliv
a500: 65 2c 20 61 6e 64 20 20 6d 61 78 69 6d 75 6d 20 e, and maximum
a510: 63 6f 75 6e 74 65 72 73 2c 20 61 6e 64 20 74 68 counters, and th
a520: 65 20 70 72 69 6f 72 69 74 79 20 76 61 6c 75 65 e priority value
a530: 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 69 64 3c 2f . If <tt><i>id</
a540: 69 3e 3c 2f 74 74 3e 20 69 73 20 6f 6d 69 74 74 i></tt> is omitt
a550: 65 64 2c 20 61 20 6c 69 73 74 20 6f 66 20 61 6c ed, a list of al
a560: 6c 20 73 75 62 73 63 72 69 70 74 69 6f 6e 20 69 l subscription i
a570: 64 65 6e 74 69 66 69 65 72 73 20 6f 66 20 74 68 dentifiers of th
a580: 65 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 20 e client object
a590: 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a 0d 0a is returned.....
a5a0: 3c 74 74 3e 6f 70 63 75 61 20 73 75 62 73 63 72 <tt>opcua subscr
a5b0: 69 70 74 69 6f 6e 20 3c 69 3e 68 61 6e 64 6c 65 iption <i>handle
a5c0: 3c 2f 69 3e 20 6e 65 77 20 3c 69 3e 3f 66 6c 61 </i> new <i>?fla
a5d0: 67 20 69 6e 74 65 72 76 61 6c 20 6c 69 66 65 74 g interval lifet
a5e0: 69 6d 65 20 6b 65 65 70 61 6c 69 76 65 20 6d 61 ime keepalive ma
a5f0: 78 20 70 72 69 6f 3f 3c 2f 69 3e 3c 2f 74 74 3e x prio?</i></tt>
a600: 0d 0a 0d 0a 20 20 20 20 43 72 65 61 74 65 73 20 .... Creates
a610: 61 20 6e 65 77 20 73 75 62 73 63 72 69 70 74 69 a new subscripti
a620: 6f 6e 20 28 61 20 63 6f 6e 74 61 69 6e 65 72 20 on (a container
a630: 66 6f 72 20 6d 6f 6e 69 74 6f 72 65 64 20 69 74 for monitored it
a640: 65 6d 73 2c 20 73 65 65 20 3c 74 74 3e 6f 70 63 ems, see <tt>opc
a650: 75 61 20 6d 6f 6e 69 74 6f 72 3c 2f 74 74 3e 29 ua monitor</tt>)
a660: 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f on the client o
a670: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
a680: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 dle</i></tt> and
a690: 20 72 65 74 75 72 6e 73 20 61 20 6e 75 6d 65 72 returns a numer
a6a0: 69 63 20 69 64 65 6e 74 69 66 69 65 72 20 6f 66 ic identifier of
a6b0: 20 69 74 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 it. The followi
a6c0: 6e 67 20 6f 70 74 69 6f 6e 61 6c 20 70 61 72 61 ng optional para
a6d0: 6d 65 74 65 72 73 20 63 6f 6e 74 72 6f 6c 20 70 meters control p
a6e0: 72 6f 70 65 72 74 69 65 73 20 6f 66 20 74 68 65 roperties of the
a6f0: 20 73 75 62 73 63 72 69 70 74 69 6f 6e 3a 20 3c subscription: <
a700: 74 74 3e 3c 69 3e 66 6c 61 67 3c 2f 69 3e 3c 2f tt><i>flag</i></
a710: 74 74 3e 20 69 73 20 74 68 65 20 69 6e 69 74 69 tt> is the initi
a720: 61 6c 20 65 6e 61 62 6c 65 20 73 74 61 74 65 20 al enable state
a730: 28 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 29 2c (on by default),
a740: 20 20 3c 74 74 3e 3c 69 3e 69 6e 74 65 72 76 61 <tt><i>interva
a750: 6c 3c 2f 69 3e 3c 2f 74 74 3e 2c 20 3c 74 74 3e l</i></tt>, <tt>
a760: 3c 69 3e 6c 69 66 65 74 69 6d 65 3c 2f 69 3e 3c <i>lifetime</i><
a770: 2f 74 74 3e 2c 20 3c 74 74 3e 3c 69 3e 6b 65 65 /tt>, <tt><i>kee
a780: 70 61 6c 69 76 65 3c 2f 69 3e 3c 2f 74 74 3e 2c palive</i></tt>,
a790: 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 6d 61 78 3c and <tt><i>max<
a7a0: 2f 69 3e 3c 2f 74 74 3e 20 74 68 65 20 74 69 6d /i></tt> the tim
a7b0: 69 6e 67 20 61 6e 64 20 71 75 65 75 69 6e 67 20 ing and queuing
a7c0: 70 61 72 61 6d 65 74 65 72 73 2c 20 61 6e 64 20 parameters, and
a7d0: 3c 74 74 3e 3c 69 3e 70 72 69 6f 3c 2f 69 3e 3c <tt><i>prio</i><
a7e0: 2f 74 74 3e 20 74 68 65 20 73 75 62 73 63 72 69 /tt> the subscri
a7f0: 70 74 69 6f 6e 27 73 20 70 72 69 6f 72 69 74 79 ption's priority
a800: 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 73 .....<tt>opcua s
a810: 75 62 73 63 72 69 70 74 69 6f 6e 20 3c 69 3e 68 ubscription <i>h
a820: 61 6e 64 6c 65 3c 2f 69 3e 20 6f 66 66 20 3c 69 andle</i> off <i
a830: 3e 69 64 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a >id</i></tt>....
a840: 20 20 20 20 44 69 73 61 62 6c 65 73 20 74 68 65 Disables the
a850: 20 73 75 62 73 63 72 69 70 74 69 6f 6e 20 3c 74 subscription <t
a860: 74 3e 3c 69 3e 69 64 3c 2f 69 3e 3c 2f 74 74 3e t><i>id</i></tt>
a870: 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 6f on the client o
a880: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
a890: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d dle</i></tt>....
a8a0: 0a 3c 74 74 3e 6f 70 63 75 61 20 73 75 62 73 63 .<tt>opcua subsc
a8b0: 72 69 70 74 69 6f 6e 20 3c 69 3e 68 61 6e 64 6c ription <i>handl
a8c0: 65 3c 2f 69 3e 20 6f 6e 20 3c 69 3e 69 64 3c 2f e</i> on <i>id</
a8d0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 45 i></tt>.... E
a8e0: 6e 61 62 6c 65 73 20 74 68 65 20 73 75 62 73 63 nables the subsc
a8f0: 72 69 70 74 69 6f 6e 20 3c 74 74 3e 3c 69 3e 69 ription <tt><i>i
a900: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 d</i></tt> on th
a910: 65 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 20 e client object
a920: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
a930: 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f ></tt>.....<tt>o
a940: 70 63 75 61 20 74 72 61 6e 73 6c 61 74 65 20 3c pcua translate <
a950: 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 65 69 64 20 i>handle nodeid
a960: 72 65 66 74 79 70 65 20 74 61 72 67 65 74 20 2e reftype target .
a970: 2e 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 ..</i></tt>....
a980: 20 20 20 50 65 72 66 6f 72 6d 73 20 61 20 74 72 Performs a tr
a990: 61 6e 73 6c 61 74 65 20 6f 70 65 72 61 74 69 6f anslate operatio
a9a0: 6e 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 n on the client
a9b0: 6f 72 20 73 65 72 76 65 72 20 6f 62 6a 65 63 74 or server object
a9c0: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
a9d0: 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6f 70 65 i></tt>. The ope
a9e0: 72 61 74 69 6f 6e 20 73 74 61 72 74 73 20 61 74 ration starts at
a9f0: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
aa00: 20 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f <tt><i>nodeid</
aa10: 69 3e 3c 2f 74 74 3e 20 61 6e 64 20 74 72 61 76 i></tt> and trav
aa20: 65 72 73 65 73 20 74 68 65 20 6f 62 6a 65 63 74 erses the object
aa30: 20 74 72 65 65 20 61 6c 6f 6e 67 20 74 68 65 20 tree along the
aa40: 72 65 66 65 72 65 6e 63 65 73 20 3c 74 74 3e 3c references <tt><
aa50: 69 3e 72 65 66 74 79 70 65 3c 2f 69 3e 3c 2f 74 i>reftype</i></t
aa60: 74 3e 20 61 6e 64 20 62 72 6f 77 73 65 20 6e 61 t> and browse na
aa70: 6d 65 20 3c 74 74 3e 3c 69 3e 74 61 72 67 65 74 me <tt><i>target
aa80: 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 41 20 6c 69 73 </i></tt>. A lis
aa90: 74 20 6d 61 64 65 20 75 70 20 6f 66 20 74 68 65 t made up of the
aaa0: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
aab0: 2c 20 6e 61 6d 65 73 70 61 63 65 20 55 52 49 2c , namespace URI,
aac0: 20 61 6e 64 20 73 65 72 76 65 72 20 69 6e 64 65 and server inde
aad0: 78 20 6f 66 20 74 68 65 20 66 69 6e 61 6c 20 74 x of the final t
aae0: 61 72 67 65 74 20 69 73 20 72 65 74 75 72 6e 65 arget is returne
aaf0: 64 20 61 73 20 74 68 65 20 72 65 73 75 6c 74 2e d as the result.
ab00: 20 52 65 66 65 72 65 6e 63 65 73 20 63 61 6e 20 References can
ab10: 62 65 20 70 72 65 63 65 65 64 65 64 20 77 69 74 be preceeded wit
ab20: 68 20 61 6e 20 65 78 63 6c 61 6d 61 74 69 6f 6e h an exclamation
ab30: 20 6d 61 72 6b 20 69 6e 20 6f 72 64 65 72 20 74 mark in order t
ab40: 6f 20 72 65 76 65 72 73 65 20 74 68 65 69 72 20 o reverse their
ab50: 64 69 72 65 63 74 69 6f 6e 2e 20 41 20 72 65 66 direction. A ref
ab60: 65 72 65 6e 63 65 20 6d 61 79 20 62 65 20 61 62 erence may be ab
ab70: 62 72 65 76 69 61 74 65 64 20 61 73 20 73 6c 61 breviated as sla
ab80: 73 68 20 66 6f 72 20 3c 74 74 3e 48 69 65 72 61 sh for <tt>Hiera
ab90: 72 63 68 69 63 61 6c 52 65 66 65 72 65 6e 63 65 rchicalReference
aba0: 73 3c 2f 74 74 3e 20 6f 72 20 61 73 20 64 6f 74 s</tt> or as dot
abb0: 20 66 6f 72 20 3c 74 74 3e 41 67 67 72 65 67 61 for <tt>Aggrega
abc0: 74 65 73 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 tes</tt>.....<tt
abd0: 3e 6f 70 63 75 61 20 74 72 65 65 20 3c 69 3e 68 >opcua tree <i>h
abe0: 61 6e 64 6c 65 20 3f 6e 6f 64 65 69 64 3f 3c 2f andle ?nodeid?</
abf0: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 i></tt>.... R
ac00: 65 74 75 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 eturns informati
ac10: 6f 6e 20 73 69 6d 69 6c 61 72 20 74 6f 20 3c 74 on similar to <t
ac20: 74 3e 6f 70 63 75 61 20 62 72 6f 77 73 65 3c 2f t>opcua browse</
ac30: 74 74 3e 20 75 73 69 6e 67 20 74 68 65 20 63 6c tt> using the cl
ac40: 69 65 6e 74 20 6f 72 20 73 65 72 76 65 72 20 6f ient or server o
ac50: 62 6a 65 63 74 20 3c 74 74 3e 3c 69 3e 68 61 6e bject <tt><i>han
ac60: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 54 68 dle</i></tt>. Th
ac70: 65 20 61 64 64 72 65 73 73 20 73 70 61 63 65 20 e address space
ac80: 69 73 20 74 72 61 76 65 72 73 65 64 20 73 74 61 is traversed sta
ac90: 72 74 69 6e 67 20 61 74 20 74 68 65 20 6e 6f 64 rting at the nod
aca0: 65 20 69 64 65 6e 74 69 66 69 65 72 20 3c 74 74 e identifier <tt
acb0: 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 3e 3c 2f ><i>nodeid</i></
acc0: 74 74 3e 20 28 74 68 65 20 72 6f 6f 74 20 6e 6f tt> (the root no
acd0: 64 65 20 69 66 20 6f 6d 69 74 74 65 64 29 2e 20 de if omitted).
ace0: 54 68 65 20 72 65 73 75 6c 74 20 6c 69 73 74 20 The result list
acf0: 69 73 20 6d 61 64 65 20 75 70 20 6f 66 20 74 72 is made up of tr
ad00: 65 65 20 6c 65 76 65 6c 20 28 30 2d 62 61 73 65 ee level (0-base
ad10: 64 29 2c 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 d), node identif
ad20: 69 65 72 2c 20 62 72 6f 77 73 65 20 6e 61 6d 65 ier, browse name
ad30: 20 28 71 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 (qualified name
ad40: 29 2c 20 64 69 73 70 6c 61 79 20 6e 61 6d 65 20 ), display name
ad50: 20 28 6c 6f 63 61 6c 65 20 20 61 6e 64 20 20 74 (locale and t
ad60: 65 78 74 29 2c 20 6e 6f 64 65 20 63 6c 61 73 73 ext), node class
ad70: 2c 20 72 65 66 65 72 65 6e 63 65 20 6e 6f 64 65 , reference node
ad80: 20 69 64 65 6e 74 69 66 69 65 72 2c 20 74 79 70 identifier, typ
ad90: 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 e node identifie
ada0: 72 2c 20 61 6e 64 20 70 61 72 65 6e 74 20 6e 6f r, and parent no
adb0: 64 65 20 69 64 65 6e 74 69 66 69 65 72 2e 0d 0a de identifier...
adc0: 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 74 79 70 65 ..<tt>opcua type
add0: 20 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 65 69 <i>handle nodei
ade0: 64 20 3f 61 74 74 72 3f 3c 2f 69 3e 3c 2f 74 74 d ?attr?</i></tt
adf0: 3e 0d 0a 0d 0a 20 20 20 20 50 65 72 66 6f 72 6d >.... Perform
ae00: 73 20 61 20 72 65 61 64 20 6f 70 65 72 61 74 69 s a read operati
ae10: 6f 6e 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 on on the client
ae20: 20 6f 72 20 73 65 72 76 65 72 20 6f 62 6a 65 63 or server objec
ae30: 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c t <tt><i>handle<
ae40: 2f 69 3e 3c 2f 74 74 3e 20 6c 69 6b 65 20 3c 74 /i></tt> like <t
ae50: 74 3e 6f 70 63 75 61 20 72 65 61 64 3c 2f 74 74 t>opcua read</tt
ae60: 3e 20 62 75 74 20 69 6e 73 74 65 61 64 20 6f 66 > but instead of
ae70: 20 74 68 65 20 61 74 74 72 69 62 75 74 65 27 73 the attribute's
ae80: 20 76 61 6c 75 65 20 72 65 74 75 72 6e 73 20 74 value returns t
ae90: 68 65 20 74 79 70 65 20 6e 61 6d 65 20 6f 66 20 he type name of
aea0: 61 74 74 72 69 62 75 74 65 20 3c 74 74 3e 3c 69 attribute <tt><i
aeb0: 3e 61 74 74 72 3c 2f 69 3e 3c 2f 74 74 3e 20 6f >attr</i></tt> o
aec0: 66 20 74 68 65 20 6e 6f 64 65 20 20 69 64 65 6e f the node iden
aed0: 74 69 66 69 65 72 20 3c 74 74 3e 3c 69 3e 6e 6f tifier <tt><i>no
aee0: 64 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 20 deid</i></tt>.
aef0: 49 66 20 3c 74 74 3e 3c 69 3e 61 74 74 72 3c 2f If <tt><i>attr</
af00: 69 3e 3c 2f 74 74 3e 20 69 73 20 6f 6d 69 74 74 i></tt> is omitt
af10: 65 64 2c 20 69 74 20 64 65 66 61 75 6c 74 73 20 ed, it defaults
af20: 74 6f 20 74 68 65 20 3c 74 74 3e 56 61 6c 75 65 to the <tt>Value
af30: 3c 2f 74 74 3e 20 61 74 74 72 69 62 75 74 65 2e </tt> attribute.
af40: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 74 79 ....<tt>opcua ty
af50: 70 65 73 20 62 61 73 69 63 7c 62 75 69 6c 74 69 pes basic|builti
af60: 6e 7c 65 6d 70 74 79 7c 6c 69 73 74 7c 6e 61 6d n|empty|list|nam
af70: 65 7c 6e 6f 64 65 69 64 20 3c 69 3e 3f 68 61 6e e|nodeid <i>?han
af80: 64 6c 65 20 6e 61 6d 65 3f 3c 2f 69 3e 3c 2f 74 dle name?</i></t
af90: 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e t>.... Return
afa0: 73 20 61 20 6c 69 73 74 20 6f 66 20 4f 50 43 2f s a list of OPC/
afb0: 55 41 20 74 79 70 65 20 6e 61 6d 65 73 20 66 6f UA type names fo
afc0: 72 20 74 68 65 20 3c 74 74 3e 62 61 73 69 63 3c r the <tt>basic<
afd0: 2f 74 74 3e 20 61 6e 64 20 3c 74 74 3e 6c 69 73 /tt> and <tt>lis
afe0: 74 3c 2f 74 74 3e 20 73 75 62 63 6f 6d 6d 61 6e t</tt> subcomman
aff0: 64 73 2e 20 42 61 73 69 63 20 74 79 70 65 73 20 ds. Basic types
b000: 61 72 65 20 70 72 69 6d 69 74 69 76 65 73 20 28 are primitives (
b010: 65 2e 67 2e 20 69 6e 74 65 67 65 72 20 6e 75 6d e.g. integer num
b020: 62 65 72 73 29 20 66 6f 72 20 77 68 69 63 68 20 bers) for which
b030: 61 20 6d 61 70 70 69 6e 67 20 74 6f 20 54 63 6c a mapping to Tcl
b040: 20 6f 62 6a 65 63 74 73 20 69 73 20 70 72 6f 76 objects is prov
b050: 69 64 65 64 2e 20 54 68 65 20 3c 74 74 3e 3c 69 ided. The <tt><i
b060: 3e 65 6d 70 74 79 3c 2f 69 3e 3c 2f 74 74 3e 20 >empty</i></tt>
b070: 73 75 62 63 6f 6d 6d 61 6e 64 20 72 65 71 75 69 subcommand requi
b080: 72 65 73 20 3c 74 74 3e 3c 69 3e 6e 61 6d 65 3c res <tt><i>name<
b090: 2f 69 3e 3c 2f 74 74 3e 20 74 6f 20 62 65 20 61 /i></tt> to be a
b0a0: 20 6b 6e 6f 77 6e 20 4f 50 43 2f 55 41 20 74 79 known OPC/UA ty
b0b0: 70 65 20 6e 61 6d 65 20 61 6e 64 20 70 72 6f 64 pe name and prod
b0c0: 75 63 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 uces and returns
b0d0: 20 61 6e 20 65 6d 70 74 79 20 76 61 6c 75 65 20 an empty value
b0e0: 6f 66 20 74 68 69 73 20 74 79 70 65 2c 20 65 2e of this type, e.
b0f0: 67 2e 20 30 2e 30 20 66 6f 72 20 61 20 66 6c 6f g. 0.0 for a flo
b100: 61 74 69 6e 67 20 70 6f 69 6e 74 20 74 79 70 65 ating point type
b110: 2e 20 54 68 65 20 3c 74 74 3e 3c 69 3e 6e 6f 64 . The <tt><i>nod
b120: 65 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 73 75 62 eid</i></tt> sub
b130: 63 6f 6d 6d 61 6e 64 20 72 65 74 75 72 6e 73 20 command returns
b140: 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 the node identif
b150: 69 65 72 20 66 6f 72 20 74 68 65 20 74 79 70 65 ier for the type
b160: 20 6e 61 6d 65 2e 20 54 68 65 20 3c 74 74 3e 6e name. The <tt>n
b170: 61 6d 65 3c 2f 74 74 3e 20 73 75 62 63 6f 6d 6d ame</tt> subcomm
b180: 61 6e 64 20 69 73 20 74 68 65 20 72 65 76 65 72 and is the rever
b190: 73 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 se operation of
b1a0: 74 68 65 20 3c 74 74 3e 6e 6f 64 65 69 64 3c 2f the <tt>nodeid</
b1b0: 74 74 3e 20 73 75 62 63 6f 6d 6d 61 6e 64 20 61 tt> subcommand a
b1c0: 6e 64 20 72 65 70 6f 72 74 73 20 74 68 65 20 74 nd reports the t
b1d0: 79 70 65 20 6e 61 6d 65 20 66 6f 72 20 6e 6f 64 ype name for nod
b1e0: 65 20 69 64 65 6e 74 69 66 69 65 72 20 69 6e 20 e identifier in
b1f0: 3c 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 <tt><i>nodeid</i
b200: 3e 3c 2f 74 74 3e 2e 20 46 6f 72 20 74 68 65 20 ></tt>. For the
b210: 63 6f 6d 6d 61 6e 64 20 66 6f 72 6d 73 20 77 68 command forms wh
b220: 65 72 65 20 61 20 3c 74 74 3e 3c 69 3e 68 61 6e ere a <tt><i>han
b230: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 63 61 6e dle</i></tt> can
b240: 20 62 65 20 73 70 65 63 69 66 69 65 64 2c 20 74 be specified, t
b250: 68 69 73 20 61 6c 6c 6f 77 73 20 74 6f 20 64 65 his allows to de
b260: 61 6c 20 77 69 74 68 20 61 64 64 69 74 69 6f 6e al with addition
b270: 61 6c 20 63 75 73 74 6f 6d 20 64 61 74 61 20 74 al custom data t
b280: 79 70 65 73 20 28 73 65 65 20 65 2e 67 2e 20 3c ypes (see e.g. <
b290: 74 74 3e 6f 70 63 75 61 20 64 65 66 74 79 70 65 tt>opcua deftype
b2a0: 73 3c 2f 74 74 3e 29 20 77 68 69 63 68 20 77 68 s</tt>) which wh
b2b0: 65 72 65 20 6c 6f 61 64 65 64 20 69 6e 74 6f 20 ere loaded into
b2c0: 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 the client or se
b2d0: 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e rver object <tt>
b2e0: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
b2f0: 74 3e 2e 20 54 68 65 20 3c 74 74 3e 62 75 69 6c t>. The <tt>buil
b300: 74 69 6e 3c 2f 74 74 3e 20 73 75 62 63 6f 6d 6d tin</tt> subcomm
b310: 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 and returns the
b320: 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 20 6f 66 numeric value of
b330: 20 74 68 65 20 64 61 74 61 20 74 79 70 65 20 3c the data type <
b340: 74 74 3e 3c 69 3e 6e 61 6d 65 3c 2f 69 3e 3c 2f tt><i>name</i></
b350: 74 74 3e 20 66 6f 72 20 70 72 69 6d 69 74 69 76 tt> for primitiv
b360: 65 20 74 79 70 65 73 20 6f 66 20 6e 61 6d 65 73 e types of names
b370: 70 61 63 65 20 7a 65 72 6f 2e 0d 0a 0d 0a 3c 74 pace zero.....<t
b380: 74 3e 6f 70 63 75 61 20 75 6e 72 65 67 69 73 74 t>opcua unregist
b390: 65 72 20 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 er <i>handle nod
b3a0: 65 6c 69 73 74 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a elist</i></tt>..
b3b0: 0d 0a 20 20 20 20 55 6e 72 65 67 69 73 74 65 72 .. Unregister
b3c0: 73 20 74 68 65 20 6e 6f 64 65 20 69 64 65 6e 74 s the node ident
b3d0: 69 66 69 65 72 73 20 66 72 6f 6d 20 3c 74 74 3e ifiers from <tt>
b3e0: 3c 69 3e 6e 6f 64 65 6c 69 73 74 3c 2f 69 3e 3c <i>nodelist</i><
b3f0: 2f 74 74 3e 20 69 6e 20 74 68 65 20 73 65 72 76 /tt> in the serv
b400: 65 72 20 74 6f 20 77 68 69 63 68 20 3c 74 74 3e er to which <tt>
b410: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
b420: 74 3e 20 69 73 20 63 6f 6e 6e 65 63 74 65 64 2e t> is connected.
b430: 20 54 68 69 73 20 69 73 20 74 68 65 20 72 65 76 This is the rev
b440: 65 72 73 65 20 6f 66 20 74 68 65 20 3c 74 74 3e erse of the <tt>
b450: 72 65 67 69 73 74 65 72 3c 2f 74 74 3e 20 73 75 register</tt> su
b460: 62 63 6f 6d 6d 61 6e 64 20 77 68 69 63 68 20 72 bcommand which r
b470: 65 6d 6f 76 65 73 20 74 68 65 20 61 6c 69 61 73 emoves the alias
b480: 65 73 20 74 6f 20 74 68 65 20 6e 6f 64 65 20 69 es to the node i
b490: 64 65 6e 74 69 66 69 65 72 73 20 69 6e 20 3c 74 dentifiers in <t
b4a0: 74 3e 3c 69 3e 6e 6f 64 65 6c 69 73 74 3c 2f 69 t><i>nodelist</i
b4b0: 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f ></tt>.....<tt>o
b4c0: 70 63 75 61 20 76 65 72 73 69 6f 6e 3c 2f 74 74 pcua version</tt
b4d0: 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 >.... Returns
b4e0: 20 74 68 65 20 6d 61 6a 6f 72 20 61 6e 64 20 6d the major and m
b4f0: 69 6e 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d inor version num
b500: 62 65 72 73 20 6f 66 20 74 68 65 20 69 6e 74 65 bers of the inte
b510: 67 72 61 74 65 64 20 6f 70 65 6e 36 32 35 34 31 grated open62541
b520: 20 6c 69 62 72 61 72 79 2c 20 65 2e 67 2e 20 22 library, e.g. "
b530: 31 2e 30 22 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 1.0".....<tt>opc
b540: 75 61 20 77 72 69 74 65 20 3c 69 3e 68 61 6e 64 ua write <i>hand
b550: 6c 65 20 6e 6f 64 65 69 64 20 3f 61 74 74 72 3f le nodeid ?attr?
b560: 20 74 79 70 65 20 76 61 6c 75 65 20 3f 63 6d 64 type value ?cmd
b570: 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 ?</i></tt>....
b580: 20 20 50 65 72 66 6f 72 6d 73 20 61 20 77 72 69 Performs a wri
b590: 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 6e 20 te operation on
b5a0: 74 68 65 20 63 6c 69 65 6e 74 20 6f 72 20 73 65 the client or se
b5b0: 72 76 65 72 20 6f 62 6a 65 63 74 20 3c 74 74 3e rver object <tt>
b5c0: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
b5d0: 74 3e 20 77 72 69 74 69 6e 67 20 3c 74 74 3e 3c t> writing <tt><
b5e0: 69 3e 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e i>value</i></tt>
b5f0: 20 77 69 74 68 20 74 79 70 65 20 3c 74 74 3e 3c with type <tt><
b600: 69 3e 74 79 70 65 3c 2f 69 3e 3c 2f 74 74 3e 20 i>type</i></tt>
b610: 69 6e 74 6f 20 74 68 65 20 61 74 74 72 69 62 75 into the attribu
b620: 74 65 20 3c 74 74 3e 3c 69 3e 61 74 74 72 3c 2f te <tt><i>attr</
b630: 69 3e 3c 2f 74 74 3e 20 6f 66 20 74 68 65 20 6e i></tt> of the n
b640: 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 20 3c ode identifier <
b650: 74 74 3e 3c 69 3e 6e 6f 64 65 69 64 3c 2f 69 3e tt><i>nodeid</i>
b660: 3c 2f 74 74 3e 2e 20 49 66 20 3c 74 74 3e 3c 69 </tt>. If <tt><i
b670: 3e 61 74 74 72 3c 2f 69 3e 3c 2f 74 74 3e 20 69 >attr</i></tt> i
b680: 73 20 6f 6d 69 74 74 65 64 2c 20 69 74 20 64 65 s omitted, it de
b690: 66 61 75 6c 74 73 20 74 6f 20 3c 74 74 3e 56 61 faults to <tt>Va
b6a0: 6c 75 65 3c 2f 74 74 3e 2e 20 54 68 65 20 6f 70 lue</tt>. The op
b6b0: 65 72 61 74 69 6f 6e 20 69 73 20 70 65 72 66 6f eration is perfo
b6c0: 72 6d 65 64 20 77 69 74 68 6f 75 74 20 73 65 74 rmed without set
b6d0: 74 69 6e 67 20 61 6e 20 65 78 70 6c 69 63 69 74 ting an explicit
b6e0: 20 73 6f 75 72 63 65 20 74 69 6d 65 73 74 61 6d source timestam
b6f0: 70 2e 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 p. The optional
b700: 70 61 72 61 6d 65 74 65 72 20 3c 74 74 3e 3c 69 parameter <tt><i
b710: 3e 63 6d 64 3c 2f 69 3e 3c 2f 74 74 3e 20 63 61 >cmd</i></tt> ca
b720: 6e 20 62 65 20 73 70 65 63 69 66 69 65 64 20 6f n be specified o
b730: 6e 20 63 6c 69 65 6e 74 20 6f 62 6a 65 63 74 73 n client objects
b740: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 61 72 in order to car
b750: 72 79 20 6f 75 74 20 74 68 65 20 77 72 69 74 65 ry out the write
b760: 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20 61 73 operation in as
b770: 79 6e 63 68 72 6f 6e 6f 75 73 20 6d 6f 64 65 2e ynchronous mode.
b780: 20 53 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 63 See <tt>opcua c
b790: 61 6c 6c 3c 2f 74 74 3e 20 61 6e 64 20 73 65 63 all</tt> and sec
b7a0: 74 69 6f 6e 20 3c 62 3e 41 73 79 6e 63 68 72 6f tion <b>Asynchro
b7b0: 6e 6f 75 73 20 4f 70 65 72 61 74 69 6f 6e 73 3c nous Operations<
b7c0: 2f 62 3e 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 /b> for more inf
b7d0: 6f 72 6d 61 74 69 6f 6e 2e 0d 0a 0d 0a 3c 74 74 ormation.....<tt
b7e0: 3e 6f 70 63 75 61 20 78 63 61 6c 6c 20 3c 69 3e >opcua xcall <i>
b7f0: 68 61 6e 64 6c 65 20 6e 6f 64 65 69 64 20 6d 65 handle nodeid me
b800: 74 68 6f 64 69 64 20 3f 74 79 70 65 20 76 61 6c thodid ?type val
b810: 75 65 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74 3e ue ...?</i></tt>
b820: 0d 0a 0d 0a 20 20 20 20 54 68 69 73 20 69 73 20 .... This is
b830: 74 68 65 20 63 6f 72 6f 75 74 69 6e 65 20 61 77 the coroutine aw
b840: 61 72 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 3c are version of <
b850: 74 74 3e 6f 70 63 75 61 20 63 61 6c 6c 3c 2f 74 tt>opcua call</t
b860: 74 3e 2e 20 49 66 20 63 61 6c 6c 65 64 20 77 69 t>. If called wi
b870: 74 68 20 61 20 63 6c 69 65 6e 74 20 3c 74 74 3e th a client <tt>
b880: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
b890: 74 3e 20 69 6e 20 61 20 63 6f 72 6f 75 74 69 6e t> in a coroutin
b8a0: 65 20 63 6f 6e 74 65 78 74 20 69 74 20 75 73 65 e context it use
b8b0: 73 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 s an asynchronou
b8c0: 73 20 63 61 6c 6c 20 6f 70 65 72 61 74 69 6f 6e s call operation
b8d0: 20 77 69 74 68 20 3c 74 74 3e 79 69 65 6c 64 3c with <tt>yield<
b8e0: 2f 74 74 3e 20 61 73 20 63 61 6c 6c 62 61 63 6b /tt> as callback
b8f0: 2c 20 69 2e 65 2e 20 61 75 74 6f 6d 61 74 69 63 , i.e. automatic
b900: 61 6c 6c 79 20 73 75 73 70 65 6e 64 73 20 74 68 ally suspends th
b910: 65 20 63 6f 72 6f 75 74 69 6e 65 20 61 6e 64 20 e coroutine and
b920: 72 65 73 75 6d 65 73 20 69 74 20 61 67 61 69 6e resumes it again
b930: 20 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 when the result
b940: 20 62 65 63 6f 6d 65 73 20 61 76 61 69 6c 61 62 becomes availab
b950: 6c 65 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 le.....<tt>opcua
b960: 20 78 67 65 6e 73 74 75 62 73 20 3c 69 3e 68 61 xgenstubs <i>ha
b970: 6e 64 6c 65 20 3f 73 74 72 69 70 20 73 75 62 73 ndle ?strip subs
b980: 74 73 20 2e 2e 2e 3f 3c 2f 69 3e 3c 2f 74 74 3e ts ...?</i></tt>
b990: 0d 0a 0d 0a 20 20 20 20 54 68 69 73 20 69 73 20 .... This is
b9a0: 74 68 65 20 63 6f 72 6f 75 74 69 6e 65 20 61 77 the coroutine aw
b9b0: 61 72 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 3c are version of <
b9c0: 74 74 3e 6f 70 63 75 61 20 67 65 6e 73 74 75 62 tt>opcua genstub
b9d0: 73 3c 2f 74 74 3e 2e 20 49 6e 73 74 65 61 64 20 s</tt>. Instead
b9e0: 6f 66 20 70 72 6f 63 65 64 75 72 65 20 62 6f 64 of procedure bod
b9f0: 69 65 73 20 75 73 69 6e 67 20 3c 74 74 3e 6f 70 ies using <tt>op
ba00: 63 75 61 20 63 61 6c 6c 3c 2f 74 74 3e 20 69 74 cua call</tt> it
ba10: 20 77 72 69 74 65 73 20 63 6f 72 6f 75 74 69 6e writes coroutin
ba20: 65 20 61 77 61 72 65 20 70 72 6f 63 65 64 75 72 e aware procedur
ba30: 65 20 62 6f 64 69 65 73 20 75 73 69 6e 67 20 3c e bodies using <
ba40: 74 74 3e 6f 70 63 75 61 20 78 63 61 6c 6c 3c 2f tt>opcua xcall</
ba50: 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 tt>.....<tt>opcu
ba60: 61 20 78 6d 72 65 61 64 20 3c 69 3e 68 61 6e 64 a xmread <i>hand
ba70: 6c 65 20 6e 6f 64 65 69 64 20 2e 2e 2e 3c 2f 69 le nodeid ...</i
ba80: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 54 68 ></tt>.... Th
ba90: 69 73 20 69 73 20 74 68 65 20 63 6f 72 6f 75 74 is is the corout
baa0: 69 6e 65 20 61 77 61 72 65 20 76 65 72 73 69 6f ine aware versio
bab0: 6e 20 6f 66 20 3c 74 74 3e 6f 70 63 75 61 20 6d n of <tt>opcua m
bac0: 72 65 61 64 3c 2f 74 74 3e 2e 20 49 66 20 63 61 read</tt>. If ca
bad0: 6c 6c 65 64 20 77 69 74 68 20 61 20 63 6c 69 65 lled with a clie
bae0: 6e 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 nt <tt><i>handle
baf0: 3c 2f 69 3e 3c 2f 74 74 3e 20 69 6e 20 61 20 63 </i></tt> in a c
bb00: 6f 72 6f 75 74 69 6e 65 20 63 6f 6e 74 65 78 74 oroutine context
bb10: 20 69 74 20 75 73 65 73 20 61 6e 20 61 73 79 6e it uses an asyn
bb20: 63 68 72 6f 6e 6f 75 73 20 72 65 61 64 20 6f 70 chronous read op
bb30: 65 72 61 74 69 6f 6e 20 77 69 74 68 20 3c 74 74 eration with <tt
bb40: 3e 79 69 65 6c 64 3c 2f 74 74 3e 20 61 73 20 63 >yield</tt> as c
bb50: 61 6c 6c 62 61 63 6b 2c 20 69 2e 65 2e 20 61 75 allback, i.e. au
bb60: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 75 73 70 tomatically susp
bb70: 65 6e 64 73 20 74 68 65 20 63 6f 72 6f 75 74 69 ends the corouti
bb80: 6e 65 20 61 6e 64 20 72 65 73 75 6d 65 73 20 69 ne and resumes i
bb90: 74 20 61 67 61 69 6e 20 77 68 65 6e 20 74 68 65 t again when the
bba0: 20 72 65 73 75 6c 74 20 62 65 63 6f 6d 65 73 20 result becomes
bbb0: 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 0d 0a 3c 74 available.....<t
bbc0: 74 3e 6f 70 63 75 61 20 78 6d 72 65 61 64 78 20 t>opcua xmreadx
bbd0: 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 65 69 64 <i>handle nodeid
bbe0: 20 61 74 74 72 20 69 6e 64 65 78 20 2e 2e 2e 3c attr index ...<
bbf0: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
bc00: 54 68 69 73 20 69 73 20 74 68 65 20 63 6f 72 6f This is the coro
bc10: 75 74 69 6e 65 20 61 77 61 72 65 20 76 65 72 73 utine aware vers
bc20: 69 6f 6e 20 6f 66 20 3c 74 74 3e 6f 70 63 75 61 ion of <tt>opcua
bc30: 20 6d 72 65 61 64 78 3c 2f 74 74 3e 2e 20 49 66 mreadx</tt>. If
bc40: 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20 63 called with a c
bc50: 6c 69 65 6e 74 20 3c 74 74 3e 3c 69 3e 68 61 6e lient <tt><i>han
bc60: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 6e 20 dle</i></tt> in
bc70: 61 20 63 6f 72 6f 75 74 69 6e 65 20 63 6f 6e 74 a coroutine cont
bc80: 65 78 74 20 69 74 20 75 73 65 73 20 61 6e 20 61 ext it uses an a
bc90: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 72 65 61 64 synchronous read
bca0: 20 6f 70 65 72 61 74 69 6f 6e 20 77 69 74 68 20 operation with
bcb0: 3c 74 74 3e 79 69 65 6c 64 3c 2f 74 74 3e 20 61 <tt>yield</tt> a
bcc0: 73 20 63 61 6c 6c 62 61 63 6b 2c 20 69 2e 65 2e s callback, i.e.
bcd0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 automatically s
bce0: 75 73 70 65 6e 64 73 20 74 68 65 20 63 6f 72 6f uspends the coro
bcf0: 75 74 69 6e 65 20 61 6e 64 20 72 65 73 75 6d 65 utine and resume
bd00: 73 20 69 74 20 61 67 61 69 6e 20 77 68 65 6e 20 s it again when
bd10: 74 68 65 20 72 65 73 75 6c 74 20 62 65 63 6f 6d the result becom
bd20: 65 73 20 61 76 61 69 6c 61 62 6c 65 2e 0d 0a 0d es available....
bd30: 0a 3c 74 74 3e 6f 70 63 75 61 20 78 6d 77 72 69 .<tt>opcua xmwri
bd40: 74 65 20 3c 69 3e 68 61 6e 64 6c 65 20 6e 6f 64 te <i>handle nod
bd50: 65 69 64 20 74 79 70 65 20 76 61 6c 75 65 20 2e eid type value .
bd60: 2e 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 ..</i></tt>....
bd70: 20 20 20 54 68 69 73 20 69 73 20 74 68 65 20 63 This is the c
bd80: 6f 72 6f 75 74 69 6e 65 20 61 77 61 72 65 20 76 oroutine aware v
bd90: 65 72 73 69 6f 6e 20 6f 66 20 3c 74 74 3e 6f 70 ersion of <tt>op
bda0: 63 75 61 20 6d 77 72 69 74 65 3c 2f 74 74 3e 2e cua mwrite</tt>.
bdb0: 20 49 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20 If called with
bdc0: 61 20 63 6c 69 65 6e 74 20 3c 74 74 3e 3c 69 3e a client <tt><i>
bdd0: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 handle</i></tt>
bde0: 69 6e 20 61 20 63 6f 72 6f 75 74 69 6e 65 20 63 in a coroutine c
bdf0: 6f 6e 74 65 78 74 20 69 74 20 75 73 65 73 20 61 ontext it uses a
be00: 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 77 n asynchronous w
be10: 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 rite operation w
be20: 69 74 68 20 3c 74 74 3e 79 69 65 6c 64 3c 2f 74 ith <tt>yield</t
be30: 74 3e 20 61 73 20 63 61 6c 6c 62 61 63 6b 2c 20 t> as callback,
be40: 69 2e 65 2e 20 61 75 74 6f 6d 61 74 69 63 61 6c i.e. automatical
be50: 6c 79 20 73 75 73 70 65 6e 64 73 20 74 68 65 20 ly suspends the
be60: 63 6f 72 6f 75 74 69 6e 65 20 61 6e 64 20 72 65 coroutine and re
be70: 73 75 6d 65 73 20 69 74 20 61 67 61 69 6e 20 77 sumes it again w
be80: 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 62 hen the result b
be90: 65 63 6f 6d 65 73 20 61 76 61 69 6c 61 62 6c 65 ecomes available
bea0: 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 78 .....<tt>opcua x
beb0: 6d 77 72 69 74 65 78 20 3c 69 3e 68 61 6e 64 6c mwritex <i>handl
bec0: 65 20 6e 6f 64 65 69 64 20 61 74 74 72 20 69 6e e nodeid attr in
bed0: 64 65 78 20 74 79 70 65 20 76 61 6c 75 65 20 2e dex type value .
bee0: 2e 2e 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 ..</i></tt>....
bef0: 20 20 20 54 68 69 73 20 69 73 20 74 68 65 20 63 This is the c
bf00: 6f 72 6f 75 74 69 6e 65 20 61 77 61 72 65 20 76 oroutine aware v
bf10: 65 72 73 69 6f 6e 20 6f 66 20 3c 74 74 3e 6f 70 ersion of <tt>op
bf20: 63 75 61 20 6d 77 72 69 74 65 78 3c 2f 74 74 3e cua mwritex</tt>
bf30: 2e 20 49 66 20 63 61 6c 6c 65 64 20 77 69 74 68 . If called with
bf40: 20 61 20 63 6c 69 65 6e 74 20 3c 74 74 3e 3c 69 a client <tt><i
bf50: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
bf60: 20 69 6e 20 61 20 63 6f 72 6f 75 74 69 6e 65 20 in a coroutine
bf70: 63 6f 6e 74 65 78 74 20 69 74 20 75 73 65 73 20 context it uses
bf80: 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 an asynchronous
bf90: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 write operation
bfa0: 77 69 74 68 20 3c 74 74 3e 79 69 65 6c 64 3c 2f with <tt>yield</
bfb0: 74 74 3e 20 61 73 20 63 61 6c 6c 62 61 63 6b 2c tt> as callback,
bfc0: 20 69 2e 65 2e 20 61 75 74 6f 6d 61 74 69 63 61 i.e. automatica
bfd0: 6c 6c 79 20 73 75 73 70 65 6e 64 73 20 74 68 65 lly suspends the
bfe0: 20 63 6f 72 6f 75 74 69 6e 65 20 61 6e 64 20 72 coroutine and r
bff0: 65 73 75 6d 65 73 20 69 74 20 61 67 61 69 6e 20 esumes it again
c000: 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 when the result
c010: 62 65 63 6f 6d 65 73 20 61 76 61 69 6c 61 62 6c becomes availabl
c020: 65 2e 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 e.....<tt>opcua
c030: 78 72 65 61 64 20 3c 69 3e 68 61 6e 64 6c 65 20 xread <i>handle
c040: 6e 6f 64 65 69 64 20 3f 61 74 74 72 3f 3c 2f 69 nodeid ?attr?</i
c050: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 54 68 ></tt>.... Th
c060: 69 73 20 69 73 20 74 68 65 20 63 6f 72 6f 75 74 is is the corout
c070: 69 6e 65 20 61 77 61 72 65 20 76 65 72 73 69 6f ine aware versio
c080: 6e 20 6f 66 20 3c 74 74 3e 6f 70 63 75 61 20 72 n of <tt>opcua r
c090: 65 61 64 3c 2f 74 74 3e 2e 20 49 66 20 63 61 6c ead</tt>. If cal
c0a0: 6c 65 64 20 77 69 74 68 20 61 20 63 6c 69 65 6e led with a clien
c0b0: 74 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c t <tt><i>handle<
c0c0: 2f 69 3e 3c 2f 74 74 3e 20 69 6e 20 61 20 63 6f /i></tt> in a co
c0d0: 72 6f 75 74 69 6e 65 20 63 6f 6e 74 65 78 74 20 routine context
c0e0: 69 74 20 75 73 65 73 20 61 6e 20 61 73 79 6e 63 it uses an async
c0f0: 68 72 6f 6e 6f 75 73 20 72 65 61 64 20 6f 70 65 hronous read ope
c100: 72 61 74 69 6f 6e 20 77 69 74 68 20 3c 74 74 3e ration with <tt>
c110: 79 69 65 6c 64 3c 2f 74 74 3e 20 61 73 20 63 61 yield</tt> as ca
c120: 6c 6c 62 61 63 6b 2c 20 69 2e 65 2e 20 61 75 74 llback, i.e. aut
c130: 6f 6d 61 74 69 63 61 6c 6c 79 20 73 75 73 70 65 omatically suspe
c140: 6e 64 73 20 74 68 65 20 63 6f 72 6f 75 74 69 6e nds the coroutin
c150: 65 20 61 6e 64 20 72 65 73 75 6d 65 73 20 69 74 e and resumes it
c160: 20 61 67 61 69 6e 20 77 68 65 6e 20 74 68 65 20 again when the
c170: 72 65 73 75 6c 74 20 62 65 63 6f 6d 65 73 20 61 result becomes a
c180: 76 61 69 6c 61 62 6c 65 2e 0d 0a 0d 0a 3c 74 74 vailable.....<tt
c190: 3e 6f 70 63 75 61 20 78 73 6c 65 65 70 20 3c 69 >opcua xsleep <i
c1a0: 3e 6d 73 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a >ms</i></tt>....
c1b0: 20 20 20 20 54 68 69 73 20 69 73 20 61 20 63 6f This is a co
c1c0: 72 6f 75 74 69 6e 65 20 61 77 61 72 65 20 63 6f routine aware co
c1d0: 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 nvenience functi
c1e0: 6f 6e 20 77 68 69 63 68 20 64 65 6c 61 79 73 20 on which delays
c1f0: 65 78 65 63 75 74 69 6f 6e 20 66 6f 72 20 3c 74 execution for <t
c200: 74 3e 3c 69 3e 6d 73 3c 2f 69 3e 3c 2f 74 74 3e t><i>ms</i></tt>
c210: 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 62 79 milliseconds by
c220: 20 75 73 69 6e 67 20 74 68 65 20 3c 74 74 3e 61 using the <tt>a
c230: 66 74 65 72 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e fter</tt> comman
c240: 64 20 77 69 74 68 20 61 20 63 61 6c 6c 62 61 63 d with a callbac
c250: 6b 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 73 65 k in order to se
c260: 72 76 69 63 65 20 65 76 65 6e 74 73 2c 20 69 66 rvice events, if
c270: 20 69 6e 76 6f 6b 65 64 20 69 6e 20 61 20 63 6f invoked in a co
c280: 72 6f 75 74 69 6e 65 20 63 6f 6e 74 65 78 74 2e routine context.
c290: 0d 0a 0d 0a 3c 74 74 3e 6f 70 63 75 61 20 78 77 ....<tt>opcua xw
c2a0: 72 69 74 65 20 3c 69 3e 68 61 6e 64 6c 65 20 6e rite <i>handle n
c2b0: 6f 64 65 69 64 20 3f 61 74 74 72 3f 20 74 79 70 odeid ?attr? typ
c2c0: 65 20 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e e value</i></tt>
c2d0: 0d 0a 0d 0a 20 20 20 20 54 68 69 73 20 69 73 20 .... This is
c2e0: 74 68 65 20 63 6f 72 6f 75 74 69 6e 65 20 61 77 the coroutine aw
c2f0: 61 72 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 3c are version of <
c300: 74 74 3e 6f 70 63 75 61 20 77 72 69 74 65 3c 2f tt>opcua write</
c310: 74 74 3e 2e 20 49 66 20 63 61 6c 6c 65 64 20 77 tt>. If called w
c320: 69 74 68 20 61 20 63 6c 69 65 6e 74 20 3c 74 74 ith a client <tt
c330: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
c340: 74 74 3e 20 69 6e 20 61 20 63 6f 72 6f 75 74 69 tt> in a corouti
c350: 6e 65 20 63 6f 6e 74 65 78 74 20 69 74 20 75 73 ne context it us
c360: 65 73 20 61 6e 20 61 73 79 6e 63 68 72 6f 6e 6f es an asynchrono
c370: 75 73 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 us write operati
c380: 6f 6e 20 77 69 74 68 20 3c 74 74 3e 79 69 65 6c on with <tt>yiel
c390: 64 3c 2f 74 74 3e 20 61 73 20 63 61 6c 6c 62 61 d</tt> as callba
c3a0: 63 6b 2c 20 69 2e 65 2e 20 61 75 74 6f 6d 61 74 ck, i.e. automat
c3b0: 69 63 61 6c 6c 79 20 73 75 73 70 65 6e 64 73 20 ically suspends
c3c0: 74 68 65 20 63 6f 72 6f 75 74 69 6e 65 20 61 6e the coroutine an
c3d0: 64 20 72 65 73 75 6d 65 73 20 69 74 20 61 67 61 d resumes it aga
c3e0: 69 6e 20 77 68 65 6e 20 74 68 65 20 72 65 73 75 in when the resu
c3f0: 6c 74 20 62 65 63 6f 6d 65 73 20 61 76 61 69 6c lt becomes avail
c400: 61 62 6c 65 2e 0d 0a 0d 0a 3c 68 33 3e 4f 50 43 able.....<h3>OPC
c410: 2f 55 41 20 45 6e 73 65 6d 62 6c 65 3c 2f 68 33 /UA Ensemble</h3
c420: 3e 0d 0a 0d 0a 54 68 65 20 63 75 72 72 65 6e 74 >....The current
c430: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 implementation
c440: 75 73 65 73 20 61 6e 20 65 6e 73 65 6d 62 6c 65 uses an ensemble
c450: 20 61 6e 64 20 6e 61 6d 65 73 70 61 63 65 20 3c and namespace <
c460: 74 74 3e 6f 70 63 75 61 3c 2f 74 74 3e 2c 20 69 tt>opcua</tt>, i
c470: 2e 65 2e 0d 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 .e...the command
c480: 20 3c 74 74 3e 6f 70 63 75 61 20 69 6e 66 6f 3c <tt>opcua info<
c490: 2f 74 74 3e 20 63 61 6e 20 62 65 20 61 6c 74 65 /tt> can be alte
c4a0: 72 6e 61 74 69 76 65 6c 79 20 77 72 69 74 74 65 rnatively writte
c4b0: 6e 20 61 73 20 3c 74 74 3e 6f 70 63 75 61 3a 3a n as <tt>opcua::
c4c0: 69 6e 66 6f 3c 2f 74 74 3e 2e 20 53 6f 6d 65 20 info</tt>. Some
c4d0: 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 73 75 62 more complex sub
c4e0: 63 6f 6d 6d 61 6e 64 73 20 6f 66 20 74 68 65 20 commands of the
c4f0: 3c 74 74 3e 6f 70 63 75 61 3c 2f 74 74 3e 20 6e <tt>opcua</tt> n
c500: 61 6d 65 73 70 61 63 65 20 61 72 65 20 69 6d 70 amespace are imp
c510: 6c 65 6d 65 6e 74 65 64 20 69 6e 20 54 63 6c 2c lemented in Tcl,
c520: 20 6e 61 6d 65 6c 79 20 74 68 65 20 3c 74 74 3e namely the <tt>
c530: 6f 70 63 75 61 20 74 72 65 65 3c 2f 74 74 3e 20 opcua tree</tt>
c540: 61 6e 64 20 3c 74 74 3e 6f 70 63 75 61 20 67 65 and <tt>opcua ge
c550: 6e 73 74 75 62 73 3c 2f 74 74 3e 20 70 72 6f 63 nstubs</tt> proc
c560: 65 64 75 72 65 73 2e 0d 0a 0d 0a 3c 68 33 3e 4e edures.....<h3>N
c570: 6f 64 65 20 49 64 65 6e 74 69 66 69 65 72 73 3c ode Identifiers<
c580: 2f 68 33 3e 0d 0a 0d 0a 4e 75 6d 65 72 69 63 20 /h3>....Numeric
c590: 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 73 node identifiers
c5a0: 20 63 61 6e 20 62 65 20 77 72 69 74 74 65 6e 20 can be written
c5b0: 61 73 20 3c 74 74 3e 6e 73 3d 4e 3b 69 3d 49 3c as <tt>ns=N;i=I<
c5c0: 2f 74 74 3e 20 77 68 65 72 65 20 3c 74 74 3e 4e /tt> where <tt>N
c5d0: 3c 2f 74 74 3e 20 69 73 20 20 74 68 65 20 6e 75 </tt> is the nu
c5e0: 6d 65 72 69 63 20 6e 61 6d 65 73 70 61 63 65 2c meric namespace,
c5f0: 20 61 6e 64 20 3c 74 74 3e 49 3c 2f 74 74 3e 20 and <tt>I</tt>
c600: 74 68 65 20 6e 75 6d 65 72 69 63 20 69 64 65 6e the numeric iden
c610: 74 69 66 69 65 72 2e 20 4c 69 6b 65 77 69 73 65 tifier. Likewise
c620: 2c 20 73 74 72 69 6e 67 20 6e 6f 64 65 20 69 64 , string node id
c630: 65 6e 74 69 66 69 65 72 73 20 61 72 65 20 77 72 entifiers are wr
c640: 69 74 74 65 6e 20 61 73 20 3c 74 74 3e 6e 73 3d itten as <tt>ns=
c650: 4e 3b 73 3d 53 3c 2f 74 74 3e 20 77 69 74 68 20 N;s=S</tt> with
c660: 3c 74 74 3e 53 3c 2f 74 74 3e 20 62 65 69 6e 67 <tt>S</tt> being
c670: 20 74 68 65 20 73 74 72 69 6e 67 20 69 64 65 6e the string iden
c680: 74 69 66 69 65 72 2e 20 47 55 49 44 20 6e 6f 64 tifier. GUID nod
c690: 65 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 72 e identifiers ar
c6a0: 65 20 77 72 69 74 74 65 6e 20 61 73 20 3c 74 74 e written as <tt
c6b0: 3e 6e 73 3d 4e 3b 67 3d 47 3c 2f 74 74 3e 20 77 >ns=N;g=G</tt> w
c6c0: 68 65 72 65 20 74 68 65 20 47 55 49 44 20 69 73 here the GUID is
c6d0: 20 3c 74 74 3e 47 3c 2f 74 74 3e 20 77 69 74 68 <tt>G</tt> with
c6e0: 20 74 68 65 20 75 73 75 61 6c 20 66 6f 72 6d 61 the usual forma
c6f0: 74 20 61 73 20 73 65 71 75 65 6e 63 65 20 6f 66 t as sequence of
c700: 20 68 65 78 61 64 65 63 69 6d 61 6c 20 6e 75 6d hexadecimal num
c710: 62 65 72 73 20 20 61 6e 64 20 64 61 73 68 65 73 bers and dashes
c720: 2e 20 54 68 65 20 6e 61 6d 65 73 70 61 63 65 20 . The namespace
c730: 70 61 72 74 20 63 61 6e 20 62 65 20 6c 65 66 74 part can be left
c740: 20 6f 75 74 20 77 68 65 6e 20 6e 61 6d 65 73 70 out when namesp
c750: 61 63 65 20 7a 65 72 6f 20 69 73 20 61 64 64 72 ace zero is addr
c760: 65 73 73 65 64 2e 20 43 75 72 72 65 6e 74 6c 79 essed. Currently
c770: 2c 20 62 79 74 65 20 73 74 72 69 6e 67 20 6e 6f , byte string no
c780: 64 65 20 69 64 65 6e 74 69 66 69 65 72 73 20 61 de identifiers a
c790: 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 re not supported
c7a0: 2e 20 49 66 20 74 68 65 20 66 6f 72 6d 61 74 20 . If the format
c7b0: 63 61 6e 6e 6f 74 20 20 62 65 20 64 65 74 65 72 cannot be deter
c7c0: 6d 69 6e 65 64 20 28 65 2e 67 2e 20 73 69 6e 63 mined (e.g. sinc
c7d0: 65 20 74 68 65 20 65 71 75 61 6c 20 73 69 67 6e e the equal sign
c7e0: 20 69 73 20 6d 69 73 73 69 6e 67 29 20 74 68 65 is missing) the
c7f0: 20 66 61 6c 6c 62 61 63 6b 20 63 68 6f 73 65 6e fallback chosen
c800: 20 69 73 20 73 74 72 69 6e 67 20 6e 6f 64 65 20 is string node
c810: 69 64 65 6e 74 69 66 69 65 72 20 69 6e 20 6e 61 identifier in na
c820: 6d 65 73 70 61 63 65 20 7a 65 72 6f 2e 20 53 74 mespace zero. St
c830: 72 69 6e 67 20 6e 61 6d 65 64 20 6e 61 6d 65 73 ring named names
c840: 70 61 63 65 73 20 61 72 65 20 6e 6f 74 20 73 75 paces are not su
c850: 70 70 6f 72 74 65 64 2e 0d 0a 0d 0a 3c 68 33 3e pported.....<h3>
c860: 51 75 61 6c 69 66 69 65 64 20 4e 61 6d 65 73 3c Qualified Names<
c870: 2f 68 33 3e 0d 0a 0d 0a 51 75 61 6c 69 66 69 65 /h3>....Qualifie
c880: 64 20 6e 61 6d 65 73 20 61 72 65 20 75 73 65 64 d names are used
c890: 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e 20 for example in
c8a0: 74 68 65 20 3c 74 74 3e 6f 70 63 75 61 20 62 72 the <tt>opcua br
c8b0: 6f 77 73 65 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 owse</tt> and <t
c8c0: 74 3e 6f 70 63 75 61 20 74 72 61 6e 73 6c 61 74 t>opcua translat
c8d0: 65 3c 2f 74 74 3e 20 6f 70 65 72 61 74 69 6f 6e e</tt> operation
c8e0: 73 20 61 73 20 73 6f 20 63 61 6c 6c 65 64 20 62 s as so called b
c8f0: 72 6f 77 73 65 20 6e 61 6d 65 73 2e 20 54 68 65 rowse names. The
c900: 73 65 20 61 72 65 20 6d 61 64 65 20 75 70 20 6f se are made up o
c910: 66 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 6e 75 f an optional nu
c920: 6d 65 72 69 63 20 6e 61 6d 65 73 70 61 63 65 20 meric namespace
c930: 70 72 65 66 69 78 20 28 61 20 6e 75 6d 62 65 72 prefix (a number
c940: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 63 followed by a c
c950: 6f 6c 6f 6e 29 20 61 6e 64 20 61 20 6e 61 6d 65 olon) and a name
c960: 2c 20 65 2e 67 2e 20 3c 74 74 3e 3c 69 3e 32 3a , e.g. <tt><i>2:
c970: 4d 79 4f 62 6a 65 63 74 3c 2f 69 3e 3c 2f 74 74 MyObject</i></tt
c980: 3e 2e 20 54 68 65 20 6e 61 6d 65 73 70 61 63 65 >. The namespace
c990: 20 70 72 65 66 69 78 20 69 73 20 6c 65 66 74 20 prefix is left
c9a0: 6f 75 74 20 69 66 20 74 68 65 20 6e 61 6d 65 20 out if the name
c9b0: 72 65 66 65 72 73 20 74 6f 20 6e 61 6d 65 73 70 refers to namesp
c9c0: 61 63 65 20 7a 65 72 6f 2e 0d 0a 0d 0a 3c 68 33 ace zero.....<h3
c9d0: 3e 4c 6f 63 61 6c 69 7a 65 64 20 54 65 78 74 3c >Localized Text<
c9e0: 2f 68 33 3e 0d 0a 0d 0a 54 68 65 20 64 61 74 61 /h3>....The data
c9f0: 20 74 79 70 65 20 3c 74 74 3e 4c 6f 63 61 6c 69 type <tt>Locali
ca00: 7a 65 64 54 65 78 74 3c 2f 74 74 3e 20 69 73 20 zedText</tt> is
ca10: 72 65 70 72 65 73 65 6e 74 65 64 20 61 73 20 61 represented as a
ca20: 20 64 69 63 74 20 77 69 74 68 20 74 68 65 20 6b dict with the k
ca30: 65 79 73 20 3c 74 74 3e 6c 6f 63 61 6c 65 3c 2f eys <tt>locale</
ca40: 74 74 3e 20 61 6e 64 20 3c 74 74 3e 74 65 78 74 tt> and <tt>text
ca50: 3c 2f 74 74 3e 2e 20 57 68 65 6e 20 63 6f 6e 76 </tt>. When conv
ca60: 65 72 74 69 6e 67 20 61 20 54 63 6c 20 76 61 6c erting a Tcl val
ca70: 75 65 20 74 6f 20 61 20 3c 74 74 3e 4c 6f 63 61 ue to a <tt>Loca
ca80: 6c 69 7a 65 64 54 65 78 74 3c 2f 74 74 3e 20 69 lizedText</tt> i
ca90: 74 65 6d 2c 20 74 68 65 73 65 20 6b 65 79 73 20 tem, these keys
caa0: 61 72 65 20 74 72 69 65 64 20 74 6f 20 62 65 20 are tried to be
cab0: 61 73 73 6f 63 69 61 74 65 64 2e 20 49 66 20 74 associated. If t
cac0: 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 20 66 61 his operation fa
cad0: 69 6c 73 2c 20 74 68 65 20 54 63 6c 20 76 61 6c ils, the Tcl val
cae0: 75 65 20 69 73 20 75 73 65 64 20 61 73 20 74 68 ue is used as th
caf0: 65 20 3c 74 74 3e 74 65 78 74 3c 2f 74 74 3e 20 e <tt>text</tt>
cb00: 70 61 72 74 20 6f 66 20 74 68 65 20 3c 74 74 3e part of the <tt>
cb10: 4c 6f 63 61 6c 69 7a 65 64 54 65 78 74 3c 2f 74 LocalizedText</t
cb20: 74 3e 20 69 74 65 6d 20 61 6e 64 20 74 68 65 20 t> item and the
cb30: 3c 74 74 3e 6c 6f 63 61 6c 65 3c 2f 74 74 3e 20 <tt>locale</tt>
cb40: 70 61 72 74 20 69 73 20 6c 65 66 74 20 65 6d 70 part is left emp
cb50: 74 79 2e 0d 0a 0d 0a 3c 68 33 3e 53 75 70 70 6f ty.....<h3>Suppo
cb60: 72 74 65 64 20 44 61 74 61 20 54 79 70 65 73 3c rted Data Types<
cb70: 2f 68 33 3e 0d 0a 0d 0a 43 75 72 72 65 6e 74 6c /h3>....Currentl
cb80: 79 2c 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 64 y, most of the d
cb90: 61 74 61 20 74 79 70 65 73 20 6f 66 20 6e 61 6d ata types of nam
cba0: 65 73 70 61 63 65 20 7a 65 72 6f 20 61 72 65 20 espace zero are
cbb0: 73 75 70 70 6f 72 74 65 64 20 61 6e 64 20 63 61 supported and ca
cbc0: 6e 20 62 65 20 6d 61 70 70 65 64 20 74 6f 2f 66 n be mapped to/f
cbd0: 72 6f 6d 20 54 63 6c 2c 20 69 2e 65 2e 20 69 6e rom Tcl, i.e. in
cbe0: 74 65 67 72 61 6c 20 61 6e 64 20 66 6c 6f 61 74 tegral and float
cbf0: 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65 72 ing point number
cc00: 73 2c 20 73 74 72 69 6e 67 73 2c 20 47 55 49 44 s, strings, GUID
cc10: 73 2c 20 61 6e 64 20 69 6e 74 65 72 61 6c 20 65 s, and interal e
cc20: 78 74 65 6e 73 69 6f 6e 20 6f 62 6a 65 63 74 73 xtension objects
cc30: 20 28 73 69 6d 69 6c 61 72 20 74 6f 20 73 74 72 (similar to str
cc40: 75 63 74 75 72 65 73 29 2e 20 46 6f 72 20 74 68 uctures). For th
cc50: 65 20 6c 61 74 74 65 72 2c 20 64 69 63 74 69 6f e latter, dictio
cc60: 6e 61 72 69 65 73 20 61 72 65 20 75 73 65 64 20 naries are used
cc70: 69 6e 20 62 6f 74 68 20 64 69 72 65 63 74 69 6f in both directio
cc80: 6e 73 2c 20 69 2e 65 2e 20 66 6f 72 20 65 6e 63 ns, i.e. for enc
cc90: 6f 64 69 6e 67 2c 20 61 20 64 69 63 74 69 6f 6e oding, a diction
cca0: 61 72 79 20 69 73 20 73 65 61 72 63 68 65 64 20 ary is searched
ccb0: 66 6f 72 20 74 68 65 20 72 65 73 70 65 63 74 69 for the respecti
ccc0: 76 65 20 6d 65 6d 62 65 72 20 6e 61 6d 65 73 2c ve member names,
ccd0: 20 66 6f 72 20 64 65 63 6f 64 69 6e 67 2c 20 61 for decoding, a
cce0: 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73 20 63 dictionary is c
ccf0: 72 65 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 reated from the
cd00: 69 6e 74 65 72 6e 61 6c 20 72 65 70 72 65 73 65 internal represe
cd10: 6e 74 61 74 69 6f 6e 20 75 73 69 6e 67 20 74 68 ntation using th
cd20: 65 20 6d 65 6d 62 65 72 20 6e 61 6d 65 73 20 6f e member names o
cd30: 66 20 74 68 65 20 64 61 74 61 20 74 79 70 65 2c f the data type,
cd40: 20 73 65 65 20 3c 74 74 3e 6f 70 63 75 61 20 61 see <tt>opcua a
cd50: 74 74 72 73 20 64 65 66 61 75 6c 74 3c 2f 74 74 ttrs default</tt
cd60: 3e 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 20 53 > for example. S
cd70: 75 70 70 6f 72 74 20 66 6f 72 20 63 75 73 74 6f upport for custo
cd80: 6d 20 20 64 61 74 61 20 20 74 79 70 65 73 20 20 m data types
cd90: 69 73 20 20 68 69 67 68 6c 79 20 65 78 70 65 72 is highly exper
cda0: 69 6d 65 6e 74 61 6c 20 61 6e 64 20 75 6e 64 65 imental and unde
cdb0: 72 64 6f 63 75 6d 65 6e 74 65 64 20 28 73 65 65 rdocumented (see
cdc0: 20 3c 74 74 3e 6f 70 63 75 61 20 67 65 6e 74 79 <tt>opcua genty
cdd0: 70 65 73 3c 2f 74 74 3e 29 2e 0d 0a 0d 0a 3c 68 pes</tt>).....<h
cde0: 33 3e 4d 6f 6e 69 74 6f 72 20 43 61 6c 6c 62 61 3>Monitor Callba
cdf0: 63 6b 73 3c 2f 68 33 3e 0d 0a 0d 0a 4d 6f 6e 69 cks</h3>....Moni
ce00: 74 6f 72 20 63 61 6c 6c 62 61 63 6b 73 20 61 72 tor callbacks ar
ce10: 65 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 e invoked when a
ce20: 20 6d 6f 6e 69 74 6f 72 65 64 20 69 74 65 6d 20 monitored item
ce30: 28 64 61 74 61 20 6f 72 20 65 76 65 6e 74 29 20 (data or event)
ce40: 69 73 20 72 65 63 65 69 76 65 64 2e 20 54 68 65 is received. The
ce50: 20 63 61 6c 6c 62 61 63 6b 20 70 61 72 61 6d 65 callback parame
ce60: 74 65 72 20 67 69 76 65 6e 20 69 6e 20 3c 74 74 ter given in <tt
ce70: 3e 6f 70 63 75 61 20 6d 6f 6e 69 74 6f 72 20 6e >opcua monitor n
ce80: 65 77 3c 2f 74 74 3e 20 6d 75 73 74 20 68 61 76 ew</tt> must hav
ce90: 65 20 70 72 6f 70 65 72 20 20 6c 69 73 74 20 66 e proper list f
cea0: 6f 72 6d 61 74 20 61 6e 64 20 67 65 74 73 20 61 ormat and gets a
ceb0: 20 73 69 6e 67 6c 65 20 76 61 6c 75 65 20 28 64 single value (d
cec0: 61 74 61 29 20 6f 72 20 61 20 6c 69 73 74 20 6f ata) or a list o
ced0: 66 20 76 61 6c 75 65 73 20 28 65 76 65 6e 74 29 f values (event)
cee0: 20 61 70 70 65 6e 64 65 64 20 70 72 69 6f 72 20 appended prior
cef0: 74 6f 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 0d 0a to invocation...
cf00: 0d 0a 3c 68 33 3e 44 61 74 61 20 53 6f 75 72 63 ..<h3>Data Sourc
cf10: 65 20 43 61 6c 6c 62 61 63 6b 73 3c 2f 68 33 3e e Callbacks</h3>
cf20: 0d 0a 0d 0a 44 61 74 61 20 73 6f 75 72 63 65 20 ....Data source
cf30: 63 61 6c 6c 62 61 63 6b 73 20 61 72 65 20 69 6e callbacks are in
cf40: 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 3c 74 74 voked when a <tt
cf50: 3e 3c 69 3e 44 61 74 61 56 61 6c 75 65 3c 2f 69 ><i>DataValue</i
cf60: 3e 3c 2f 74 74 3e 20 69 73 20 72 65 61 64 20 6f ></tt> is read o
cf70: 72 20 20 77 72 69 74 74 65 6e 20 74 6f 2e 20 54 r written to. T
cf80: 68 65 20 63 61 6c 6c 62 61 63 6b 20 70 61 72 61 he callback para
cf90: 6d 65 74 65 72 20 67 69 76 65 6e 20 69 6e 20 74 meter given in t
cfa0: 68 65 20 6e 6f 64 65 20 63 72 65 61 74 69 6f 6e he node creation
cfb0: 20 28 3c 74 74 3e 6f 70 63 75 61 20 61 64 64 20 (<tt>opcua add
cfc0: 56 61 72 69 61 62 6c 65 3c 2f 74 74 3e 29 20 6d Variable</tt>) m
cfd0: 75 73 74 20 68 61 76 65 20 70 72 6f 70 65 72 20 ust have proper
cfe0: 6c 69 73 74 20 66 6f 72 6d 61 74 20 61 6e 64 20 list format and
cff0: 67 65 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 gets the followi
d000: 6e 67 20 20 70 61 72 61 6d 65 74 65 72 73 20 61 ng parameters a
d010: 70 70 65 6e 64 65 64 20 70 72 69 6f 72 20 74 6f ppended prior to
d020: 20 69 6e 76 6f 63 61 74 69 6f 6e 3a 20 74 68 65 invocation: the
d030: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
d040: 20 6f 66 20 74 68 65 20 3c 74 74 3e 44 61 74 61 of the <tt>Data
d050: 56 61 6c 75 65 3c 2f 74 74 3e 2c 20 74 68 65 20 Value</tt>, the
d060: 6f 70 65 72 61 74 69 6f 6e 20 28 65 69 74 68 65 operation (eithe
d070: 72 20 3c 74 74 3e 72 65 61 64 3c 2f 74 74 3e 20 r <tt>read</tt>
d080: 6f 72 20 3c 74 74 3e 77 72 69 74 65 3c 2f 74 74 or <tt>write</tt
d090: 3e 29 2c 20 61 6e 64 20 74 68 65 20 76 61 6c 75 >), and the valu
d0a0: 65 20 61 74 74 72 69 62 75 74 65 20 66 6f 72 20 e attribute for
d0b0: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 write operations
d0c0: 2e 20 49 66 20 74 68 65 20 72 65 61 64 20 6f 72 . If the read or
d0d0: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e write operation
d0e0: 20 73 70 65 63 69 66 69 65 73 20 61 20 6e 75 6d specifies a num
d0f0: 65 72 69 63 20 72 61 6e 67 65 2c 20 74 68 65 20 eric range, the
d100: 72 61 6e 67 65 20 64 65 73 63 72 69 70 74 69 6f range descriptio
d110: 6e 20 69 73 20 61 64 64 65 64 20 61 73 20 74 68 n is added as th
d120: 65 20 6c 61 73 74 20 70 61 72 61 6d 65 74 65 72 e last parameter
d130: 2e 20 49 74 20 69 73 20 65 78 70 72 65 73 73 65 . It is expresse
d140: 64 20 61 73 20 61 20 54 63 6c 20 6c 69 73 74 20 d as a Tcl list
d150: 77 69 74 68 20 65 76 65 6e 20 6e 75 6d 62 65 72 with even number
d160: 20 6f 66 20 69 6e 74 65 67 65 72 20 65 6c 65 6d of integer elem
d170: 65 6e 74 73 2e 20 45 61 63 68 20 70 61 69 72 20 ents. Each pair
d180: 64 65 73 63 72 69 62 65 73 20 74 68 65 20 73 74 describes the st
d190: 61 72 74 20 61 6e 64 20 65 6e 64 20 65 6c 65 6d art and end elem
d1a0: 65 6e 74 73 20 6f 66 20 61 20 64 69 6d 65 6e 73 ents of a dimens
d1b0: 69 6f 6e 2e 20 46 6f 72 20 72 65 61 64 20 6f 70 ion. For read op
d1c0: 65 72 61 74 69 6f 6e 73 20 74 68 65 20 63 61 6c erations the cal
d1d0: 6c 62 61 63 6b 20 6d 75 73 74 20 72 65 74 75 72 lback must retur
d1e0: 6e 20 61 20 74 77 6f 20 65 6c 65 6d 65 6e 74 20 n a two element
d1f0: 6c 69 73 74 20 6f 66 20 74 68 65 20 64 61 74 61 list of the data
d200: 20 74 79 70 65 20 28 65 2e 67 2e 20 3c 74 74 3e type (e.g. <tt>
d210: 53 74 72 69 6e 67 3c 2f 74 74 3e 20 6f 72 20 3c String</tt> or <
d220: 74 74 3e 49 6e 74 33 32 3c 2f 74 74 3e 29 20 61 tt>Int32</tt>) a
d230: 6e 64 20 74 68 65 20 76 61 6c 75 65 20 69 74 73 nd the value its
d240: 65 6c 66 2e 20 49 66 20 74 68 65 20 63 61 6c 6c elf. If the call
d250: 62 61 63 6b 20 72 65 74 75 72 6e 73 20 74 68 65 back returns the
d260: 20 3c 62 3e 54 43 4c 5f 42 52 45 41 4b 3c 2f 62 <b>TCL_BREAK</b
d270: 3e 20 72 65 74 75 72 6e 20 63 6f 64 65 2c 20 74 > return code, t
d280: 68 65 20 76 61 6c 75 65 20 69 73 20 61 73 73 75 he value is assu
d290: 6d 65 64 20 74 6f 20 62 65 20 61 6e 20 61 72 72 med to be an arr
d2a0: 61 79 20 61 6e 64 20 73 70 6c 69 74 74 65 64 20 ay and splitted
d2b0: 69 6e 74 6f 20 6c 69 73 74 20 65 6c 65 6d 65 6e into list elemen
d2c0: 74 73 20 77 68 69 63 68 20 74 68 65 6e 20 61 72 ts which then ar
d2d0: 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 4f e converted to O
d2e0: 50 43 2f 55 41 20 64 61 74 61 20 69 6e 20 61 6e PC/UA data in an
d2f0: 20 4f 50 43 2f 55 41 20 61 72 72 61 79 2e 0d 0a OPC/UA array...
d300: 0d 0a 3c 68 33 3e 4d 65 74 68 6f 64 20 43 61 6c ..<h3>Method Cal
d310: 6c 62 61 63 6b 73 3c 2f 68 33 3e 0d 0a 0d 0a 4d lbacks</h3>....M
d320: 65 74 68 6f 64 20 63 61 6c 6c 62 61 63 6b 73 20 ethod callbacks
d330: 61 72 65 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e are invoked when
d340: 20 61 20 3c 74 74 3e 3c 69 3e 4d 65 74 68 6f 64 a <tt><i>Method
d350: 3c 2f 69 3e 3c 2f 74 74 3e 20 6e 6f 64 65 20 69 </i></tt> node i
d360: 73 20 63 61 6c 6c 65 64 2e 20 54 68 65 20 63 61 s called. The ca
d370: 6c 6c 62 61 63 6b 20 70 61 72 61 6d 65 74 65 72 llback parameter
d380: 20 67 69 76 65 6e 20 69 6e 20 74 68 65 20 6e 6f given in the no
d390: 64 65 20 63 72 65 61 74 69 6f 6e 20 28 3c 74 74 de creation (<tt
d3a0: 3e 6f 70 63 75 61 20 61 64 64 20 4d 65 74 68 6f >opcua add Metho
d3b0: 64 3c 2f 74 74 3e 29 20 6d 75 73 74 20 20 68 61 d</tt>) must ha
d3c0: 76 65 20 70 72 6f 70 65 72 20 6c 69 73 74 20 66 ve proper list f
d3d0: 6f 72 6d 61 74 20 61 6e 64 20 67 65 74 73 20 74 ormat and gets t
d3e0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 72 he following par
d3f0: 61 6d 65 74 65 72 73 20 61 70 70 65 6e 64 65 64 ameters appended
d400: 20 70 72 69 6f 72 20 74 6f 20 69 6e 76 6f 63 61 prior to invoca
d410: 74 69 6f 6e 3a 20 74 68 65 20 6f 62 6a 65 63 74 tion: the object
d420: 20 6e 6f 64 65 20 69 64 65 6e 74 69 66 69 65 72 node identifier
d430: 2c 20 74 68 65 20 6d 65 74 68 6f 64 20 6e 6f 64 , the method nod
d440: 65 20 69 64 65 6e 74 69 66 69 65 72 2c 20 61 6e e identifier, an
d450: 64 20 61 20 6c 69 73 74 20 6f 66 20 74 79 70 65 d a list of type
d460: 20 6e 61 6d 65 73 20 64 65 72 69 76 65 64 20 66 names derived f
d470: 72 6f 6d 20 74 68 65 20 6d 65 74 68 6f 64 27 73 rom the method's
d480: 20 6f 75 74 70 75 74 20 61 72 67 75 6d 65 6e 74 output argument
d490: 73 2e 20 54 68 69 73 20 6c 69 73 74 20 6d 61 79 s. This list may
d4a0: 20 62 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 be used in the
d4b0: 6d 65 74 68 6f 64 27 73 20 69 6d 70 6c 65 6d 65 method's impleme
d4c0: 6e 74 61 74 69 6f 6e 20 74 6f 20 66 6f 72 6d 20 ntation to form
d4d0: 74 68 65 20 72 65 73 75 6c 74 2e 20 54 68 65 20 the result. The
d4e0: 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20 72 65 callback must re
d4f0: 74 75 72 6e 20 61 20 73 69 6e 67 6c 65 20 76 61 turn a single va
d500: 6c 75 65 20 77 68 69 63 68 20 6d 75 73 74 20 62 lue which must b
d510: 65 20 61 20 6c 69 73 74 20 77 69 74 68 20 74 68 e a list with th
d520: 65 20 73 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 e same number of
d530: 20 69 74 65 6d 73 20 6f 66 20 74 68 65 20 6f 75 items of the ou
d540: 74 70 75 74 20 61 72 67 75 6d 65 6e 74 27 73 0d tput argument's.
d550: 0a 74 79 70 65 20 6c 69 73 74 2e 20 45 61 63 68 .type list. Each
d560: 20 69 74 65 6d 20 67 65 74 73 20 63 6f 6e 76 65 item gets conve
d570: 72 74 65 64 20 74 6f 20 74 68 65 20 72 65 73 70 rted to the resp
d580: 65 63 74 69 76 65 20 4f 50 43 2f 55 41 20 64 61 ective OPC/UA da
d590: 74 61 20 76 61 6c 75 65 20 61 63 63 6f 72 64 69 ta value accordi
d5a0: 6e 67 20 74 6f 20 74 68 65 20 6f 75 74 70 75 74 ng to the output
d5b0: 20 61 72 67 75 6d 65 6e 74 20 69 6e 66 6f 72 6d argument inform
d5c0: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 74 74 ation of the <tt
d5d0: 3e 4d 65 74 68 6f 64 3c 2f 74 74 3e 20 6e 6f 64 >Method</tt> nod
d5e0: 65 2e 20 49 2e 65 2e 20 66 6f 72 20 73 69 6d 70 e. I.e. for simp
d5f0: 6c 65 20 74 79 70 65 73 2c 20 61 20 6c 69 73 74 le types, a list
d600: 20 69 74 65 6d 20 6d 61 79 20 62 65 20 61 20 73 item may be a s
d610: 69 6e 67 6c 65 20 69 6e 74 65 67 65 72 20 65 2e ingle integer e.
d620: 67 2e 20 66 6f 72 20 61 20 73 69 6e 67 6c 65 20 g. for a single
d630: 3c 74 74 3e 55 49 6e 74 31 36 3c 2f 74 74 3e 2c <tt>UInt16</tt>,
d640: 20 61 20 6c 69 73 74 20 6f 66 20 69 6e 74 65 67 a list of integ
d650: 65 72 73 20 66 6f 72 20 61 6e 20 61 72 72 61 79 ers for an array
d660: 20 6f 66 20 3c 74 74 3e 55 49 6e 74 31 36 3c 2f of <tt>UInt16</
d670: 74 74 3e 27 73 2c 20 61 20 73 69 6e 67 6c 65 20 tt>'s, a single
d680: 64 69 63 74 20 66 6f 72 20 61 20 73 74 72 75 63 dict for a struc
d690: 74 75 72 65 20 74 79 70 65 2c 20 6f 72 20 61 20 ture type, or a
d6a0: 6c 69 73 74 20 6f 66 20 64 69 63 74 73 20 66 6f list of dicts fo
d6b0: 72 20 61 6e 20 61 72 72 61 79 20 6f 66 20 73 74 r an array of st
d6c0: 72 75 63 74 75 72 65 64 20 74 79 70 65 73 2e 0d ructured types..
d6d0: 0a 0d 0a 3c 68 33 3e 43 6c 69 65 6e 74 20 4f 62 ...<h3>Client Ob
d6e0: 6a 65 63 74 20 41 6e 64 20 45 76 65 6e 74 20 4c ject And Event L
d6f0: 6f 6f 70 3c 2f 68 33 3e 0d 0a 0d 0a 41 20 63 6c oop</h3>....A cl
d700: 69 65 6e 74 20 6f 62 6a 65 63 74 20 6f 62 74 61 ient object obta
d710: 69 6e 65 64 20 77 69 74 68 20 3c 74 74 3e 6f 70 ined with <tt>op
d720: 63 75 61 20 6e 65 77 20 63 6c 69 65 6e 74 3c 2f cua new client</
d730: 74 74 3e 20 72 65 71 75 69 72 65 73 20 61 20 72 tt> requires a r
d740: 75 6e 6e 69 6e 67 0d 0a 65 76 65 6e 74 20 6c 6f unning..event lo
d750: 6f 70 20 6f 6e 6c 79 20 77 68 65 6e 20 73 75 62 op only when sub
d760: 73 63 72 69 70 74 69 6f 6e 73 2f 6d 6f 6e 69 74 scriptions/monit
d770: 6f 72 65 64 20 69 74 65 6d 73 20 61 72 65 20 69 ored items are i
d780: 6e 76 6f 6c 76 65 64 2e 20 4d 6f 73 74 0d 0a 6f nvolved. Most..o
d790: 74 68 65 72 20 6f 70 65 72 61 74 69 6f 6e 73 20 ther operations
d7a0: 61 72 65 20 70 65 72 66 6f 72 6d 65 64 20 73 79 are performed sy
d7b0: 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 28 61 6e 64 nchronously (and
d7c0: 20 74 68 75 73 20 62 6c 6f 63 6b 69 6e 67 29 2e thus blocking).
d7d0: 0d 0a 0d 0a 3c 68 33 3e 41 73 79 6e 63 68 72 6f ....<h3>Asynchro
d7e0: 6e 6f 75 73 20 4f 70 65 72 61 74 69 6f 6e 73 3c nous Operations<
d7f0: 2f 68 33 3e 0d 0a 0d 0a 41 73 79 6e 63 68 72 6f /h3>....Asynchro
d800: 6e 6f 75 73 20 6d 6f 64 65 20 6f 66 20 6f 70 65 nous mode of ope
d810: 72 61 74 69 6f 6e 20 69 73 20 73 75 70 70 6f 72 ration is suppor
d820: 74 65 64 20 66 6f 72 20 63 6c 69 65 6e 74 20 6f ted for client o
d830: 62 6a 65 63 74 73 20 61 6e 64 20 74 68 65 69 72 bjects and their
d840: 20 3c 74 74 3e 6f 70 63 75 61 20 63 61 6c 6c 3c <tt>opcua call<
d850: 2f 74 74 3e 2c 20 3c 74 74 3e 6f 70 63 75 61 20 /tt>, <tt>opcua
d860: 72 65 61 64 3c 2f 74 74 3e 2c 20 61 6e 64 20 3c read</tt>, and <
d870: 74 74 3e 6f 70 63 75 61 20 77 72 69 74 65 3c 2f tt>opcua write</
d880: 74 74 3e 20 73 75 62 63 6f 6d 6d 61 6e 64 73 2e tt> subcommands.
d890: 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 70 61 The callback pa
d8a0: 72 61 6d 65 74 65 72 20 6d 75 73 74 20 68 61 76 rameter must hav
d8b0: 65 20 70 72 6f 70 65 72 20 6c 69 73 74 20 66 6f e proper list fo
d8c0: 72 6d 61 74 20 61 6e 64 20 67 65 74 73 20 61 20 rmat and gets a
d8d0: 73 69 6e 67 6c 65 20 76 61 6c 75 65 20 61 70 70 single value app
d8e0: 65 6e 64 65 64 20 70 72 69 6f 72 20 74 6f 20 69 ended prior to i
d8f0: 6e 76 6f 63 61 74 69 6f 6e 20 77 68 69 63 68 20 nvocation which
d900: 63 61 72 72 69 65 73 20 74 68 65 20 64 65 73 65 carries the dese
d910: 72 69 61 6c 69 7a 65 64 20 72 65 73 70 6f 6e 73 rialized respons
d920: 65 20 6d 65 73 73 61 67 65 20 63 6f 72 72 65 73 e message corres
d930: 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 6f ponding to the o
d940: 70 65 72 61 74 69 6f 6e 2e 20 49 74 20 69 73 20 peration. It is
d950: 6d 61 64 65 20 75 70 20 61 73 20 61 20 6e 65 73 made up as a nes
d960: 74 65 64 20 3c 74 74 3e 64 69 63 74 3c 2f 74 74 ted <tt>dict</tt
d970: 3e 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 > which contains
d980: 20 61 20 3c 74 74 3e 52 65 73 70 6f 6e 73 65 48 a <tt>ResponseH
d990: 65 61 64 65 72 3c 2f 74 74 3e 20 77 69 74 68 20 eader</tt> with
d9a0: 74 68 65 20 73 74 61 74 75 73 20 63 6f 64 65 20 the status code
d9b0: 6f 66 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e of the operation
d9c0: 20 61 6e 64 20 64 65 70 65 6e 64 69 6e 67 20 6f and depending o
d9d0: 6e 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 n the operation
d9e0: 74 68 65 20 6d 65 74 68 6f 64 20 63 61 6c 6c 20 the method call
d9f0: 72 65 73 75 6c 74 28 73 29 20 6f 72 20 74 68 65 result(s) or the
da00: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 74 value of the at
da10: 74 72 69 62 75 74 65 20 72 65 61 64 20 70 6c 75 tribute read plu
da20: 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 69 61 s additional dia
da30: 67 6e 6f 73 74 69 63 20 69 6e 66 6f 72 6d 61 74 gnostic informat
da40: 69 6f 6e 2e 20 54 68 61 74 20 3c 74 74 3e 64 69 ion. That <tt>di
da50: 63 74 3c 2f 74 74 3e 20 67 65 74 73 20 61 6e 20 ct</tt> gets an
da60: 65 78 74 72 61 20 6b 65 79 20 6e 61 6d 65 64 20 extra key named
da70: 3c 74 74 3e 52 65 71 75 65 73 74 49 64 3c 2f 74 <tt>RequestId</t
da80: 74 3e 20 61 70 70 65 6e 64 65 64 20 77 68 69 63 t> appended whic
da90: 68 20 69 73 20 74 68 65 20 69 6e 74 65 67 65 72 h is the integer
daa0: 20 72 65 71 75 65 73 74 20 69 64 65 6e 74 69 66 request identif
dab0: 69 65 72 20 6f 66 20 74 68 65 20 6f 70 65 72 61 ier of the opera
dac0: 74 69 6f 6e 20 77 68 69 63 68 20 77 61 73 20 72 tion which was r
dad0: 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 63 eturned by the c
dae0: 6f 6d 6d 61 6e 64 20 69 6e 69 74 69 61 74 69 6e ommand initiatin
daf0: 67 20 74 68 65 20 72 65 71 75 65 73 74 2e 20 49 g the request. I
db00: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 70 f the callback p
db10: 61 72 61 6d 65 74 65 72 20 69 73 20 73 70 65 63 arameter is spec
db20: 69 66 69 65 64 20 61 73 20 65 6d 70 74 79 20 6c ified as empty l
db30: 69 73 74 2c 20 74 68 65 20 72 65 73 70 6f 6e 73 ist, the respons
db40: 65 20 69 73 20 64 69 73 63 61 72 64 65 64 2c 20 e is discarded,
db50: 69 2e 65 2e 20 6e 6f 20 54 63 6c 20 63 6f 64 65 i.e. no Tcl code
db60: 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 61 6e is evaluated an
db70: 64 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 d the operation
db80: 61 70 70 65 61 72 73 20 61 73 20 61 20 6f 6e 65 appears as a one
db90: 20 77 61 79 20 72 65 71 75 65 73 74 2e 0d 0a 0d way request....
dba0: 0a 3c 68 33 3e 43 6c 69 65 6e 74 20 45 78 61 6d .<h3>Client Exam
dbb0: 70 6c 65 3c 2f 68 33 3e 0d 0a 0d 0a 3c 76 65 72 ple</h3>....<ver
dbc0: 62 61 74 69 6d 3e 0d 0a 0d 0a 20 20 20 20 70 61 batim>.... pa
dbd0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 74 6f ckage require to
dbe0: 70 63 75 61 0d 0a 0d 0a 20 20 20 20 23 20 63 72 pcua.... # cr
dbf0: 65 61 74 65 20 63 6c 69 65 6e 74 0d 0a 20 20 20 eate client..
dc00: 20 6f 70 63 75 61 20 6e 65 77 20 63 6c 69 65 6e opcua new clien
dc10: 74 20 43 0d 0a 0d 0a 20 20 20 20 23 20 63 6f 6e t C.... # con
dc20: 6e 65 63 74 20 74 6f 20 73 65 72 76 65 72 0d 0a nect to server..
dc30: 20 20 20 20 6f 70 63 75 61 20 63 6f 6e 6e 65 63 opcua connec
dc40: 74 20 43 20 6f 70 63 2e 74 63 70 3a 2f 2f 6c 6f t C opc.tcp://lo
dc50: 63 61 6c 68 6f 73 74 3a 34 38 34 30 20 75 73 65 calhost:4840 use
dc60: 72 20 70 61 73 73 0d 0a 0d 0a 20 20 20 20 23 20 r pass.... #
dc70: 67 65 74 20 4d 79 4e 61 6d 65 73 70 61 63 65 0d get MyNamespace.
dc80: 0a 20 20 20 20 73 65 74 20 6e 73 20 5b 6f 70 63 . set ns [opc
dc90: 75 61 20 6e 61 6d 65 73 70 61 63 65 20 43 20 4d ua namespace C M
dca0: 79 4e 61 6d 65 73 70 61 63 65 5d 0d 0a 0d 0a 20 yNamespace]....
dcb0: 20 20 20 23 20 67 65 6e 65 72 61 74 65 20 73 74 # generate st
dcc0: 75 62 20 70 72 6f 63 73 20 74 6f 20 6d 65 74 68 ub procs to meth
dcd0: 6f 64 73 20 69 6e 20 73 65 72 76 65 72 0d 0a 20 ods in server..
dce0: 20 20 20 23 20 74 68 65 73 65 20 61 72 65 20 63 # these are c
dcf0: 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 63 6c reated in the cl
dd00: 69 65 6e 74 20 73 70 65 63 69 66 69 63 20 3a 3a ient specific ::
dd10: 6f 70 63 75 61 3a 3a 43 20 6e 61 6d 65 73 70 61 opcua::C namespa
dd20: 63 65 0d 0a 20 20 20 20 6f 70 63 75 61 20 67 65 ce.. opcua ge
dd30: 6e 73 74 75 62 73 20 43 20 2f 52 6f 6f 74 2f 4f nstubs C /Root/O
dd40: 62 6a 65 63 74 73 2f 24 7b 6e 73 7d 3a 4d 79 4f bjects/${ns}:MyO
dd50: 62 6a 65 63 74 2f 24 7b 6e 73 7d 3a 0d 0a 0d 0a bject/${ns}:....
dd60: 20 20 20 20 23 20 6c 69 73 74 20 61 6c 6c 20 70 # list all p
dd70: 72 6f 63 73 20 69 6e 20 63 6c 69 65 6e 74 20 73 rocs in client s
dd80: 70 65 63 69 66 69 63 20 6e 61 6d 65 73 70 61 63 pecific namespac
dd90: 65 0d 0a 20 20 20 20 70 75 74 73 20 73 74 64 65 e.. puts stde
dda0: 72 72 20 5b 69 6e 66 6f 20 70 72 6f 63 73 20 3a rr [info procs :
ddb0: 3a 6f 70 63 75 61 3a 3a 43 3a 3a 2a 5d 0d 0a 0d :opcua::C::*]...
ddc0: 0a 20 20 20 20 23 20 63 61 6c 6c 20 73 74 75 62 . # call stub
ddd0: 73 0d 0a 20 20 20 20 70 75 74 73 20 73 74 64 65 s.. puts stde
dde0: 72 72 20 5b 3a 3a 6f 70 63 75 61 3a 3a 43 3a 3a rr [::opcua::C::
ddf0: 52 65 76 65 72 73 65 20 65 73 72 65 76 65 52 5d Reverse esreveR]
de00: 0d 0a 20 20 20 20 70 75 74 73 20 73 74 64 65 72 .. puts stder
de10: 72 20 5b 3a 3a 6f 70 63 75 61 3a 3a 43 3a 3a 57 r [::opcua::C::W
de20: 6f 72 64 53 70 6c 69 74 20 22 77 6f 72 64 5c 6e ordSplit "word\n
de30: 5c 6e 73 70 6c 69 74 22 5d 0d 0a 0d 0a 20 20 20 \nsplit"]....
de40: 20 23 20 72 65 61 64 20 61 20 76 61 72 69 61 62 # read a variab
de50: 6c 65 0d 0a 20 20 20 20 70 75 74 73 20 73 74 64 le.. puts std
de60: 65 72 72 20 5b 6f 70 63 75 61 20 72 65 61 64 20 err [opcua read
de70: 43 20 22 6e 73 3d 24 7b 6e 73 7d 3b 49 74 73 54 C "ns=${ns};ItsT
de80: 63 6c 54 69 6d 65 22 5d 0d 0a 0d 0a 20 20 20 20 clTime"]....
de90: 23 20 6d 6f 6e 69 74 6f 72 20 63 61 6c 6c 62 61 # monitor callba
dea0: 63 6b 20 70 72 6f 63 0d 0a 20 20 20 20 70 72 6f ck proc.. pro
deb0: 63 20 6d 6f 6e 69 74 6f 72 20 7b 64 61 74 61 7d c monitor {data}
dec0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 {.. puts
ded0: 20 73 74 64 65 72 72 20 22 4d 6f 6e 69 74 6f 72 stderr "Monitor
dee0: 3a 20 24 64 61 74 61 22 0d 0a 20 20 20 20 7d 0d : $data".. }.
def0: 0a 0d 0a 20 20 20 20 23 20 6d 61 6b 65 20 61 20 ... # make a
df00: 73 75 62 73 63 72 69 70 74 69 6f 6e 0d 0a 20 20 subscription..
df10: 20 20 73 65 74 20 73 75 62 20 5b 6f 70 63 75 61 set sub [opcua
df20: 20 73 75 62 73 63 72 69 70 74 69 6f 6e 20 43 20 subscription C
df30: 6e 65 77 20 31 20 31 30 30 30 2e 30 5d 0d 0a 0d new 1 1000.0]...
df40: 0a 20 20 20 20 23 20 6d 61 6b 65 20 61 20 6d 6f . # make a mo
df50: 6e 69 74 6f 72 0d 0a 20 20 20 20 73 65 74 20 6d nitor.. set m
df60: 6f 6e 20 5b 6f 70 63 75 61 20 6d 6f 6e 69 74 6f on [opcua monito
df70: 72 20 43 20 6e 65 77 20 24 73 75 62 20 64 61 74 r C new $sub dat
df80: 61 20 6d 6f 6e 69 74 6f 72 20 22 6e 73 3d 24 7b a monitor "ns=${
df90: 6e 73 7d 3b 49 74 73 54 63 6c 54 69 6d 65 22 5d ns};ItsTclTime"]
dfa0: 0d 0a 20 20 20 20 70 75 74 73 20 73 74 64 65 72 .. puts stder
dfb0: 72 20 22 53 75 62 73 63 72 69 70 74 69 6f 6e 3a r "Subscription:
dfc0: 20 24 73 75 62 22 0d 0a 20 20 20 20 70 75 74 73 $sub".. puts
dfd0: 20 73 74 64 65 72 72 20 22 4d 6f 6e 69 74 6f 72 stderr "Monitor
dfe0: 3a 20 24 6d 6f 6e 22 0d 0a 0d 0a 20 20 20 20 23 : $mon".... #
dff0: 20 68 61 6e 64 6c 65 20 6d 6f 6e 69 74 6f 72 73 handle monitors
e000: 20 66 6f 72 20 61 20 66 65 77 20 73 65 63 6f 6e for a few secon
e010: 64 73 0d 0a 20 20 20 20 73 65 74 20 64 6f 6e 65 ds.. set done
e020: 20 30 0d 0a 20 20 20 20 61 66 74 65 72 20 31 30 0.. after 10
e030: 30 30 30 20 7b 73 65 74 20 64 6f 6e 65 20 31 7d 000 {set done 1}
e040: 0d 0a 20 20 20 20 76 77 61 69 74 20 64 6f 6e 65 .. vwait done
e050: 0d 0a 0d 0a 20 20 20 20 23 20 64 65 6c 65 74 65 .... # delete
e060: 20 6d 6f 6e 69 74 6f 72 20 61 6e 64 20 73 75 62 monitor and sub
e070: 73 63 72 69 70 74 69 6f 6e 0d 0a 20 20 20 20 6f scription.. o
e080: 70 63 75 61 20 6d 6f 6e 69 74 6f 72 20 43 20 64 pcua monitor C d
e090: 65 73 74 72 6f 79 20 24 73 75 62 20 24 6d 6f 6e estroy $sub $mon
e0a0: 0d 0a 20 20 20 20 6f 70 63 75 61 20 73 75 62 73 .. opcua subs
e0b0: 63 72 69 70 74 69 6f 6e 20 43 20 64 65 73 74 72 cription C destr
e0c0: 6f 79 20 24 73 75 62 0d 0a 0d 0a 20 20 20 20 23 oy $sub.... #
e0d0: 20 73 68 75 74 20 64 6f 77 6e 20 74 68 65 20 73 shut down the s
e0e0: 65 72 76 65 72 20 75 73 69 6e 67 20 61 20 6d 65 erver using a me
e0f0: 74 68 6f 64 20 63 61 6c 6c 0d 0a 20 20 20 20 3a thod call.. :
e100: 3a 6f 70 63 75 61 3a 3a 43 3a 3a 45 78 69 74 0d :opcua::C::Exit.
e110: 0a 0d 0a 20 20 20 20 23 20 64 65 73 74 72 6f 79 ... # destroy
e120: 20 74 68 65 20 63 6c 69 65 6e 74 0d 0a 20 20 20 the client..
e130: 20 6f 70 63 75 61 20 64 65 73 74 72 6f 79 20 43 opcua destroy C
e140: 0d 0a 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d ....</verbatim>.
e150: 0a 0d 0a 3c 68 33 3e 53 65 72 76 65 72 20 4f 62 ...<h3>Server Ob
e160: 6a 65 63 74 20 41 6e 64 20 45 76 65 6e 74 20 4c ject And Event L
e170: 6f 6f 70 3c 2f 68 33 3e 0d 0a 0d 0a 41 20 73 65 oop</h3>....A se
e180: 72 76 65 72 20 6f 62 6a 65 63 74 20 6f 62 74 61 rver object obta
e190: 69 6e 65 64 20 77 69 74 68 20 3c 74 74 3e 6f 70 ined with <tt>op
e1a0: 63 75 61 20 6e 65 77 20 73 65 72 76 65 72 3c 2f cua new server</
e1b0: 74 74 3e 20 72 65 71 75 69 72 65 73 20 61 20 72 tt> requires a r
e1c0: 75 6e 6e 69 6e 67 20 65 76 65 6e 74 20 6c 6f 6f unning event loo
e1d0: 70 20 61 73 20 6c 6f 6e 67 20 61 73 20 69 74 20 p as long as it
e1e0: 69 73 20 69 6e 20 72 75 6e 6e 69 6e 67 20 73 74 is in running st
e1f0: 61 74 65 20 28 73 74 61 72 74 65 64 20 77 69 74 ate (started wit
e200: 68 20 3c 74 74 3e 6f 70 63 75 61 20 73 74 61 72 h <tt>opcua star
e210: 74 3c 2f 74 74 3e 29 2e 20 44 65 70 65 6e 64 69 t</tt>). Dependi
e220: 6e 67 20 6f 6e 20 74 68 65 20 73 75 70 70 6f 72 ng on the suppor
e230: 74 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79 t of the underly
e240: 69 6e 67 20 6f 70 65 6e 36 32 35 34 31 20 6c 69 ing open62541 li
e250: 62 72 61 72 79 2c 20 74 68 65 20 6f 70 63 75 61 brary, the opcua
e260: 20 73 65 72 76 65 72 27 73 20 6e 65 74 77 6f 72 server's networ
e270: 6b 20 68 61 6e 64 6c 65 72 20 72 65 2d 64 69 73 k handler re-dis
e280: 70 61 74 63 68 65 73 20 69 74 73 65 6c 66 20 75 patches itself u
e290: 73 69 6e 67 20 61 20 54 63 6c 20 74 69 6d 65 72 sing a Tcl timer
e2a0: 20 63 61 6c 6c 62 61 63 6b 20 77 68 6f 73 65 20 callback whose
e2b0: 69 6e 74 65 72 76 61 6c 20 69 73 20 63 6f 6e 74 interval is cont
e2c0: 72 6f 6c 6c 65 64 20 62 79 20 74 68 65 20 70 72 rolled by the pr
e2d0: 6f 74 6f 63 6f 6c 20 74 69 6d 65 72 73 20 6f 66 otocol timers of
e2e0: 20 74 68 65 20 4f 50 43 2f 55 41 20 73 74 61 63 the OPC/UA stac
e2f0: 6b 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e k implementation
e300: 2c 20 6f 72 20 69 74 20 73 70 69 6e 73 20 75 70 , or it spins up
e310: 20 61 20 64 65 64 69 63 61 74 65 64 20 74 68 72 a dedicated thr
e320: 65 61 64 20 77 68 69 63 68 20 64 65 61 6c 73 20 ead which deals
e330: 77 69 74 68 20 74 68 65 20 6e 65 74 77 6f 72 6b with the network
e340: 20 74 72 61 66 66 69 63 2e 20 49 6e 20 74 68 65 traffic. In the
e350: 20 6c 61 74 74 65 72 20 63 61 73 65 2c 20 61 20 latter case, a
e360: 72 75 6e 6e 69 6e 67 20 65 76 65 6e 74 20 6c 6f running event lo
e370: 6f 70 20 69 73 20 72 65 71 75 69 72 65 64 2c 20 op is required,
e380: 74 6f 6f 2c 20 66 6f 72 20 70 72 6f 63 65 73 73 too, for process
e390: 69 6e 67 20 6d 65 74 68 6f 64 20 61 6e 64 20 64 ing method and d
e3a0: 61 74 61 73 6f 75 72 63 65 20 63 61 6c 6c 62 61 atasource callba
e3b0: 63 6b 73 2e 0d 0a 0d 0a 3c 68 33 3e 53 65 72 76 cks.....<h3>Serv
e3c0: 65 72 20 45 78 61 6d 70 6c 65 3c 2f 68 33 3e 0d er Example</h3>.
e3d0: 0a 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a 0d ...<verbatim>...
e3e0: 0a 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 . package req
e3f0: 75 69 72 65 20 74 6f 70 63 75 61 0d 0a 0d 0a 20 uire topcua....
e400: 20 20 20 23 20 63 72 65 61 74 65 20 73 65 72 76 # create serv
e410: 65 72 0d 0a 20 20 20 20 6f 70 63 75 61 20 6e 65 er.. opcua ne
e420: 77 20 73 65 72 76 65 72 20 34 38 34 30 20 53 0d w server 4840 S.
e430: 0a 0d 0a 20 20 20 20 23 20 73 65 74 75 70 20 61 ... # setup a
e440: 63 63 65 73 73 20 63 6f 6e 74 72 6f 6c 0d 0a 20 ccess control..
e450: 20 20 20 6f 70 63 75 61 20 61 63 6c 20 53 20 75 opcua acl S u
e460: 73 65 72 20 70 61 73 73 0d 0a 0d 0a 20 20 20 20 ser pass....
e470: 23 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e # implementation
e480: 73 20 6f 66 20 6d 65 74 68 6f 64 73 20 65 74 63 s of methods etc
e490: 2e 0d 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 ... namespace
e4a0: 20 65 76 61 6c 20 3a 3a 6f 70 63 75 61 3a 3a 53 eval ::opcua::S
e4b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 20 6d 65 {.. # me
e4c0: 74 68 6f 64 20 63 61 6c 6c 62 61 63 6b 0d 0a 20 thod callback..
e4d0: 20 20 20 20 20 20 20 70 72 6f 63 20 5f 72 65 76 proc _rev
e4e0: 65 72 73 65 20 7b 6f 62 6a 20 6d 65 74 68 20 73 erse {obj meth s
e4f0: 74 72 69 6e 67 7d 20 7b 0d 0a 20 20 20 20 20 20 tring} {..
e500: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 73 74 return [st
e510: 72 69 6e 67 20 72 65 76 65 72 73 65 20 24 73 74 ring reverse $st
e520: 72 69 6e 67 5d 0d 0a 20 20 20 20 20 20 20 20 7d ring].. }
e530: 0d 0a 20 20 20 20 20 20 20 20 23 20 6d 65 74 68 .. # meth
e540: 6f 64 20 63 61 6c 6c 62 61 63 6b 0d 0a 20 20 20 od callback..
e550: 20 20 20 20 20 70 72 6f 63 20 5f 77 6f 72 64 73 proc _words
e560: 70 6c 69 74 20 7b 6f 62 6a 20 6d 65 74 68 20 73 plit {obj meth s
e570: 74 72 69 6e 67 7d 20 7b 0d 0a 20 20 20 20 20 20 tring} {..
e580: 20 20 20 20 20 20 73 65 74 20 77 20 5b 72 65 67 set w [reg
e590: 65 78 70 20 2d 61 6c 6c 20 2d 69 6e 6c 69 6e 65 exp -all -inline
e5a0: 20 7b 5c 53 2b 7d 20 24 73 74 72 69 6e 67 5d 0d {\S+} $string].
e5b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 . # r
e5c0: 65 74 75 72 6e 20 63 6f 64 65 20 62 72 65 61 6b eturn code break
e5d0: 20 6d 61 6b 65 73 20 69 6e 74 6f 20 61 6e 20 61 makes into an a
e5e0: 72 72 61 79 20 72 65 73 75 6c 74 0d 0a 20 20 20 rray result..
e5f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
e600: 2d 63 6f 64 65 20 62 72 65 61 6b 20 24 77 0d 0a -code break $w..
e610: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
e620: 20 20 20 23 20 6d 65 74 68 6f 64 20 63 61 6c 6c # method call
e630: 62 61 63 6b 0d 0a 20 20 20 20 20 20 20 20 70 72 back.. pr
e640: 6f 63 20 5f 65 78 69 74 20 7b 6f 62 6a 20 6d 65 oc _exit {obj me
e650: 74 68 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 th} {..
e660: 20 20 20 61 66 74 65 72 20 31 30 30 30 20 5b 6e after 1000 [n
e670: 61 6d 65 73 70 61 63 65 20 63 75 72 72 65 6e 74 amespace current
e680: 5d 3a 3a 5f 72 65 61 6c 5f 65 78 69 74 0d 0a 20 ]::_real_exit..
e690: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur
e6a0: 6e 20 7b 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d n {}.. }.
e6b0: 0a 20 20 20 20 20 20 20 20 23 20 68 65 6c 70 65 . # helpe
e6c0: 72 20 70 72 6f 63 0d 0a 20 20 20 20 20 20 20 20 r proc..
e6d0: 70 72 6f 63 20 5f 72 65 61 6c 5f 65 78 69 74 20 proc _real_exit
e6e0: 7b 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 {} {..
e6f0: 20 20 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 catch {..
e700: 20 20 20 20 20 20 20 20 20 20 20 3a 3a 6f 70 63 ::opc
e710: 75 61 3a 3a 73 74 6f 70 20 53 0d 0a 20 20 20 20 ua::stop S..
e720: 20 20 20 20 20 20 20 20 20 20 20 20 3a 3a 6f 70 ::op
e730: 63 75 61 3a 3a 64 65 73 74 72 6f 79 20 53 0d 0a cua::destroy S..
e740: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 }..
e750: 20 20 20 20 20 20 20 20 20 20 20 65 78 69 74 20 exit
e760: 30 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 0.. }..
e770: 20 20 20 20 20 20 23 20 64 61 74 61 20 73 6f 75 # data sou
e780: 72 63 65 20 63 61 6c 6c 62 61 63 6b 0d 0a 20 20 rce callback..
e790: 20 20 20 20 20 20 70 72 6f 63 20 5f 69 74 73 5f proc _its_
e7a0: 74 63 6c 5f 74 69 6d 65 20 7b 6e 6f 64 65 20 6f tcl_time {node o
e7b0: 70 20 7b 76 61 6c 75 65 20 7b 7d 7d 7d 20 7b 0d p {value {}}} {.
e7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
e7d0: 7b 24 6f 70 20 65 71 20 22 72 65 61 64 22 7d 20 {$op eq "read"}
e7e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
e7f0: 20 20 20 72 65 74 75 72 6e 20 5b 6c 69 73 74 20 return [list
e800: 53 74 72 69 6e 67 20 5b 63 6c 6f 63 6b 20 66 6f String [clock fo
e810: 72 6d 61 74 20 5b 63 6c 6f 63 6b 20 73 65 63 6f rmat [clock seco
e820: 6e 64 73 5d 5d 5d 0d 0a 20 20 20 20 20 20 20 20 nds]]]..
e830: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 }..
e840: 20 20 20 72 65 74 75 72 6e 20 7b 7d 0d 0a 20 20 return {}..
e850: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a }.. }..
e860: 0d 0a 20 20 20 20 23 20 63 72 65 61 74 65 20 6f .. # create o
e870: 75 72 20 4f 50 43 2f 55 41 20 6e 61 6d 65 73 70 ur OPC/UA namesp
e880: 61 63 65 0d 0a 20 20 20 20 73 65 74 20 6e 73 20 ace.. set ns
e890: 5b 6f 70 63 75 61 20 61 64 64 20 53 20 4e 61 6d [opcua add S Nam
e8a0: 65 73 70 61 63 65 20 4d 79 4e 61 6d 65 73 70 61 espace MyNamespa
e8b0: 63 65 5d 0d 0a 0d 0a 20 20 20 20 23 20 67 65 74 ce].... # get
e8c0: 20 4f 62 6a 65 63 74 73 20 66 6f 6c 64 65 72 0d Objects folder.
e8d0: 0a 20 20 20 20 73 65 74 20 4f 46 20 5b 6c 69 6e . set OF [lin
e8e0: 64 65 78 20 5b 6f 70 63 75 61 20 74 72 61 6e 73 dex [opcua trans
e8f0: 6c 61 74 65 20 53 20 5b 6f 70 63 75 61 20 72 6f late S [opcua ro
e900: 6f 74 5d 20 2f 20 4f 62 6a 65 63 74 73 5d 20 30 ot] / Objects] 0
e910: 5d 0d 0a 0d 0a 20 20 20 20 23 20 63 72 65 61 74 ].... # creat
e920: 65 20 61 6e 20 6f 62 6a 65 63 74 20 69 6e 20 6f e an object in o
e930: 75 72 20 6e 61 6d 65 73 70 61 63 65 20 69 6e 20 ur namespace in
e940: 4f 62 6a 65 63 74 73 20 66 6f 6c 64 65 72 0d 0a Objects folder..
e950: 20 20 20 20 73 65 74 20 6f 62 6a 20 5b 6f 70 63 set obj [opc
e960: 75 61 20 61 64 64 20 53 20 4f 62 6a 65 63 74 20 ua add S Object
e970: 22 6e 73 3d 24 6e 73 3b 73 3d 4d 79 4f 62 6a 65 "ns=$ns;s=MyObje
e980: 63 74 22 20 24 4f 46 20 4f 72 67 61 6e 69 7a 65 ct" $OF Organize
e990: 73 20 5c 0d 0a 20 20 20 20 20 20 20 20 22 24 6e s \.. "$n
e9a0: 73 3a 4d 79 4f 62 6a 65 63 74 22 5d 0d 0a 0d 0a s:MyObject"]....
e9b0: 20 20 20 20 23 20 63 72 65 61 74 65 20 6d 65 74 # create met
e9c0: 68 6f 64 73 20 6f 6e 20 6f 62 6a 65 63 74 0d 0a hods on object..
e9d0: 20 20 20 20 73 65 74 20 6d 65 74 68 20 5b 6f 70 set meth [op
e9e0: 63 75 61 20 61 64 64 20 53 20 4d 65 74 68 6f 64 cua add S Method
e9f0: 20 22 6e 73 3d 24 6e 73 3b 73 3d 52 65 76 65 72 "ns=$ns;s=Rever
ea00: 73 65 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 se" \..
ea10: 20 20 20 20 20 20 20 20 20 24 6f 62 6a 20 48 61 $obj Ha
ea20: 73 43 6f 6d 70 6f 6e 65 6e 74 20 5c 0d 0a 20 20 sComponent \..
ea30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ea40: 7b 53 74 72 69 6e 67 20 21 6f 75 74 7d 20 22 24 {String !out} "$
ea50: 6e 73 3a 52 65 76 65 72 73 65 22 20 7b 53 74 72 ns:Reverse" {Str
ea60: 69 6e 67 20 21 69 6e 7d 20 5c 0d 0a 20 20 20 20 ing !in} \..
ea70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 3a ::
ea80: 6f 70 63 75 61 3a 3a 53 3a 3a 5f 72 65 76 65 72 opcua::S::_rever
ea90: 73 65 5d 0d 0a 20 20 20 20 73 65 74 20 6d 65 74 se].. set met
eaa0: 68 20 5b 6f 70 63 75 61 20 61 64 64 20 53 20 4d h [opcua add S M
eab0: 65 74 68 6f 64 20 22 6e 73 3d 24 6e 73 3b 73 3d ethod "ns=$ns;s=
eac0: 57 6f 72 64 53 70 6c 69 74 22 20 5c 0d 0a 20 20 WordSplit" \..
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
eae0: 24 6f 62 6a 20 48 61 73 43 6f 6d 70 6f 6e 65 6e $obj HasComponen
eaf0: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 t \..
eb00: 20 20 20 20 20 20 20 7b 53 74 72 69 6e 67 20 21 {String !
eb10: 6f 75 74 7d 20 22 24 6e 73 3a 57 6f 72 64 53 70 out} "$ns:WordSp
eb20: 6c 69 74 22 20 7b 53 74 72 69 6e 67 20 21 69 6e lit" {String !in
eb30: 7d 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 } \..
eb40: 20 20 20 20 20 20 20 3a 3a 6f 70 63 75 61 3a 3a ::opcua::
eb50: 53 3a 3a 5f 77 6f 72 64 73 70 6c 69 74 5d 0d 0a S::_wordsplit]..
eb60: 20 20 20 20 73 65 74 20 6d 65 74 68 20 5b 6f 70 set meth [op
eb70: 63 75 61 20 61 64 64 20 53 20 4d 65 74 68 6f 64 cua add S Method
eb80: 20 22 6e 73 3d 24 6e 73 3b 73 3d 45 78 69 74 22 "ns=$ns;s=Exit"
eb90: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 \..
eba0: 20 20 20 20 20 20 24 6f 62 6a 20 48 61 73 43 6f $obj HasCo
ebb0: 6d 70 6f 6e 65 6e 74 20 5c 0d 0a 20 20 20 20 20 mponent \..
ebc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 7d 20 {}
ebd0: 22 24 6e 73 3a 45 78 69 74 22 20 7b 7d 20 5c 0d "$ns:Exit" {} \.
ebe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
ebf0: 20 20 20 3a 3a 6f 70 63 75 61 3a 3a 53 3a 3a 5f ::opcua::S::_
ec00: 65 78 69 74 5d 0d 0a 0d 0a 20 20 20 20 23 20 63 exit].... # c
ec10: 72 65 61 74 65 20 61 20 76 61 72 69 61 62 6c 65 reate a variable
ec20: 20 69 6e 20 6f 75 72 20 6e 61 6d 65 73 70 61 63 in our namespac
ec30: 65 20 69 6e 20 4f 62 6a 65 63 74 73 20 66 6f 6c e in Objects fol
ec40: 64 65 72 0d 0a 20 20 20 20 73 65 74 20 76 61 72 der.. set var
ec50: 20 5b 6f 70 63 75 61 20 61 64 64 20 53 20 56 61 [opcua add S Va
ec60: 72 69 61 62 6c 65 20 22 6e 73 3d 24 6e 73 3b 73 riable "ns=$ns;s
ec70: 3d 49 74 73 54 63 6c 54 69 6d 65 22 20 5c 0d 0a =ItsTclTime" \..
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
ec90: 20 24 4f 46 20 4f 72 67 61 6e 69 7a 65 73 20 5c $OF Organizes \
eca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
ecb0: 20 20 20 22 24 6e 73 3a 49 74 73 54 63 6c 54 69 "$ns:ItsTclTi
ecc0: 6d 65 22 20 7b 7d 20 7b 7d 20 5c 0d 0a 20 20 20 me" {} {} \..
ecd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 3a ::
ece0: 6f 70 63 75 61 3a 3a 53 3a 3a 5f 69 74 73 5f 74 opcua::S::_its_t
ecf0: 63 6c 5f 74 69 6d 65 5d 0d 0a 0d 0a 20 20 20 20 cl_time]....
ed00: 23 20 64 75 6d 70 20 6d 65 74 68 6f 64 73 0d 0a # dump methods..
ed10: 20 20 20 20 70 75 74 73 20 73 74 64 65 72 72 20 puts stderr
ed20: 5b 6f 70 63 75 61 20 6d 65 74 68 6f 64 73 20 53 [opcua methods S
ed30: 5d 0d 0a 0d 0a 20 20 20 20 23 20 67 65 6e 65 72 ].... # gener
ed40: 61 74 65 20 73 74 75 62 73 20 74 6f 20 6d 65 74 ate stubs to met
ed50: 68 6f 64 73 20 69 6e 20 73 65 72 76 65 72 0d 0a hods in server..
ed60: 20 20 20 20 23 20 74 68 65 73 65 20 61 72 65 20 # these are
ed70: 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 73 created in the s
ed80: 65 72 76 65 72 20 73 70 65 63 69 66 69 63 20 3a erver specific :
ed90: 3a 6f 70 63 75 61 3a 3a 53 20 6e 61 6d 65 73 70 :opcua::S namesp
eda0: 61 63 65 0d 0a 20 20 20 20 6f 70 63 75 61 20 67 ace.. opcua g
edb0: 65 6e 73 74 75 62 73 20 53 20 2f 52 6f 6f 74 2f enstubs S /Root/
edc0: 4f 62 6a 65 63 74 73 2f 24 7b 6e 73 7d 3a 4d 79 Objects/${ns}:My
edd0: 4f 62 6a 65 63 74 2f 24 7b 6e 73 7d 3a 0d 0a 0d Object/${ns}:...
ede0: 0a 20 20 20 20 23 20 6c 69 73 74 20 61 6c 6c 20 . # list all
edf0: 70 72 6f 63 73 20 69 6e 20 73 65 72 76 65 72 20 procs in server
ee00: 73 70 65 63 69 66 69 63 20 6e 61 6d 65 73 70 61 specific namespa
ee10: 63 65 0d 0a 20 20 20 20 70 75 74 73 20 73 74 64 ce.. puts std
ee20: 65 72 72 20 5b 69 6e 66 6f 20 70 72 6f 63 73 20 err [info procs
ee30: 3a 3a 6f 70 63 75 61 3a 3a 53 3a 3a 2a 5d 0d 0a ::opcua::S::*]..
ee40: 0d 0a 20 20 20 20 23 20 63 61 6c 6c 20 73 74 75 .. # call stu
ee50: 62 73 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 73 bs directly on s
ee60: 65 72 76 65 72 0d 0a 20 20 20 20 70 75 74 73 20 erver.. puts
ee70: 73 74 64 65 72 72 20 5b 3a 3a 6f 70 63 75 61 3a stderr [::opcua:
ee80: 3a 53 3a 3a 52 65 76 65 72 73 65 20 65 73 72 65 :S::Reverse esre
ee90: 76 65 52 5d 0d 0a 20 20 20 20 70 75 74 73 20 73 veR].. puts s
eea0: 74 64 65 72 72 20 5b 3a 3a 6f 70 63 75 61 3a 3a tderr [::opcua::
eeb0: 53 3a 3a 57 6f 72 64 53 70 6c 69 74 20 22 77 6f S::WordSplit "wo
eec0: 72 64 5c 6e 5c 6e 73 70 6c 69 74 22 5d 0d 0a 0d rd\n\nsplit"]...
eed0: 0a 20 20 20 20 23 20 72 65 61 64 20 6f 75 72 20 . # read our
eee0: 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 70 75 variable.. pu
eef0: 74 73 20 73 74 64 65 72 72 20 5b 6f 70 63 75 61 ts stderr [opcua
ef00: 20 72 65 61 64 20 53 20 24 76 61 72 5d 0d 0a 0d read S $var]...
ef10: 0a 20 20 20 20 23 20 73 74 61 72 74 20 73 65 72 . # start ser
ef20: 76 65 72 0d 0a 20 20 20 20 6f 70 63 75 61 20 73 ver.. opcua s
ef30: 74 61 72 74 20 53 0d 0a 0d 0a 20 20 20 20 23 20 tart S.... #
ef40: 65 6e 74 65 72 20 65 76 65 6e 74 20 6c 6f 6f 70 enter event loop
ef50: 0d 0a 20 20 20 20 76 77 61 69 74 20 66 6f 72 65 .. vwait fore
ef60: 76 65 72 0d 0a 0d 0a 3c 2f 76 65 72 62 61 74 69 ver....</verbati
ef70: 6d 3e 0d 0a 0d 0a 3c 68 33 3e 44 65 66 69 6e 69 m>....<h3>Defini
ef80: 6e 67 20 43 75 73 74 6f 6d 20 44 61 74 61 20 53 ng Custom Data S
ef90: 74 72 75 63 74 75 72 65 73 3c 2f 68 33 3e 0d 0a tructures</h3>..
efa0: 0d 0a 3c 76 65 72 62 61 74 69 6d 3e 0d 0a 0d 0a ..<verbatim>....
efb0: 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75 package requ
efc0: 69 72 65 20 74 6f 70 63 75 61 0d 0a 0d 0a 20 20 ire topcua....
efd0: 20 20 23 20 63 72 65 61 74 65 20 73 65 72 76 65 # create serve
efe0: 72 0d 0a 20 20 20 20 6f 70 63 75 61 20 6e 65 77 r.. opcua new
eff0: 20 73 65 72 76 65 72 20 34 38 34 30 20 53 0d 0a server 4840 S..
f000: 0d 0a 20 20 20 20 23 20 63 72 65 61 74 65 20 6f .. # create o
f010: 75 72 20 6e 61 6d 65 73 70 61 63 65 0d 0a 20 20 ur namespace..
f020: 20 20 73 65 74 20 4e 53 20 68 74 74 70 3a 2f 2f set NS http://
f030: 77 77 77 2e 61 6e 64 72 6f 77 69 73 68 2e 6f 72 www.androwish.or
f040: 67 2f 54 65 73 74 4e 53 2f 0d 0a 20 20 20 20 73 g/TestNS/.. s
f050: 65 74 20 6e 73 69 64 78 20 5b 6f 70 63 75 61 20 et nsidx [opcua
f060: 61 64 64 20 53 20 4e 61 6d 65 73 70 61 63 65 20 add S Namespace
f070: 24 4e 53 5d 0d 0a 0d 0a 20 20 20 20 23 20 63 72 $NS].... # cr
f080: 65 61 74 65 20 73 74 72 75 63 74 73 20 65 74 63 eate structs etc
f090: 2e 2c 20 66 69 65 6c 64 20 6e 61 6d 65 73 20 70 ., field names p
f0a0: 72 65 66 69 78 65 64 20 77 69 74 68 20 27 2a 27 refixed with '*'
f0b0: 20 61 72 65 20 61 72 72 61 79 73 0d 0a 20 20 20 are arrays..
f0c0: 20 23 20 43 41 55 54 49 4f 4e 3a 20 6e 6f 20 63 # CAUTION: no c
f0d0: 6f 6d 6d 65 6e 74 73 20 61 6c 6c 6f 77 65 64 20 omments allowed
f0e0: 69 6e 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f in the definitio
f0f0: 6e 20 6c 69 73 74 0d 0a 20 20 20 20 6f 70 63 75 n list.. opcu
f100: 61 20 64 65 66 74 79 70 65 73 20 53 20 24 4e 53 a deftypes S $NS
f110: 20 7b 0d 0a 20 20 20 20 20 20 20 20 73 74 72 75 {.. stru
f120: 63 74 20 4b 56 50 61 69 72 20 7b 0d 0a 20 20 20 ct KVPair {..
f130: 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 20 String
f140: 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 name..
f150: 20 20 53 74 72 69 6e 67 20 76 61 6c 75 65 0d 0a String value..
f160: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
f170: 20 20 20 73 74 72 75 63 74 20 52 47 42 20 7b 0d struct RGB {.
f180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 49 6e . UIn
f190: 74 31 36 20 72 65 64 0d 0a 20 20 20 20 20 20 20 t16 red..
f1a0: 20 20 20 20 20 55 49 6e 74 31 36 20 67 72 65 65 UInt16 gree
f1b0: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 55 n.. U
f1c0: 49 6e 74 31 36 20 62 6c 75 65 0d 0a 20 20 20 20 Int16 blue..
f1d0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 }.. s
f1e0: 74 72 75 63 74 20 4e 61 6d 65 64 43 6f 6c 6f 72 truct NamedColor
f1f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
f200: 53 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 String name..
f210: 20 20 20 20 20 20 20 20 20 52 47 42 20 63 6f 6c RGB col
f220: 6f 72 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 or.. }..
f230: 20 20 20 20 20 20 20 73 74 72 75 63 74 20 57 69 struct Wi
f240: 74 68 41 72 72 61 79 20 7b 0d 0a 20 20 20 20 20 thArray {..
f250: 20 20 20 20 20 20 20 53 74 72 69 6e 67 20 6e 61 String na
f260: 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 me..
f270: 53 74 72 69 6e 67 20 2a 76 61 6c 75 65 73 0d 0a String *values..
f280: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
f290: 20 20 20 65 6e 75 6d 20 53 69 6d 70 6c 65 45 6e enum SimpleEn
f2a0: 75 6d 20 7b 20 52 65 64 20 47 72 65 65 6e 20 42 um { Red Green B
f2b0: 6c 75 65 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a lue }.. }....
f2c0: 20 20 20 20 23 20 69 6d 70 6f 72 74 20 74 79 70 # import typ
f2d0: 65 20 64 65 66 73 0d 0a 20 20 20 20 6f 70 63 75 e defs.. opcu
f2e0: 61 20 67 65 6e 74 79 70 65 73 20 53 0d 0a 0d 0a a gentypes S....
f2f0: 20 20 20 20 23 20 6d 61 6b 65 20 73 6f 6d 65 20 # make some
f300: 76 61 72 69 61 62 6c 65 73 20 75 73 69 6e 67 20 variables using
f310: 74 68 65 20 73 74 72 75 63 74 73 20 66 72 6f 6d the structs from
f320: 20 61 62 6f 76 65 0d 0a 20 20 20 20 73 65 74 20 above.. set
f330: 4f 46 20 5b 6c 69 6e 64 65 78 20 5b 6f 70 63 75 OF [lindex [opcu
f340: 61 20 74 72 61 6e 73 6c 61 74 65 20 53 20 5b 6f a translate S [o
f350: 70 63 75 61 20 72 6f 6f 74 5d 20 2f 20 4f 62 6a pcua root] / Obj
f360: 65 63 74 73 5d 20 30 5d 0d 0a 20 20 20 20 66 6f ects] 0].. fo
f370: 72 65 61 63 68 20 7b 6e 61 6d 65 20 74 79 70 65 reach {name type
f380: 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 58 31 20 } {.. X1
f390: 4b 56 50 61 69 72 0d 0a 20 20 20 20 20 20 20 20 KVPair..
f3a0: 58 32 20 52 47 42 0d 0a 20 20 20 20 20 20 20 20 X2 RGB..
f3b0: 58 33 20 4e 61 6d 65 64 43 6f 6c 6f 72 0d 0a 20 X3 NamedColor..
f3c0: 20 20 20 20 20 20 20 58 34 20 57 69 74 68 41 72 X4 WithAr
f3d0: 72 61 79 0d 0a 20 20 20 20 7d 20 7b 0d 0a 20 20 ray.. } {..
f3e0: 20 20 20 20 20 20 73 65 74 20 61 74 74 20 5b 6f set att [o
f3f0: 70 63 75 61 20 61 74 74 72 73 20 64 65 66 61 75 pcua attrs defau
f400: 6c 74 20 56 61 72 69 61 62 6c 65 41 74 74 72 69 lt VariableAttri
f410: 62 75 74 65 73 5d 0d 0a 20 20 20 20 20 20 20 20 butes]..
f420: 64 69 63 74 20 73 65 74 20 61 74 74 20 64 61 74 dict set att dat
f430: 61 54 79 70 65 20 5b 6f 70 63 75 61 20 74 79 70 aType [opcua typ
f440: 65 73 20 6e 6f 64 65 69 64 20 53 20 24 74 79 70 es nodeid S $typ
f450: 65 5d 0d 0a 20 20 20 20 20 20 20 20 64 69 63 74 e].. dict
f460: 20 73 65 74 20 61 74 74 20 76 61 6c 75 65 20 5b set att value [
f470: 6c 69 73 74 20 24 74 79 70 65 20 5b 6f 70 63 75 list $type [opcu
f480: 61 20 74 79 70 65 73 20 65 6d 70 74 79 20 53 20 a types empty S
f490: 24 74 79 70 65 5d 5d 0d 0a 20 20 20 20 20 20 20 $type]]..
f4a0: 20 6f 70 63 75 61 20 61 64 64 20 53 20 56 61 72 opcua add S Var
f4b0: 69 61 62 6c 65 20 22 6e 73 3d 24 7b 6e 73 69 64 iable "ns=${nsid
f4c0: 78 7d 3b 73 3d 24 6e 61 6d 65 22 20 24 4f 46 20 x};s=$name" $OF
f4d0: 4f 72 67 61 6e 69 7a 65 73 20 5c 0d 0a 20 20 20 Organizes \..
f4e0: 20 20 20 20 20 20 20 20 20 22 24 7b 6e 73 69 64 "${nsid
f4f0: 78 7d 3a 24 6e 61 6d 65 22 20 7b 7d 20 24 61 74 x}:$name" {} $at
f500: 74 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 t.. }....
f510: 6f 70 63 75 61 20 77 72 69 74 65 20 53 20 22 24 opcua write S "$
f520: 7b 6e 73 69 64 78 7d 3a 58 34 22 20 56 61 6c 75 {nsidx}:X4" Valu
f530: 65 20 57 69 74 68 41 72 72 61 79 20 7b 0d 0a 20 e WithArray {..
f540: 20 20 20 20 20 20 20 6e 61 6d 65 20 7b 41 20 42 name {A B
f550: 20 43 20 44 20 45 7d 0d 0a 20 20 20 20 20 20 20 C D E}..
f560: 20 76 61 6c 75 65 73 20 7b 41 20 42 20 43 20 44 values {A B C D
f570: 20 45 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 E}.. }....
f580: 20 20 23 20 73 74 61 72 74 20 73 65 72 76 65 72 # start server
f590: 0d 0a 20 20 20 20 6f 70 63 75 61 20 73 74 61 72 .. opcua star
f5a0: 74 20 53 0d 0a 0d 0a 20 20 20 20 23 20 65 6e 74 t S.... # ent
f5b0: 65 72 20 65 76 65 6e 74 20 6c 6f 6f 70 0d 0a 20 er event loop..
f5c0: 20 20 20 76 77 61 69 74 20 66 6f 72 65 76 65 72 vwait forever
f5d0: 0d 0a 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d ....</verbatim>.
f5e0: 0a 0a 5a 20 35 35 36 32 38 65 65 30 33 64 66 64 ..Z 55628ee03dfd
f5f0: 32 32 37 39 39 35 38 61 36 34 36 61 65 39 64 63 2279958a646ae9dc
f600: 63 61 37 66 0a ca7f.