[img:///img/JSup/draft.gif][JSup] I/O system is organizes in ''channels'' that group [IOHook|tag I/O hooks] and defines the way they are read/written. Every channel is bound to a [JSup Drivers|driver] and to a driver specific a device. Some features: * Channels can perform timed or triggered read or event unsolicited read (according to the protocol/driver capabilities). * Channel read can be [JSup graphic windows#Requested data|requested by a window]]. * Writes can be triggered and/or done on tag change. Channels are comparable with FactoryLink I/O tables. The [JSup Channel list|'''Channel list'''] can be accessed with the menu ''Tools / Edit channels'' (or ''Ctrl+H'' keys). = Channel configuration = [img:///img/JSup/iochannel_edit.png|width=350|right|margin=10|] * The '''[JSup Drivers|I/O driver]''' that the channel has to use for its communication, it cannot be changed once the channel is created. * '''Name''': an [JSup unique names|unique name] that will identify the channel. * '''Drive dependent info''': a button that open a driver specific dialog that provide configuration about the device and driver specific configuration of the channel. * '''Item prefix''': a fixed text that will be prepended to every item of the channel [IOHook|I/O hooks], this can be useful for some drivers ([JSup SNMP driver|SNMP] or [MQTT JSup driver|MQTT]) to not to have to include a fixed prefix to every [IOHook|I/O hook]. * '''Channel active condition''': can be a constant or calculated expression that enable / disable the channel at all if, for example, a channel have to be active only on a certain JSup server or if you want to disable a channel at all but you don't want to delete it. * '''Block read''': a block read requesta all [IOHook|I/O hooks] value (except for write only [IOHook|I/O hooks]) from the remote device, when the ''Block read trigger'' [JSup Math code|expression] changes to a non false (or 0) value.
The ''Block read trigger'' is normally a single [JSup tag|tag] forced to true (or 1) to perform the read.
The ''End read tag'', if specified, is a [JSup tag|tag] that will be forced to true if all the [IOHook|I/O hooks] have been read successfully, or forced to false if the block read is not successful (even if [IOHook|I/O hooks] are partially read: some read and some not). This tag will receive also the status of a ''Continuous read'' completion. * '''Continuous read''': a timed basis read that can be enabled with a constant or variable expression (''Read enable condition'') and repeated at a given millisecond rate (''Update time'': constant or an [JSup Math code|expression]). Some [JSup Drivers|driver] enable the possibility to read only active items, the [IOHook|I/O hooks] of listened tags (the ones those are displayed in active [JSup Window property dialog|window]). Active [JSup Window property dialog|windows] can specify the read of one (or more) channels and the requested rate: the shorted rate will be used. * '''Block write''': all the [IOHook|I/O hooks] of the channel (except the read only ones) can be written at once when the ''Block write trigger'' [JSup Math code|expression] (normally a single boolean tag) changes to a true (or non zero) value.
The ''End write tag'', if specified, will be forced to true if all the [IOHook|I/O hook] values have been written successfully, or to a false value in case of some write failure. * '''Write on change''' can be enabled to perform single write for every [IOHook|I/O hook] whose tag change value (or whose value is forced). The ''Write on change disable'' can be configured with an [JSup Math code|expression] (normally a single [JSup tag|tag]) that when non false disable the write on tag changes. This can be useful if a massive tag change is expected and you what to write all tag at once with a ''Block write''. * '''Poor quality to tag filter''': is the time after a bad [IOHook|I/O hook] value read after which the tag will be set in a poor [JSup tag quality|quality] status. * '''Alarm only''': a flag for [JSup Importing tags from Schneider Unity|Unity] import feature only. * '''Auto I/O hook JavaCode fun.''': see [JavaCode function provided IOHooks].