technical manual - kardex: · pdf filejmif class abstractbufferedstreamchannel public abstract...

85
JMIF Technical Manual (c) 2003-2018 KARDEX Software GmbH created by PDFDoclet

Upload: vokhanh

Post on 13-Mar-2018

316 views

Category:

Documents


13 download

TRANSCRIPT

Page 1: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

JMIF

Technical Manual

(c) 2003-2018 KARDEX Software GmbH

created by PDFDoclet

Page 2: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass AbstractBufferedChannel

public abstract class AbstractBufferedChannelextends AbstractChannel

All Implemented Interfaces:Channel

Direct Known Subclasses:AbstractBufferedStreamChannel, FileChannel, HttpClientChannel, ISeriesMqChannel, JdbcChannel,MqsChannel, OpcChannel, OpenScadaChannel, UdpChannel

ParametersmaxBufferSize (numeric, default: 100)maximal size of buffer, -1 = unlimited, if buffer is full, channels will discard new messages

Page 2 of 85

jmif.AbstractBufferedChannel

Page 3: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass AbstractBufferedStreamChannel

public abstract class AbstractBufferedStreamChannelextends AbstractBufferedChannel

The framing mode is automatically chosen based on given configuration setting.

All Implemented Interfaces:Channel

Direct Known Subclasses:JcaChannel, RxTxChannel, TcpChannel

ParametersmaxInternalBufferSize (numeric, default: 2048)maximum internal buffer site in kByte

decayTime (numeric, default: 0)decay time on no read, i.e. max. delay between fragments before discarding received data

EOM (char, default: undefined)the ASCII number of the end of message character

ESC (char, default: undefined)the Escape character, escapes the End Of Message character

eomTag (string, default: undefined)the characters that indicates the end of message for messages of dynamic length

blockLen (numeric, default: 0)the length of a telegram if fixed length is used or the header length if msgPattern is used to detect the message length fieldand fragment size is greater then 0

fragmentSize (numeric, default: 0)if greater then 0 then msgPattern defines the number of expected fragments having defined size

msgPattern (string, default: undefined)the pattern a message has to match. Non-greedy quantors recommended

msgTypeFieldSpec (string, default: undefined)specification of message's type field

countFieldsIncluded (boolean, default: true)should count fields added to header's and/or payload's length or not

MESSAGE_TYPE.msgHeaderLen (numeric, default: undefined)fixed header length

MESSAGE_TYPE.msgHeaderLenFieldSpec (string, default: undefined)specification of message's header length field

MESSAGE_TYPE.msgBodyLen (numeric, default: undefined)fixed body length

MESSAGE_TYPE.msgBodyLenFieldSpec (string, default: undefined)specification of message's body length field

See Also:

Page 3 of 85

jmif.AbstractBufferedStreamChannel

Page 4: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

BinFieldSpec

Example

jmif.TCPS.countFieldsIncluded=false

jmif.TCPS.msgTypeFieldSpec=2N2

jmif.TCPS.11.msgHeaderLenFieldSpec=0N2

jmif.TCPS.11.msgBodyLenFieldSpec=16N2

jmif.TCPS.18.msgHeaderLenFieldSpec=0N2

Page 4 of 85

jmif.AbstractBufferedStreamChannel

Page 5: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass AbstractChannel

public abstract class AbstractChannelextends Observable

Direct Known Subclasses:Simulation, AbstractBufferedChannel, TcpServerChannel

ParameterscharSet (encoding name, default: system's file encoding)the encoding of data to process, i.e. ISO-8859-1 (Latin-1), US-ASCII (ANSI), UTF-8 (8-bit code units)

logMode (numeric, default: 0)logging mode for processed data (0 = make control characters readable, 1 = plain text, 2 = hex view, 3 = short hex view)

logFormatter (replace expression, default: undefined)used to make plain text more human readable e.g. on missing separators

Page 5 of 85

jmif.AbstractChannel

Page 6: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass AbstractDispatcher

public abstract class AbstractDispatcherextends Observable

Direct Known Subclasses:ViastoreDispatcher, RlpDispatcher, RegExDispatcher, LsplusDispatcher, LoopDispatcher, KnappDispatcher,ImtradexDispatcher, DirectStoreDispatcher, CellDispatcher, CellDispatcher, AberleDispatcher, AliveDispatcher

ParametersqueueImplementation (text, default: LinkedList)class name of a well known queue implementation

maxActiveDestinations (numeric, default: 0)limitation of in parallel active destinations (0 = unlimited)

forceSortedDestination (boolean, default: false)re-initialize destination map - but synchronized!

maxQueueSize (numeric, default: 0)limitation of queue size (0 = unlimited)

queueWatchInterval (numeric [msec], default: 100)queue managing interval

Page 6 of 85

jmif.AbstractDispatcher

Page 7: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass AliveDispatcher

public class AliveDispatcherextends AbstractDispatcher

The AliveDispatcher is used to send alive-telegrams to a host.

All Implemented Interfaces:Runnable, Observer

ParametersaliveTimeoutthe interval to send the alive telegrams

aliveChannelsa comma separated list of channels. There will be one telegram sent on each channel.

aliveTelegrama reference to a RegExTelegram

ackOnResponseacknowledge on response required (default: false)

responseTimeoutstop response tries after this time [sec] (default: 0 i.e. deactivated/ no retries)

Page 7 of 85

jmif.AliveDispatcher

Page 8: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass BinFieldSpec

public class BinFieldSpecextends Object

ParametersSpecification contains an optional positions value, N for numeric data type or A for an alpha numeric value and a fieldlength value. If the field length is negative the byte order will be toggled.

Example

N3, N-2, A80

Page 8 of 85

jmif.BinFieldSpec

Page 9: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass DefaultGateway

public class DefaultGatewayextends Observable

The DefaultGateway There are two gateways for each link, one machine gateway that handles the machine communication and ahost gateway to handle the host communication. Each Gateway is able to handle different channels and receive or send messages.When a Gateway receives messages the Gateway passes them to the Link which notifies the related dispatchers. When a dispatcheris going to send a message it passes the telegram to the link and informs the link about the gateway and the channel to send thetelegram.

Parameterschannelsthe channels connected to this gateway

dispatchersthe dispatchers that must be informed about new messages on the connected channels. Dispatchers which should not benotified might be written in square brackets ([...]).

persistdefines whether the gateway saves the tokens and recovers them after restart until they are finished (default: false).

reroute.DESTReroutes a message on send to the given channel (optional)

Example

jmif.hostGateway=jmif.DefaultGateway

jmif.hostGateway.channels=FILE

jmif.hostGateway.dispatchers=directstoreDispatcher

jmif.hostGateway.persist=true

jmif.machGateway=jmif.DefaultGateway

jmif.machGateway.channels=HTTP10, RLP11

jmif.machGateway.dispatchers=[directstoreDispatcher], rlpDispatcher

Page 9 of 85

jmif.DefaultGateway

Page 10: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass DefaultLink

public class DefaultLinkextends Object

The DefaultLink has two gateways and is connected to the dispatchers. All communication is handled by the Link. When amessage is received from the host the link notifies the related dispatchers and when a dispatcher sends a message the link forwardsit to the gateway. Each dispatcher can have direct links to other dispatchers (observers), which allows them to inform other dispatchers about events. The dispatchers which should be informed must be listed in the dispatchers observers list.

Parametersmachinethe machine gateway

hostthe host gateway

DISPATCHER.observersthe dispatcher list that should observe the named dispatcher. These dispatchers will receive internal messages from thegiven dispatcher.

Example

jmif.LINK=jmif.DefaultLink

jmif.LINK.machine=machGateway

jmif.LINK.host=hostGateway

jmif.LINK.DISPATCHER01.observers=DISPATCHER02, DISPATCHER03, DISPATCHER05

jmif.machGateway=jmif.DefaultGateway

jmif.machGateway.channels=CHANNEL01, CHANNEL02

jmif.machGateway.dispatchers=DISPATCHER01, DISPATCHER02, DISPATCHER03

jmif.hostGateway=jmif.DefaultGateway

jmif.hostGateway.channels=CHANNEL03, CHANNEL04

jmif.hostGateway.dispatchers=DISPATCHER04, DISPATCHER05

Page 10 of 85

jmif.DefaultLink

Page 11: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass FileChannel

public class FileChannelextends AbstractBufferedChannel

Communication using character files. This channel reads and writes files.

All Implemented Interfaces:Channel

Parametersinterval (milliseconds, default: 0=off)the read interval in msec

cronSpeccommon cron job like spec to all channels based on the Quartz job scheduling system. Read messages at defined date ortime. Could be used in parallel with specific or common interval specs (default: null)

maxBufferSize (number, default: 100)the maximum message buffer size. Common to all buffered channels. If maximum size is reached, messages will bediscarded. A value of -1 disables the limit

path (path)the root path to the communication files

down (text, default: down)the folder for files sent to the JMIF relative to root (path)

up (text, default: up)the folder for files written by the JMIF relative to root. Could be modfied by message data like respHeaderIdTemplate

workFileTemplate (text, default: .%f)defines a template used to create temporary work files. %f has to be used as file name place holder. Samples: %f.tmp, ~%f

backup (path)a root folder for backups. It must contain the subfolders up and down. If not existing backup is disabled.

backupAge (hours, default: 24)backup files will be removed if older than this age and more than backupMaxFileCount files exists. Unit is hours. A valueless or equal to zero disables backup folder's maintenance. The check is done hourly.

backupMaxFileCount (number of files, default: 128)if this number of outdated files is reached folder maintenance will take place.

cleanUpOut (boolean, default: false)check not only the backup folder but also the up alias out folder. Warning: if this folder is not processed by the othercommunication partner within the backupAge time, data may be lost

fileFilter (regular expression, default: empty string = off)JMIF reads only files that match to that expression

recursive (boolean, default: false)apply filter recursively

readDelay (milliseconds, default: 0)delay between access to file and reading file. Purpose: use of virus scanners or SMB shares

Page 11 of 85

jmif.FileChannel

Page 12: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

readLimiter (number, default: 2147483647)read only given number of file per interval

multiOrder (boolean, default: true)order position ends with newline otherwise whole file content is considered as one request

hasHeader (boolean, default: false)is the first line in the file a ignorable header line

startLine (line number, default: 0 / 1 if hasHeader=true)the first line to read, 0-based

commentSign (character, default: #)the character that starts a comment line

removeSpecialChars (boolean, default: false)removes all special characters from message to get ASCII-7 without control characters

lineSeparator (character sequence, default: (CR)(LF))separator written to the end of an outgoing message

upFileDateFormat (date format, default: yyyyMMddHHmmssSSS)the date format used in the file names

upFilePrefix (text)a prefix for the files sent to the host. If unspecified file name will be made unique

upFileSuffix (text)the suffix for the files sent to the host. If unspecified file name will be made unique

upFileExtension (text, default: .jmif)the extension for files sent to the host

triggerFilePath (file name)read files only if trigger file exists

append (boolean, default: false)append to existing files? Creates a new file for each message if set to false. In case of read existing working file with samename will be deleted

sendEofMessage (boolean, default: false)create an internal end of file message required by special workflow modes

singleFileMode (boolean, default: false)read only one file

retries (number of retries, default: 3)count of retries in case of error on write

Example

Page 12 of 85

jmif.FileChannel

Page 13: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

# simple file channel FILE

jmif.FILE=jmif.FileChannel

jmif.FILE.maxBufferSize=-1

jmif.FILE.path=c:/JMIF/transfer

jmif.FILE.down=out

jmif.FILE.up=in

jmif.FILE.backup=hist

jmif.FILE.fileFilter=.*

jmif.FILE.interval=3000

jmif.FILE.multiOrder=true

jmif.FILE.hasHeader=false

# enhanced file channel FILE01

jmif.FILE01=jmif.FileChannel

jmif.FILE01.maxBufferSize=-1

jmif.FILE01.path=c:/JMIF/transfe

jmif.FILE01.down=out

jmif.FILE01.up=in

jmif.FILE01.backup=hist

jmif.FILE01.fileFilter=(jm.*)

jmif.FILE01.upFileDateFormat=yyyyMMddHHmmssSSS

jmif.FILE01.upFileDateFormat=

jmif.FILE01.upFilePrefix=

jmif.FILE01.upFileSuffix=

jmif.FILE01.upFileExtension=

jmif.FILE01.interval=1000

jmif.FILE01.multiOrder=true

jmif.FILE01.hasHeader=false

jmif.directstoreDispatcher.respHeaderIdTemplate=jm@@hostId@@

Page 13 of 85

jmif.FileChannel

Page 14: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass FinsTcpChannel

public class FinsTcpChannelextends TcpChannel

The FinsChannel establishes a connection to an OMRON PLC using the FINS protocol over TCP. Works as FINS client only.

All Implemented Interfaces:Channel

ParametersclientNodethe number of the client node, will be set by the server if "0". (default: 0)

hostAddressthe host name or IP address of the plc

hostPortthe port number of the plc

maxBufferSizethe maximum buffer size.

listenerthis channel works in client mode only, listener must be set to false!

timeoutthe channel waits this time (milliseconds) for a response

readAreaCodethe memory code where the messages are stored (default: DM)

readMemStartthe first memory address to read

readLengththe length of the memory area

writeAreaCodethe memory code where the messages are written (default: DM)

writeMemStartthe first memory address to write

writeLengththe length of the memory area

Example

Page 14 of 85

jmif.FinsTcpChannel

Page 15: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.FINS01=jmif.FinsTcpChannel

jmif.FINS01.maxBufferSize=100

jmif.FINS01.timeout=6000

jmif.FINS01.listener=false

jmif.FINS01.hostAddress=192.168.200.1

jmif.FINS01.hostPort=9600

jmif.FINS01.readAreaCode=DM

jmif.FINS01.readMemStart=2000

jmif.FINS01.readLen=8

jmif.FINS01.writeAreaCode=DM

jmif.FINS01.writeMemStart=3000

jmif.FINS01.writeLen=8

Page 15 of 85

jmif.FinsTcpChannel

Page 16: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass G3Link

public class G3Linkextends Object

The G3Link has three gateways and is connected to the dispatchers. All communication is handled by the Link. When a message isreceived from the host the link notifies the related dispatchers and when a dispatcher sends a message the link forwards it to thegateway. Each dispatcher can have short links to other dispatchers (observers), which allows them to inform other dispatchers about events. The dispatchers which should be informed must be listed in the dispatchers observers list.

Parametersmachinethe machine gateway

hostthe host gateway

internalthe internal gateway

DISPATCHER.observersthe dispatcher list that should observe the named dispatcher. These dispatchers will receive internal messages from thegiven dispatcher.

Example

jmif.LINK=jmif.G3Link

jmif.LINK.machine=MachineGateway

jmif.LINK.host=HostGateway

jmif.LINK.internal=internalGateway

jmif.LINK.DISPATCHER01.observers=DISPATCHER02

jmif.LINK.DISPATCHER02.observers=DISPATCHER01, DISPATCHER03

jmif.LINK.DISPATCHER03.observers=DISPATCHER01

jmif.MachineGateway=jmif.DefaultGateway

jmif.MachineGateway.channels=CHANNEL01, CHANNEL02

jmif.MachineGateway.dispatchers=DISPATCHER01

jmif.HostGateway=jmif.DefaultGateway

jmif.HostGateway.channels=CHANNEL03, CHANNEL04

jmif.HostGateway.dispatchers=DISPATCHER02, DISPATCHER03

jmif.internalGateway=jmif.DefaultGateway

jmif.internalGateway.dispatchers=DISPATCHER01

Page 16 of 85

jmif.G3Link

Page 17: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 17 of 85

jmif.G3Link

Page 18: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass HRegExTelegram

public class HRegExTelegramextends AbstractTelegram

This telegram splits a received message into defined fields based on a regular expression. It uses the special field "type" in thetelegramm to select the proper subtelegram. The only field that must be set in the basic regular expression is the type. Thetelegramm then selects the corresponding pattern and uses the properties of the subtelegramm to split the message. Anycombination of header and data fields is possible, i.e. the telegram header can be read using the base pattern while the data fieldsare read using the subtelegram pattern corresponding to the type.

All Implemented Interfaces:Telegram

Parameterspatternthis must be a proper regular expression. It is used to split the message and assign the values to the variables. The regularexpression must use groups that can be assigned to the variables.

replaceTemplatethis template is used to create a message out of the variables. This can be a regular expression or a template string thatcontains the variable names wrapped in @@ (i.e. @@addr@@). All variables can be used including those declared in theinfoFieldNames property.

infoFieldNamesa list of variables to hold additional information. These variables can be shown on the machines display or used in aresponse telegram. For a list of standard variables refer to the index.XXX property.

index.XXXassigns a group to a variable (XXX must is a variable name). You can use any of these predefined variables: type (the telegram type), addr (the machine address), carrier, carrierNext, level, pos (Position), depth, hostID, confirmFlag,order, orderType, orderPos, part, quant (Quantity), description, code (a transaction type), ret (the return code), retDesc(return description), dateTime (a timestamp) Other variables can be declared in the infoFieldNames property.

pattern.XXXassigns a format pattern for the specified variable (XXX)

language.XXXassigns a language code to the variable XXX. Language and country are combined to the locale that is used i.e. to formatnumbers or dates.

country.XXXassigns a country code to the variable XXX. Language and country are combined to the locale that is used i.e. to formatnumbers or dates.

XXXMap.YYYmaps the value (YYY) of the variable (XXX) to a different value. The original value can be used with the prefix "plain"(plainXXX) for response telegrams. Addresses can be cascaded. I.e. first map the address, then use the mapped address andmap the carrier. The mapping can be placed to either in the basic telegramm or directly in the sub telegram where globalmappings (in the base telegram) override local mappings. To use this feature a pattern must be given for the mapped valuethat defines the content. The following values can be mapped: addr, carrier, carrierNext, pos, pos2, depth, depth2

Example

Page 18 of 85

jmif.HRegExTelegram

Page 19: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

# the basic declaration

jmif.genericStartTelegram.pattern=.{8}(.{3})(\d{3})-(\d{2}).*

jmif.genericStartTelegram.index.type=1

jmif.genericStartTelegram.index.addr=2

jmif.genericStartTelegram.index.carrier=3

# the properties for telegram type 41

jmif.genericStartTelegram.41.pattern=.{16}(\d{3})(.{20}).*

jmif.genericStartTelegram.41.index.quant=1

jmif.genericStartTelegram.41.index.description=2

# the properties for telegram type 23

jmif.genericStartTelegram.23.pattern=.{16}(.{20}).*

jmif.genericStartTelegram.23.infoFieldNames=serial

jmif.genericStartTelegram.23.index.serial=1

Page 19 of 85

jmif.HRegExTelegram

Page 20: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass HttpClientChannel

public class HttpClientChannelextends AbstractBufferedChannel

Send and receive telegrams over HTTP client channel. The following properties define the header fields which are necessary forthe HTTP protocol.

All Implemented Interfaces:Channel

Parametersurlthe URL address where messages are sent to

usernametext

passwordtext

methodNamevalid method names are POST or GET, default: POST

contentTypetwo part identifier for type/subtype of the media type, default: text/xml

encodingcharacter encoding system of the media type, default: UTF-8

intervalidle time between two read cycles in msec, default: 6000

writeDelaythe minimum idle time between two messages in msec, default: 0

timeoutsocket and connection timeout for client in msec

retriesclient parameter, number of retries e.g. if web server is overloaded, default: 0

forceRetriesboolean, force retry for I/O errors, only used if retries is set, default: false

userAgenttext, client parameter

proxyHosttext, host parameter for host configuration

proxyPortnumber, only used is proxyHost is set, default: 0

Example

Page 20 of 85

jmif.HttpClientChannel

Page 21: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.HTTP20=jmif.HttpClientChannel

jmif.HTTP20.url=

jmif.HTTP20.username=

jmif.HTTP20.password=

jmif.HTTP20.methodName=GET

jmif.HTTP20.contentType=text/plain

jmif.HTTP20.encoding=ISO-8859-1

jmif.HTTP20.interval=0

jmif.HTTP20.writeDelay=0

jmif.HTTP20.timeout=1500

jmif.HTTP20.retries=2

Page 21 of 85

jmif.HttpClientChannel

Page 22: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass ISeriesMqChannel

public class ISeriesMqChannelextends AbstractBufferedChannel

This I-Series Message Queue channel reads or writes Messages to Queues on a I-Series server

All Implemented Interfaces:Channel

Parametersserverthe IP-address of the I-Series server

userthe username

passwdpassword

qsysLibSystem library on the AS/400 where the queue is located

inQueuethe queue to receive messages

outQueuethe queue to send messages

readIntervalmessages in the inQueue are read in that interval, messages are written directly to the outQueue

requestTimeoutthe channel waits this time (milliseconds) for a response

Page 22 of 85

jmif.ISeriesMqChannel

Page 23: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass JcaChannel

public class JcaChannelextends AbstractBufferedStreamChannel

The channel for serial or parallel connections.

All Implemented Interfaces:Channel

Parameterstimeout (numeric, default: 0)the request timeout for this channel

writeDelay (numeric, default: 0)the minimum idle time between two messages

port (string, default: undefined)the name of the port (e.g. COMxy, LPTxy)

serBaudrate (numeric, default: 9600)the baud rate

serDatabits (string, default: 8)known values are 8, 5, 6, 7

serFlowControl (string, default: NONE)known values are NONE, RTSCTS_IN, RTSCTS_OUT, XONXOFF_IN, XONXOFF_OUT

serParity (string, default: NONE)known values are NONE, EVEN, MARK, ODD, MARK, SPACE

serStopbits (string, default: 1)known values are 1, 1_5, 2

lptMode (numeric, default: 0)parallel mode (ANY = 0, SPP = 1, PS2 = 2, EPP = 3, ECP = 4, NIBBLE = 5)

Example

jmif.KX=jmif.JcaChannel

jmif.KX.port=COM2

jmif.KX.timeout=2000

jmif.KX.writeDelay=100

jmif.KX.serBaudrate=9600

jmif.KX.serParity=NONE

jmif.KX.serStopBits=1

Page 23 of 85

jmif.JcaChannel

Page 24: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 24 of 85

jmif.JcaChannel

Page 25: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass JdbcChannel

public class JdbcChannelextends AbstractBufferedChannel

Host communication via JDBC-ODBC data base connection. Query, insert, update and delete data from host data table.

All Implemented Interfaces:Channel

Parametersdriver (text, default: "sun.jdbc.odbc.JdbcOdbcDriver")platform independent type 4 drivers (native protocol drivers) are suggested

url (text, default: undefined)database type and connect string; typical properties for SQL server are Server name and database name; SQL ServerAuthentification is recommended; typical properties for Oracle DB are drivertype, Server name, portNumber and SID; askDBMS administrator for details

user (text, default: undefined)user

password (text, default: undefined)password

separator (text, default: ";")field separator

intervalSpec (integer, default: 0)interval trigger in msec

multiLine (boolean, default: false)single line or block modus

dateFormat (date format, default: yyyyMMddHHmmssSSS)the date format used in the table field

removeSpecialChars (boolean, default: false)

forceParameterMetaDataUsage (boolean, default: false)

forceConnResetOnPreparedStmtErr (boolean, default: false)

retries (integer, default: 3)number of tries when writing to database failed

connectStmt (text, default: undefined)initial SQL command after DB connect for resetting all read committed orders to initial state

readStmt (text, default: undefined)SQL command for reading data from HOST table, must correspond with startTelegram

requestStmt (text, default: undefined)ditto for CeuDispatcher

Page 25 of 85

jmif.JdbcChannel

Page 26: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

requestStmt.indices (integer list)ditto for CeuDispatcher

readCommitStmt (text, default: undefined)SQL command to differ between data read by JMIF and initial data from HOST

readCommitStmt.indices (integer list)comma separated list of indices according to fields of readStmt or startTelegram

writeStmt (text, default: undefined)SQL command for writing data to HOST table after arrival / confirmation, must correspond with respTelegram

writeStmt.indices (integer list)comma separated list of indices according to fields of writeStmt or respTelegram

Example

Page 26 of 85

jmif.JdbcChannel

Page 27: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.JDBC=jmif.JdbcChannel

jmif.JDBC.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

jmif.JDBC.url=jdbc:sqlserver://localhost;databaseName=JMIF

jmif.JDBC.user=jmif

jmif.JDBC.password=jmif

jmif.JDBC.separator=;

jmif.JDBC.intervalSpec=10000

jmif.JDBC.removeSpecialChars=true

jmif.JDBC.multiLine=false

jmif.JDBC.connectStmt=\

UPDATE [Telegrams] \

SET [Status] = 0 \

WHERE [Status] = 1

jmif.JDBC.readStmt=\

SELECT [HostId],

,[Address] \

,[Carrier] \

,[Pos] \

,[Depth] \

,[Quant] \

,[OrderName] \

,[PartName] \

,[Description] \

FROM [Telegrams] \

WHERE [Status] = 0

jmif.JDBC.readCommitStmt.indices=1

jmif.JDBC.readCommitStmt=\

UPDATE [Telegrams] \

SET [Status] = 1 \

WHERE [HostId] = ?

jmif.JDBC.writeStmt.indices=2,1

jmif.JDBC.writeStmt=\

UPDATE [Telegrams] \

SET [Status] = 2, [Code] = ? \

WHERE [HostId] = ?

Page 27 of 85

jmif.JdbcChannel

Page 28: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass JMIF

public class JMIFextends Object

The JMIF root class offers some basic properties about i.e. default gateways, locking etc.

ParametersappLock (boolean, default: true)checks if another JMIF instance is already active

appLockPort (number, default: 52525)port number of server socket used for locking If a second JMIF instance for a second system has to start in the same environment as the first one, the second one needsits own port number.

linkslist of the named host links which are used by DefaultLink, mandatory

Example

jmif.appLock=true

jmif.links=jmif.HOSTLINK

# HOSTLINK

jmif.HOSTLINK=jmif.DefaultLink

jmif.HOSTLINK.host=hostGateway

jmif.HOSTLINK.machine=machGateway

Page 28 of 85

jmif.JMIF

Page 29: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass License

public class Licenseextends Object

The licensing module checks if the license code is valid for the order number and the number of access openings. The mandatoryfields are checked. If the check fails the number of machines channels will be set to 0.

Parameterslicenseecustomer name, mandatory

orderKARDEX order number, mandatory

licensedMachineChannelsnumber of access openings

code(list of) individual license code(s) which you get by Kardex Software GmbH. The license code is calculated using the actual CodeID from jmif.log.

optionslist of additional options

option.expirationDateexpiry date for trial license in the format yyyyMMdd

option.brandingC3000 branding

Example

jmif.license.licensee=Customer name

jmif.license.order=123456789

jmif.license.licensedMachineChannels=4

jmif.license.code=

jmif.license.options=expirationDate

jmif.license.option.expirationDate=20151231

Page 29 of 85

jmif.License

Page 30: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass MqsChannel

public class MqsChannelextends AbstractBufferedChannel

This MQSeries Channel reads and writes messages to message queues

All Implemented Interfaces:Channel

Parametershostnamename of the host

channelchannel name

portport

queueManagername of the queue manager

inQueuename of the queue JMIF receives messages

outQueuename of the queue JMIF sends messages

inQueueCcsidsid of the inQueue (Default: 1208)

outQueueCcsidsid of the outQueue (Default: 1208)

readIntervalthe JMIF reads messages from the inQueue in that interval (milliseconds, Default: 500)

readFullytrue=read all messages, false=read one message (Default: true)

requestTimeoutthe JMIF waits this time for a response (milliseconds, Default: 2000)

waitInterval(Default: 300)

lineSeparatorthe separator that marks a new line (Default: empty)

Page 30 of 85

jmif.MqsChannel

Page 31: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass OpcChannel

public class OpcChannelextends AbstractBufferedChannel

OPC client channel to comunicate with an OPC server.

All Implemented Interfaces:Channel

ParametersclientHandlethe client name (default: JMIF)

hostAddressthe hostname or address (default: localhost)

serverNamethe instance name of the OPC server

separatorthe read values are provided in csv format, this is the separator (default: ;)

timeoutthe request timeout in miliseconds (default: 2000)

readGroupthe group name for data read

READGROUP.itemsthe items to read

READGROUP.ITEMthe validate value (read allowed)

writeGroupthe group to write data

WRITEGROUP.itemsthe items to write

WRITEGROUP.ITEMthe validate value (write allowed)

commitGroupthe group to commit a successful read

COMMITGROUP.itemsthe items to be commited

COMMITGROUP.ITEMthe value for the item

Example

Page 31 of 85

jmif.OpcChannel

Page 32: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.opcConnect = jmif.OpcChannel

jmif.opcConnect.clientHandle = JMIF

jmif.opcConnect.hostAddress = localhost

jmif.opcConnect.serverName = Matrikon.OPC.Simulation

jmif.opcConnect.separator = ;

jmif.opcConnect.readGroup = READ

jmif.opcConnect.READ.items = VAR01, VAR02, VAR03, READCOMMIT

jmif.opcConnect.READ.READCOMMIT = 1

jmif.opcConnect.writeGroup = WRITE

jmif.opcConnect.WRITE.items = VAR01, VAR03, VAR05, WRITECOMMIT

jmif.opcConnect.WRITE.WRITECOMMIT=0

jmif.opcConnect.commitGroup = COMMIT

jmif.opcConnect.COMMIT.items = READCOMMIT

jmif.opcConnect.COMMIT.READCOMMIT = 0

Page 32 of 85

jmif.OpcChannel

Page 33: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass OpenScadaChannel

public class OpenScadaChannelextends AbstractBufferedChannel

OpenScada client channel to communicate with an OPC DA server. Use a local administrator's account or create a new useraccount (users) and add it to the Distributed COM Users group. Furthermore grant that user full control toHKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{progId}. Adjust logging output vialog4j.logger.org.jinterop=debug

All Implemented Interfaces:Channel

ParametersclientHandlethe client name (default: JMIF)

hostAddressthe hostname or address (default: localhost)

serverNamethe instance name of the OPC server

separatorthe read values are provided in csv format, this is the separator (default: ;)

timeoutthe request timeout in milliseconds (default: 2000)

readGroupthe group name for data read

READGROUP.itemsthe items to read

READGROUP.ITEMthe validate value (read allowed)

writeGroupthe group to write data

WRITEGROUP.itemsthe items to write

WRITEGROUP.ITEMthe validate value (write allowed)

commitGroupthe group to commit a successful read

COMMITGROUP.itemsthe items to be committed

COMMITGROUP.ITEMthe value for the item

Example

Page 33 of 85

jmif.OpenScadaChannel

Page 34: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.opcConnect = jmif.OpenScadaChannel

jmif.opcConnect.clientHandle = JMIF

jmif.opcConnect.hostAddress = localhost

jmif.opcConnect.serverName = Matrikon.OPC.Simulation

jmif.opcConnect.separator = ;

jmif.opcConnect.readGroup = READ

jmif.opcConnect.READ.items = VAR01, VAR02, VAR03, READCOMMIT

jmif.opcConnect.READ.READCOMMIT = 1

jmif.opcConnect.writeGroup = WRITE

jmif.opcConnect.WRITE.items = VAR01, VAR03, VAR05, WRITECOMMIT

jmif.opcConnect.WRITE.WRITECOMMIT=0

jmif.opcConnect.commitGroup = COMMIT

jmif.opcConnect.COMMIT.items = READCOMMIT

jmif.opcConnect.COMMIT.READCOMMIT = 0

Page 34 of 85

jmif.OpenScadaChannel

Page 35: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass RegExTelegram

public class RegExTelegramextends AbstractTelegram

This telegram splits a received message into defined fields based on a regular expression.

All Implemented Interfaces:Telegram

Parameterspattern (regular expression)this must be a proper regular expression. It is used to split the message and assign the values to the variables. The regularexpression must use groups that can be assigned to the variables.

replaceTemplate (text)this template is used to create a message out of the variables. This can be a regular expression or a template string thatcontains the variable names wrapped in @@ (i.e. @@addr@@). All variables can be used including those declared in theinfoFieldNames property.

escapeFormat (text)defines a well known format for which field values have to be escaped/ unescaped. Actually CSV and XML is supported.

telegramSpecTemplate (text)can be used to define a telegram spec based on request's data. Syntax equals to replaceTemplate.

infoFieldNames (list of variable names)a list of variables to hold additional information. These variables can be shown on the machines display or used in aresponse telegram. For a list of standard variables refer to the index.XXX property.

index.varName (group number)assigns a group to a variable (XXX must is a variable name). You can use any of these well known variables (checkmanual for more informations about the fields): seqNo, addr, sAddr, carrier, carrierNext, level, pos, pos2, depth, depth2, hostId, confirmFlag, order, orderType, orderPos,part, quant, desc, code, ret, retDesc and dateTime. Other variables can be declared in the infoFieldNames property.

pattern.varName (text)assigns a format pattern for the specified variable (XXX) or defines a key resolve template on mapped values

language.varName (text)assigns a language code to the variable XXX. Language and country are combined to the locale that is used i.e. to formatnumbers or dates.

country.varName (text)assigns a country code to the variable XXX. Language and country are combined to the locale that is used i.e. to formatnumbers or dates.

allowNaN.varName (boolean, default: false)allow Not a Number or empty field

defaultValue.varName (text)default value if the value is not defined

varNameMap.value (text)maps the value of the variable to a different value. The original value can be used with the prefix "plain" (plainVarName)for response telegrams. Addresses can be cascaded. I.e. first map the address, then use the mapped address and map thecarrier. To use this feature a pattern must be given for the mapped value that defines the content. The following values canbe mapped: addr, carrier, carrierNext, pos, pos2, depth, depth2

Page 35 of 85

jmif.RegExTelegram

Page 36: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Example

jmif.genericStartTelegram.pattern=(.+);(.+);(.{3})(\d{3})-(\d{2})(?:.*);(\d+)(?:;(.+))?

jmif.genericStartTelegram.replaceTemplate=@@order@@;@@part@@;@@addr@@;@@carrier@@;@@pos@

@

jmif.genericStartTelegram.index.order=1

jmif.genericStartTelegram.index.part=2

jmif.genericStartTelegram.index.addr=3

jmif.genericStartTelegram.index.carrier=4

jmif.genericStartTelegram.index.pos=5

jmif.genericStartTelegram.index.quant=6

jmif.genericStartTelegram.pattern.quant=#######,###

jmif.genericStartTelegram.language.quant=DE

jmif.genericStartTelegram.country.quant=de

jmif.genericStartTelegram.allowNaN.pos=false

jmif.genericStartTelegram.allowNaN.depth=false

# mapping:

jmif.genericStartTelegram.pattern.plainAddr=@@plainAddr@@

jmif.genericStartTelegram.addrMap.0PC=1

jmif.genericStartTelegram.addrMap.1PC=2

jmif.genericStartTelegram.addrMap.2PC=3

jmif.genericStartTelegram.addrMap.3PC=4

jmif.genericStartTelegram.addrMap.4PC=5

jmif.genericStartTelegram.addrMap.5PC=6

jmif.genericStartTelegram.addrMap.6PC=7

jmif.genericStartTelegram.addrMap.7PC=8

jmif.genericStartTelegram.addrMap.8PC=9

jmif.genericStartTelegram.addrMap.9PC=10

Page 36 of 85

jmif.RegExTelegram

Page 37: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

# cascaded mapping:

jmif.genericStartTelegram.pattern.plainAddr=@@plainAddr@@

jmif.genericStartTelegram.addrMap.0PC=1

jmif.genericStartTelegram.pattern.plainCarrier=@@plainAddr@@.@@plainCarrier@@

jmif.genericStartTelegram.carrierMap.0PC.C01=1

jmif.genericStartTelegram.carrierMap.0PC.C02=2

jmif.genericStartTelegram.pattern.plainPos=@@plainAddr@@.@@plainCarrier@@.@@plainPos@@

jmif.genericStartTelegram.posMap.0PC.C01.P001=1

jmif.genericStartTelegram.posMap.0PC.C01.P002=2

jmif.genericStartTelegram.posMap.0PC.C02.P001=1

jmif.genericStartTelegram.posMap.0PC.C02.P002=2

Page 37 of 85

jmif.RegExTelegram

Page 38: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass RxTxChannel

public class RxTxChannelextends AbstractBufferedStreamChannel

The channel for serial or parallel connections.

All Implemented Interfaces:Channel

Parameterstimeout (numeric, default: 0)the request timeout for this channel

writeDelay (numeric, default: 0)the minimum idle time between two messages

port (string, default: undefined)the name of the port (e.g. COMxy, LPTxy)

serBaudrate (numeric, default: 9600)the baud rate

serDatabits (string, default: 8)known values are 8, 5, 6, 7

serFlowControl (string, default: NONE)known values are NONE, RTSCTS_IN, RTSCTS_OUT, XONXOFF_IN, XONXOFF_OUT

serParity (string, default: NONE)known values are NONE, EVEN, MARK, ODD, MARK, SPACE

serStopbits (string, default: 1)known values are 1, 1_5, 2

lptMode (numeric, default: 0)parallel mode (ANY = 0, SPP = 1, PS2 = 2, EPP = 3, ECP = 4, NIBBLE = 5)

Example

jmif.KX=jmif.RxTxChannel

jmif.KX.port=/dev/ttyUSB0

jmif.KX.timeout=2000

jmif.KX.writeDelay=100

jmif.KX.serBaudrate=9600

jmif.KX.serParity=NONE

jmif.KX.serStopBits=1

Page 38 of 85

jmif.RxTxChannel

Page 39: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 39 of 85

jmif.RxTxChannel

Page 40: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass TcpChannel

public class TcpChannelextends AbstractBufferedStreamChannel

The TCP communication. Send and receive telegrams over TCP/IP. The TCP protocol is connection oriented. The data is receivedin the same order than sent. The TCP channel can be used either as client or as server. However, if this channel is used as serveronly one client connection is allowed, all other attempts to connect to the JMIF will be refused. Usually this channel is forcommunication with hosts where the messages can be sent from both partners.

All Implemented Interfaces:Channel

Direct Known Subclasses:FinsTcpChannel

ParametershostAddress (string, default: undefined)the host name or IP address

hostPort (numeric, default: 3000)the port number of the host

localAddress (string, default: undefined)the local address the socket is bound to (undefined = all/any)

port (numeric, default: 3000)the local port number

listener (boolean, default: false)are we client (false) or server (true)?

timeout (milliseconds, default: 30000)the channel waits this time for a response

watchDog (boolean, default: false)the watchDog observes the channel and closes the connection if no telegram was sent or received for this period (timeout'svalue)

recvBufferSize (numeric, default: 1024)size of read buffer in bytes

recvDelayTime (milliseconds, default: 10)time to pause between two read buffer operations

sndTimeout (milliseconds, default: 0)write timeout, 0 disables timeout check

writeDelay (milliseconds, default: 0)minimum time between write operations on channel

Example

Page 40 of 85

jmif.TcpChannel

Page 41: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.TCP01=jmif.TcpChannel

jmif.TCP01.listener=true

jmif.TCP01.port=52023

jmif.TCP01.eomTag=(ETX)

jmif.TCP01.watchDog=true

jmif.TCP01.timeout=60000

# all control characters except of STX (e.g. using T3 on a TCP tunnel)

jmif.TCP01.msgPattern=.*?[\\x00-\\x01\\0x03-\\x1F]

Page 41 of 85

jmif.TcpChannel

Page 42: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass TcpServerChannel

public class TcpServerChannelextends AbstractChannel

The TCP communication. Send and receive telegrams over TCP/IP. The TCP protocol is connection oriented. The data is receivedin the same order than sent.

All Implemented Interfaces:Channel

Parametersaddressthe local address the socket is bound to (default: undefined i.e. all/any)

portthe server's port number

maxConnectionsmaximum allowed parallel client connections (default: 0 means unlimited)

acceptallowed addresses, wildcards possible (default: all, only if deny filter is empty)

denydenied addressed, , wildcards possible (default: none, only if accept filter is empty)

eomTagthe characters that indicates the end of message for messages of dynamic length

blockLenthe length of a telegram if fixed length is used or the header length if msgPattern is used to detect the message length fieldand fragment size is greater then 0 (default: 0)

msgPatternthe pattern a message has to match. Non-greedy quantors recommended (default: undefined)

timeoutthe channel waits this time (milliseconds) for a response

watchDogthe watchDog observes the channel and closes the connection if no telegram was sent or received for this period.

recvBufferSizesize of read buffer in bytes (default: 1024)

recvDelayTimetime to pause between two read buffer operations (default: 10)

sndTimeoutwrite timeout, 0 disables timeout check (default: 0)

sendEofMessageinternal notify on connection closed while read (default: false)

Example

Page 42 of 85

jmif.TcpServerChannel

Page 43: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.TCPS01=jmif.TcpServerChannel

jmif.TCPS01.port=4711

jmif.TCPS01.eomTag=(CR)(LF)

jmif.TCPS01.watchDog=true

jmif.TCPS01.timeout=60000

jmif.TCPS01.maxConnections=0

jmif.TCPS01.sendEofMessage=false

jmif.TCPS01.accept=127.0.0.1

jmif.TCPS01.deny=192.168.*.*

Page 43 of 85

jmif.TcpServerChannel

Page 44: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmifClass UdpChannel

public class UdpChannelextends AbstractBufferedChannel

Send and receive telegrams over UDP/IP. While the TCP/IP protocol is connection oriented and holds the connection until it isclosed a UDP connection is only established while data is sent. It is unreliable and the order of the received messages is notnecessarily the same of the sender but it is fast. Usually this channel is used to communicate to machines. Since there is nopermanent connection one UDP channel can be used for concurrent connections.

All Implemented Interfaces:Channel

ParametersmaxBufferSizethe maximum message buffer size. Common to all buffered channels. If maximum size is reached, messages will bediscarded. A value of -1 disables the limit (default: 100)

portthe local port where the channel listens for messages (< 0: any available, default: 2003)

addressthe local address to which the socket should be bound (default: undefined, i.e. determined by OS kernel)

hostAddressthe IP address where messages are sent to

hostPortthe port of the host system

listenerif listener is true this channel acts as server, if false it is a client

timeoutthe channel waits this time (milliseconds) for a response

blockLenthe length of the messages if fixed length is used

eomTagthe end of message character or characters if the message length is dynamic

msgPatternpattern as regular expression which a message has to match

writeDelaythe minimum idle time between two messages in msec (default: 0)

Example

Page 44 of 85

jmif.UdpChannel

Page 45: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.UDP01=jmif.UdpChannel

jmif.UDP01.maxBufferSize=100

jmif.UDP01.port=2101

jmif.UDP01.timeout=10000

jmif.UDP01.listener=false

jmif.UDP01.hostAddress=192.168.118.66

jmif.UDP01.hostPort=2003

jmif.UDP01.msgPattern=.*?[\\x00-\\x01\\x03-\\x1F]

jmif.UDP01.writeDelay=50

Page 45 of 85

jmif.UdpChannel

Page 46: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.aberleClass AberleDispatcher

public class AberleDispatcherextends AbstractDispatcher

The AberleDispatcher uses a HRegEx-telegram as command. A regular expression is used to split the host telegram and the valuesare assigned to standard field names.

All Implemented Interfaces:Runnable, Observer

ParametersstartTelegramthe HRegEx-telegram used to process a start telegram

respTelegramthe HRegEx-telegram used to generate a response telegram

startDelaythe dispatcher waits this time (milliseconds) until it starts a request

pollIntervalthe dispatcher polls for status changes in this interval

pollTimeoutit stops polling after this time and stops the request

delay???

ignoreDriveResp

retriesthe dispatcher retries the command this time until it throws an error (default: 1)

responseactivate the response to the host system (default: false)

responseOnEmptyOrderresponse even if the order field is empty (default: false)

responseOnEmptyCodeAndErrrespond when an error occurs but the code field is empty (default: false)

responseOnStartsend a response telegram when the request starts (default: false)

responseOnArrivalsend a response telegram when the carrier has arrived in the opening (default: false)

escPollOnErrorstop the request when an error occurs, it doesn't wait for arrival or key press then (default: false)

escPollOnArrivalstops the request when the carrier arrived in the opening. If false it waits until the user confirmed.

Page 46 of 85

jmif.dispatcher.aberle.AberleDispatcher

Page 47: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

dest.Xdefines the destination channel for address X

machType.Xdefines the machine type of address X. Currently only KX_C3K (Kardex C3000) is possible.

c3kCommand.Xdefines which C3000 command is used for address X.

Example

jmif.aberleDispatcher=jmif.dispatcher.aberle.AberleDispatcher

jmif.aberleDispatcher.startTelegram=genericTelegram

jmif.aberleDispatcher.respTelegram=genericTelegram

jmif.aberleDispatcher.startDelay=10

jmif.aberleDispatcher.pollInterval=100

jmif.aberleDispatcher.pollTimeout=300

jmif.aberleDispatcher.escPollOnArrival=true

jmif.aberleDispatcher.delay=0

jmif.aberleDispatcher.response=true

jmif.aberleDispatcher.responseOnEmptyOrder=true

jmif.aberleDispatcher.displayFormatter=displayFormatter

jmif.aberleDispatcher.escPollOnError=true

Page 47 of 85

jmif.dispatcher.aberle.AberleDispatcher

Page 48: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.cellClass CellDispatcher

public class CellDispatcherextends AbstractDispatcher

A CellDispatcher is able to manage a automated device i.e. in combination with a robot. It generates telegrams for a subsystemdispatcher that will communicate with the machines.

All Implemented Interfaces:Runnable, Observer

ParametershibernateConfigtext:hibernate.cfg.xml:the hibernate configuration file

strategytext: the strategy that will be used for this cell

subSystemDispatchertext: the dispatcher that controls the machines

subSystemTelegramtext: the telegram that is used to communicate with the subsystem dispatcher

robotTelegramtext: the telegram that is used to communicate with the robot

panelDispatchertext: the dispatcher that shows dialogues

panelChannelPatternname: a pattern that identifies the channel used by the panel dispatcher

cellSetNamename: the name of that cell

storingPeriodminutes:90: a minimum storage time for products handled in that cell

cellSetName.deviceslist of names: the device names in this cell set

cellSetName.device.trayCountnumber: the number of trays inside that device

cellSetName.device.locationsPerTraynumber: the number of locations per tray

cellSetName.device.accessOpeningNameslist of names: the names of the access openings of that device

cellSetName.device.accessOpeningName.addrnumber: the address of that access opening

cellSetName.device.accessOpeningName.robotControlledtrue/false:true: is this access opening robot controlled?

Page 48 of 85

jmif.dispatcher.cell.CellDispatcher

Page 49: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 49 of 85

jmif.dispatcher.cell.CellDispatcher

Page 50: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.cell2Class CellDispatcher

public class CellDispatcherextends AbstractDispatcher

A CellDispatcher is able to manage a automated device i.e. in combination with a robot. It generates telegrams for a subsystemdispatcher that will communicate with the machines.

All Implemented Interfaces:Runnable, Observer

ParametershibernateConfigtext:hibernate.cfg.xml:the hibernate configuration file

strategytext: the strategy that will be used for this cell

subSystemDispatchertext: the dispatcher that controls the machines

subSystemTelegramtext: the telegram that is used to communicate with the subsystem dispatcher

robotTelegramtext: the telegram that is used to communicate with the robot

panelDispatchertext: the dispatcher that shows dialogues

panelChannelPatternname: a pattern that identifies the channel used by the panel dispatcher

cellSetNamename: the name of that cell

storingPeriodminutes:90: a minimum storage time for products handled in that cell

cellSetName.deviceslist of names: the device names in this cell set

cellSetName.device.trayCountnumber: the number of trays inside that device

cellSetName.device.locationsPerTraynumber: the number of locations per tray

cellSetName.device.accessOpeningNameslist of names: the names of the access openings of that device

cellSetName.device.accessOpeningName.addrnumber : the address of that access opening

cellSetName.device.accessOpeningName.robotControlledtrue/false:true: is this access opening robot controlled?

Page 50 of 85

jmif.dispatcher.cell2.CellDispatcher

Page 51: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 51 of 85

jmif.dispatcher.cell2.CellDispatcher

Page 52: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.directstoreClass DirectStoreDispatcher

public class DirectStoreDispatcherextends AbstractDispatcher

The DirectStoreDispatcher uses a RegEx-telegram as command. A regular expression is used to split the host telegram and thevalues are assigned to standard field names.

All Implemented Interfaces:Runnable, Observer

ParametersstartTelegram (name, default: undefined)the RegExTelegram that is used for host commands.

respTelegram (name, default: undefined)the RegExTelegram that is used for response telegrams.

displayFormatter (name, default: undefined)specifies the display's formatter, optional code and/or destination depended

dataField.displayFormatter (name, default: undefined)specifies the display formatter for data fields

deferDisplay (boolean, default: false)defer display (blank) until tray in opening

readyText (text)the ready text is written to the display when the last command is finished.

workflowMode (number, default: 0)0=DEFAULT, 1=SHORTEST_PATH, 2=CODE_BASED, 3=DEFAULT_CANCEL, 4=ENHANCED_CANCEL,5=NEW_REQ_CANCEL, 6=WFM_ITRIGGERED

suspendInBoundUntilDone (boolean, default: false)default value dependent on work flow parameter: true if 1 (SHORTEST_PATH) is set, otherwise false

checkHostMode (boolean, default: true)checks whether machine is in host mode if supported by device

escPollOnArrival (boolean, default: false)stop polling when the carrier arrived. If true JMIF polls the opening after drive commands until the carrier has arrived, iffalse JMIF polls the opening until the confirm button was pressed. For restore commands the JMIF always stops pollingafter the carrier is restored.

escPollOnError (boolean, default: false)stop polling in case of an error

escOnError (boolean, default: false)try to restore tray and remove all requests if a communication error occurs and workFlowMode=4(ENHANCED_CANCEL)

escOnManualAccess (boolean, default: false)cancel request if tray disappeared by manual access (F4 handling)

Page 52 of 85

jmif.dispatcher.directstore.DirectStoreDispatcher

Page 53: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

restoreOnDone (boolean, default: false)try to restore tray ignoring all errors nor wait for restore execution nor generate event on errors

startDelay (milliseconds, default: 0)the dispatcher waits this time until it runs a request a negative value disables the timeout check - handle that with care

retries (number of retries, default: 1)retry x times if machine doesn't respond

busyTimeout (seconds, default: 180)wait for destination ready

driveTimeout (seconds, default: 180)wait for carrier arrival

pollTimeout (seconds, default: 180)wait for confirmation or cancellation at OP or by host system

pollInterval (milliseconds, default: 350)the dispatcher polls for status changes in this interval

delay (milliseconds, default: 0)T3 protocol specific delay factor

response (boolean, default: false)enables the response telegram to host

responseOnEmptyOrder (boolean, default: false)send a response telegram to host even if the order field is empty. This disables the response in case of an empty order bydefault and must be explicitly set to true!

responseOnEmptyCodeAndErr (boolean, default: false)send a response on error even if code field is undefined

responseOnError (boolean, default: false)send a response in case of machine errors on polling

responseOnQueued (boolean, default: false)send a response on receive only if request data is valid and accepted

responseOnRecv (boolean, default: false)send a response on receive

responseOnStart (boolean, default: false)send a response telegram when the command is going to be executed.

responseOnStartDriving (boolean, default: false)send a response telegram when the drive command was sent successfully to machine. Overwrites responseOnStart.Disables following responses in case of responseOnArrival=false and escPollOnArrival=true.

responseOnArrival (boolean, default: false)send a response telegram when the carrier arrived

fwdMachCode (boolean, default: false)send machine error code as return code instead of common error

machCodeMask (number, default: -1)bit mask for machine error code

Page 53 of 85

jmif.dispatcher.directstore.DirectStoreDispatcher

Page 54: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

zeroQuantOnError (boolean, default: false)set quantity to zero on error within response. If an error occurred and the orderType field is valid, then orderTyp field'svalue will be set to BT_CANCEL in case of zeroQuantOnError is set to false, which is the default value, too.

respDestTemplate (text)regEx template for rerouted response telegram to host

respHeaderIdTemplate (text)regEx template to add header to the response telegram to host

responseTimeout (seconds, default: 0=not used)stop response tries after this time

ackOnResponse (boolean, default: false)acknowledge on response required

ackReleaseRequired (boolean, default: false)acknowledge on release required

inputField (text, default: quant)well known text field from RegExTelegram or infoFieldName i.e. "quant", "order", "part"

inputPattern (regular expression, default: undefined that means the given input is parsedas numerical value)optionally containing @@-variables, used to check the user input on confirmation; can be used for barcode checks; oninventory forces valid user input; only used on machine types supporting alpha numerical input.

inputReplacements (list, default: undefined)

inputExpression (text, default: undefined)

cancelCode (number, default: -1)the numerical input value which allows the operator to cancel all requests on the given opening. In case of machine typeKX_AB and workflow mode 1 it cancels the current order's positions including all positions within the E1/E2 memory.

rushTemplate (text, default: undefined)regEx template for rushPattern

rushPattern (text, default: undefined)modifies priority of telegram, e.g. "1" = higher priority, "0"= lower priority

seqNoKeyField (text)sequence number key field

seqNoExceptionFilter (text)only used if seqNoKeyField is set

dualTray (boolean, default: false)defines whether given opening or all support dual tray; precondition: carrierNext field defined

denyDualTrayOnStore (boolean, default: false)if set dual tray mode is only allowed for picking

dualTrayLookAheadDepth (number, default: 0)look ahead depth for carrier to prepare on lift (obsoletes carrierNext usage)

Page 54 of 85

jmif.dispatcher.directstore.DirectStoreDispatcher

Page 55: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

restoreMode (number, 0=ALL, 1=TOP, 2=DRIVE, LOWERMOST=3, LEVEL=4, default: 0)specifies the restore mode: ALL, restore all trays; TOP, restore the top tray only; DRIVE, use a drive command for restore;LOWERMOST, restore the tray from the lowermost level in the AO; LEVEL, use a drive command to restore the trayfrom the specified level

quickStart (boolean, default: false)for Megalifts it sends a direct start command instead of a usual start telegram. The machine directly moves the tray if thisparameter is true. If quickStart is false the command is stored in the FIFO cache of the machine and must be activated bypressing the confirm button.

disablePosLamps (boolean, default: false)disables pos and pos2 lamps if not supported by machine control

disableDepthLamps (boolean, default: false)disables depth and depth2 lamps if not supported by machine control

disableHostLamp (boolean, default: false)disables host lamp if not supported by machine control

forceHostLampOnArrival (boolean, default: false)set host lamp on arrival

ignoreDriveResp (boolean, default: false)ignore invalid responses on machine commands, PowerDrawer specific at this time

office (boolean, default: false)set true for industriever in order to set final text instead of move back for shuttle

blindRestore (boolean, default: false)executes unchecked move back drive command

dest.XX (text)link to destination channel (access opening), mandatory

machtype.XX (text)defines the connected machine type, e.g KX, KX_DT, KX_RS, KX_AKHN, KX_AB, KX_C3K, KX_T4, MM, MM500,INT, HA, HA_MP10A, HA_MP12D, LM, PD, BTO, LISTA, SIMULATION

c3kCommand.XX (text)defines the C3000 telegram

t3Telegram.XX (text)defines the T3 telegram

mmTelegram.XX (text)defines the MM260 telegram

device.XX (text)defines the simulated device

Example

Page 55 of 85

jmif.dispatcher.directstore.DirectStoreDispatcher

Page 56: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.directStoreDispatcher=jmif.dispatcher.directstore.

DirectStoreDispatcher

jmif.directStoreDispatcher.startTelegram=hostTelegram

jmif.directStoreDispatcher.respTelegram=hostTelegram

jmif.directStoreDispatcher.pollInterval=200

jmif.directStoreDispatcher.quickStart=true

jmif.directstoreDispatcher.workflowMode=0

jmif.directstoreDispatcher.dest.11=HTTP10

jmif.directstoreDispatcher.dest.12=HTTP10

jmif.directstoreDispatcher.dest.13=HTTP10

jmif.directstoreDispatcher.machType.11=KX_C3K

jmif.directstoreDispatcher.machType.12=KX_C3K

jmif.directstoreDispatcher.machType.13=KX_C3K

jmif.directstoreDispatcher.c3kCommand.11=c3kCommand10

jmif.directstoreDispatcher.c3kCommand.12=c3kCommand10

jmif.directstoreDispatcher.c3kCommand.13=c3kCommand10

jmif.directstoreDispatcher.dest.21=UDP20

jmif.directstoreDispatcher.machType.21=KX

jmif.directstoreDispatcher.t3Telegram.21=t3Telegram20

jmif.directstoreDispatcher.dualTray.21=false

jmif.directstoreDispatcher.dest.22=SIM20

jmif.directstoreDispatcher.machType.22=SIMULATION

jmif.directstoreDispatcher.device.22=SHUTTLE20

jmif.directstoreDispatcher.dualTray.22=true

jmif.directstoreDispatcher.dest.31=UDP30

jmif.directstoreDispatcher.machType.31=MM

jmif.directstoreDispatcher.mmTelegram.31=mmTelegram30

Page 56 of 85

jmif.dispatcher.directstore.DirectStoreDispatcher

Page 57: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.directstoreClass DirectStoreRequestAlert

public class DirectStoreRequestAlertextends Object

Parametersenabled (boolean, default: true)initial setting of alert

repeat (boolean, default: false)true: repeat alert the whole time, false: repeat alert only if error code has changedThe alert will be released as soon as the error is resolved.

alertTelegrams (list)list of defined response telegrams for alert

alertReleaseTelegrams (list)list of defined release telegrams for alert (repeat=false)

alertReleaseCode (number, default: 0)return value for alert release code (repeat=false)

Example

jmif.directstoreDispatcher.responseOnError=true

jmif.directstoreDispatcher.defaultAlert.enabled=true

jmif.directstoreDispatcher.defaultAlert.repeat=false

jmif.directstoreDispatcher.defaultAlert.alertTelegrams=respTelegram.ALERT

jmif.directstoreDispatcher.defaultAlert.alertReleaseTelegrams=respTelegram.ALERT,

respTelegram.ALERT.REL

jmif.directstoreDispatcher.defaultAlert.alertReleaseCode=1000

Page 57 of 85

jmif.dispatcher.directstore.DirectStoreRequestAlert

Page 58: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.imtradexClass ImtradexDispatcher

public class ImtradexDispatcherextends AbstractDispatcher

Imtradex Dispatcher to communicate with a PLC that controls racks.

All Implemented Interfaces:Runnable, Observer

Parametersdest (text)the destination channel

dataTelegram (name)the RegExTelegram that represents the data telegram

respTelegram (name)the RegExTelegram that is used to respond.

Example

jmif.ImtradexDispatcher=jmif.dispatcher.imtradex.ImtradexDispatcher

jmif.ImtradexDispatcher.dest=OPC

jmif.ImtradexDispatcher.dataTelegram=DataTelegram

jmif.ImtradexDispatcher.respTelegram=DataTelegram

Page 58 of 85

jmif.dispatcher.imtradex.ImtradexDispatcher

Page 59: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.knappClass KnappDispatcher

public class KnappDispatcherextends AbstractDispatcher

All Implemented Interfaces:Runnable, Observer

ParameterslocalWms (boolean, default: true)local WMS or direct machine access

protocol (numeric, default: 4)protocol version

Page 59 of 85

jmif.dispatcher.knapp.KnappDispatcher

Page 60: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.loopClass LoopDispatcher

public class LoopDispatcherextends AbstractDispatcher

The LoopDispatcher queues the requests until the first request is finished, then it closes the queue and puts the finished requestagain to the end of the queue. When a new sequence is sent this dispatcher deletes the current queue and builds a new one from thenew telegrams. After the first request is finished it closes the queue again and repeats the requests until the sequence is renewed.

All Implemented Interfaces:Runnable, Observer

ParametersstartTelegramthe telegram to start a machine movement

respTelegramthe telegram that is sent back to the host if response is true.

startDelaythe dispatcher waits this time (miliseconds) until the machine is started

pollIntervalthe time (miliseconds) between two status checks

pollTimeoutthe request is stoped after this time elapsed and the machines status is not as expected

delayTODO[description]

ignoreDriveRespTODO[description]

retriesthe dispatcher tries this number of times to send something to the machine

responsedefines if a generic telegram is sent to the host in case of error, arrival or the user confirmed at the machine

responseOnEmptyOrderTODO[description]

responseOnEmptyCodeAndErrTODO[description]

responseOnStartTODO[description]

responseOnArrivalTODO[description]

escPollOnErrorTODO[description]

escPollOnArrivalTODO[description]

Page 60 of 85

jmif.dispatcher.loop.LoopDispatcher

Page 61: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

quickStartTODO[description]

readyTextTODO[description]

Example

jmif.LOOPDISPATCHER=jmif.dispatcher.loop.LoopDispatcher

jmif.LOOPDISPATCHER.startTelegram=GENERICSTARTTELEGRAM

jmif.LOOPDISPATCHER.respTelegram=GENERICRESPONSETELEGRAM

jmif.LOOPDISPATCHER.startDelay=500

jmif.LOOPDISPATCHER.pollInterval=1000

jmif.LOOPDISPATCHER.PollTimeout=180000

jmif.LOOPDISPATCHER.startDelay=500

jmif.LOOPDISPATCHER.response=true

jmif.GENERICSTARTTELEGRAM=jmif.RegExTelegram

jmif.GENERICSTARTTELEGRAM.....

jmif.GENERICRESPONSETELEGRAM=jmif.RegExTelegram

jmif.GENERICRESPONSETELEGRAM.......

Page 61 of 85

jmif.dispatcher.loop.LoopDispatcher

Page 62: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.lsplusClass LsplusDispatcher

public class LsplusDispatcherextends AbstractDispatcher

The LS+ Dispatcher

All Implemented Interfaces:Runnable, Observer

ParametersdownChannelthe channel to receive messages

upChannelthe channel to send messages

pollIntervalthe interval used to poll the machines (miliseconds)

pollTimeoutthe JMIF closes the request if the movement is not confirmed after that time (miliseconds)

dest.XXXthe channel for the given address

machType.XXXthe machine type for the given address

dualTray.YYYactivate dualtray for the given channel

addrMap.XXXmap the given addres to the new value

Example

Page 62 of 85

jmif.dispatcher.lsplus.LsplusDispatcher

Page 63: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.lsplusDispatcher=jmif.dispatcher.lsplus.LsplusDispatcher

jmif.lsplusDispatcher.downChannel=MFRD

jmif.lsplusDispatcher.upChannel=MFRU

jmif.lsplusDispatcher.pollInterval=600

jmif.lsplusDispatcher.pollTimeout=180000

jmif.lsplusDispatcher.dest.1=KDX01

jmif.lsplusDispatcher.machType.1=KX

jmif.lsplusDispatcher.dualTray.KDX01=false

# mapping

jmif.lsplusDispatcher.addrMap.1=7

jmif.lsplusDispatcher.addrMap.2=6

Page 63 of 85

jmif.dispatcher.lsplus.LsplusDispatcher

Page 64: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.regexClass RegExDispatcher

public class RegExDispatcherextends AbstractDispatcher

This dispatcher uses regular expressions to dispatch host telegrams to specified destinations. For each destination a individualregular expression can be used to to create telegrams. All RegExTelegrams except the acknowledge telegrams can be nested.

All Implemented Interfaces:Runnable, Observer

ParametersstartTelegram.GATEWAY (name)the RegExTelegram to use for received host messages. Start telegrams must be configured depending on the receivinggateway.

respTelegram.GATEWAY (name)the RegExTelegram to use for responses on telegrams depending on the receiving gateway.

response (boolean, default: false)send a response to the host

responseOnRecv (boolean, default: false)send a response to the host when a telegram was received (ACK/NAK)

ackOnRepetition (boolean, default: false)send a response to the host when a telegram was repeated (depends on the sequence number)

ignoreRepetition (boolean, default: false)ignore repeated telegrams (depends on the sequence number)

seqNoKeyField (name)the field in the start telegram that indicates the sender.

maxRepetitions (number, default: 1)maximum number of attempts to send a telegram.

dest.addr (name)destination channel for that address.

telegram.addr (name)RegExTelegram to send to that address.

respHeaderIdTemplate (pattern)uses this template as file name (and path) for response telegrams. It adds prefix, suffix and extension if configured. Workswith FileChannels.

reqHeaderIdTemplate (pattern)uses this template as file name (and path) for request telegrams. It adds prefix, suffix and extension if configured. Workswith FileChannels.

[addr.]ackOnResponse (boolean, default: false)does this receipient send a acknowledge on telegrams? (true/false)

ackTelegram (name)the RegExTelegram that is used for checking acknowledges from the host

Page 64 of 85

jmif.dispatcher.regex.RegExDispatcher

Page 65: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 65 of 85

jmif.dispatcher.regex.RegExDispatcher

Page 66: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.rlpClass RlpDispatcher

public class RlpDispatcherextends AbstractDispatcher

The RLP dispatcher is used to send commands to a Royonic Light Pointer device also known as LED pointer.

All Implemented Interfaces:Runnable, Observer

ParametersforceDirectStart (boolean, default: false)turns RLP on as soon as it arrives requested position

initDests (list of channels)the destinations (channels) that should be initialized during startup

skipInit (boolean, default: false)usually all light pointers are initialized during startup, use this property to skip the initialization process

skipInitAxis (boolean, default: false)disables movement of axis on initialization

idleTimeout (seconds, default: 0)inactivity time before RLP is switched off by JMIF

cmdDelay (milliseconds, default: 50)time in milliseconds to wait between two commands

timeout (milliseconds, default: 50000)time to wait for an asynchronous response from device

channel.rlpRequest (telegram name)the RegExTelegram used to read the received messages

channel.dest.address (channel name)the destination channel for address

rlp.channel (telegram name)the RlpTelegram used for destination channel. There can be a individual telegram for each destination that allows to setdifferent parameters (i.e. offsets) for each destination

invalidCoordinatesMarker (numeric, default: undefined)RLP will be switched off if both x and y coordinate will be set to this value in the host telegram

Example

Page 66 of 85

jmif.dispatcher.rlp.RlpDispatcher

Page 67: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Page 67 of 85

jmif.dispatcher.rlp.RlpDispatcher

Page 68: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.rlpDispatcher=jmif.dispatcher.rlp.RlpDispatcher

jmif.rlpDispatcher.forceDirectStart=false

jmif.rlpDispatcher.rlpBoxSettings.default.height=150

jmif.rlpDispatcher.rlpBoxSettings.default.width=0

jmif.rlpDispatcher.rlpBoxSettings.default.depth=0

jmif.rlpDispatcher.rlpBoxSettings.default.action=blink

jmif.rlpDispatcher.rlpBoxSettings.default.actionMap.0=none

jmif.rlpDispatcher.rlpBoxSettings.default.actionMap.1=blink

jmif.rlpDispatcher.rlpBoxSettings.default.actionMap.2=circle

jmif.rlpDispatcher.rlpBoxSettings.default.actionMap.3=light

jmif.rlpDispatcher.internal.dest.1=UDP01

jmif.rlpDispatcher.internal.dest.2=UDP02

jmif.rlpDispatcher.initDests=UDP01,UDP02

jmif.rlpDispatcher.skipInit=false

jmif.rlpDispatcher.skipInitAxis=true

jmif.rlpDispatcher.idleTimeout=120

# rlpTelegram global default

jmif.rlpDispatcher.rlp=rlpTelegram

jmif.rlpTelegram.cLength=3050

jmif.rlpTelegram.cWidth=864

jmif.rlpTelegram.zFixing=960

jmif.rlpTelegram.xOffset=1098

jmif.rlpTelegram.yOffset=415

jmif.rlpTelegram.z0Offset=0

jmif.rlpTelegram.z1Offset=0

jmif.rlpTelegram.xBorder=0

jmif.rlpTelegram.yBorder=0

# local setup

jmif.rlpDispatcher.rlp.UDP01=rlpTelegram01

jmif.rlpDispatcher.rlp.UDP02=rlpTelegram02

# rlpTelegram01

jmif.rlpTelegram01.xOffset=1098

jmif.rlpTelegram01.yOffset=415

jmif.rlpTelegram01.cLength=3050

jmif.rlpTelegram01.cWidth=864

jmif.rlpTelegram01.zFixing=960

# rlpTelegram02

jmif.rlpTelegram02.xOffset=1098

jmif.rlpTelegram02.yOffset=415

Page 68 of 85

jmif.dispatcher.rlp.RlpDispatcher

Page 69: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.rlpTelegram02.cLength=3050

jmif.rlpTelegram02.cWidth=864

jmif.rlpTelegram02.zFixing=960

Page 69 of 85

jmif.dispatcher.rlp.RlpDispatcher

Page 70: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.dispatcher.viastoreClass ViastoreDispatcher

public class ViastoreDispatcherextends AbstractDispatcher

ViastoreDispatcher handles the communication to a Viastore system. Usually it is connected to a TCP channel.

All Implemented Interfaces:Runnable, Observer

ParameterscheckTrayNochecks the tray number

errorChannela list of the error channels

Example

jmif.viastoreDispatcher =

jmif.dispatcher.viastore.ViastoreDispatcher

jmif.viastoreDispatcher.checkTrayNo = true

jmif.viastoreDispatcher.errorChannel = TCP01, FILE01

Page 70 of 85

jmif.dispatcher.viastore.ViastoreDispatcher

Page 71: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.simulationClass Simulation

public class Simulationextends AbstractChannel

Special channel to simulate machines

All Implemented Interfaces:Channel

Parametersdevices (list of names)Names of the simulated devices

persist (boolean, default: false)restore location and size of each device

alwaysOnTop (boolean, default: false)show devices always in foreground

device.trays (number)Number of trays in the specified device

device.accessOpenings (list of names)Names of the access openings for the specified device

device.height (number, default: 4000)Height of the simulated machine in millimeters

device.speed (number, default: 100)The speed of the simulation in percent. 100% = realistic speed, <100% = faster than in reality.

device.simulateLoad (boolean, default: true)changes the load randomly every time a tray is pulled from the access opening, forces the change of shelves inside themachine and results in more realistic tray changing times.

device.simulateErrors (number, default: 10)shows randomly errors for the access openings. Simulation of security issues in the access openings.0=disabled, 10-100=show errors (10=often, 100=rarely)

device.accessOpening.side (number, default: 1)Side of the specified access opening, 1=front, 2=back

device.accessOpening.shelf (number)Level of the specified access opening in 25mm steps

device.accessOpening.height (number)Height of the specified access opening in 25mm steps

device.accessOpening.autoRemoveTray (number, default: 0)number of seconds after which tray will be removed out of shuttle, 0 = do not remove automatically

device.accessOpening.autoProvideTray (number, default: 0)number of seconds after which new magic trays will be provided automatically, 0 = do not provide automatically;new magic trays will only be provided while AO is not busy

Page 71 of 85

jmif.simulation.Simulation

Page 72: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

device.accessOpening.autoAssignTray (boolean, default: false)false = use F3 function in semi mode to login magic tray into shuttle;true = auto generate next free tray number, F3 function will not be necessary

Example

# gateway

jmif.machGateway.channels=SIM10

jmif.machGateway.dispatchers=directstoreDispatcher

...

# channel

jmif.SIM10=jmif.simulation.Simulation

jmif.SIM10.devices=SH10, SH20

jmif.SIM10.persist=true

jmif.SIM10.alwaysOnTop=false

jmif.SH10.height=3000

jmif.SH10.trays=20

jmif.SH10.accessOpenings=11,12

jmif.SH10.11.side=1

jmif.SH10.11.shelf=25

jmif.SH10.11.height=33

jmif.SH10.11.autoRemoveTray=0

jmif.SH10.11.defaultTray=0

jmif.SH20.trays=20

jmif.SH20.accessOpenings=21,22

...

# direct store dispatcher

jmif.directstoreDispatcher.dest.11=SIM10

jmif.directstoreDispatcher.machType.11=SIMULATION

jmif.directstoreDispatcher.device.11=SH10

jmif.directstoreDispatcher.dest.12=SIM10

jmif.directstoreDispatcher.machType.12=SIMULATION

jmif.directstoreDispatcher.device.12=SH10

jmif.directstoreDispatcher.dest.21=SIM10

jmif.directstoreDispatcher.machType.21=SIMULATION

jmif.directstoreDispatcher.device.21=SH20

jmif.directstoreDispatcher.dest.22=SIM10

jmif.directstoreDispatcher.machType.22=SIMULATION

jmif.directstoreDispatcher.device.22=SH20

Page 72 of 85

jmif.simulation.Simulation

Page 73: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.telegram.c3000Class C3000CommandBase

public class C3000CommandBaseextends Object

The definition of the C3000 command.

Alternative Namec3kCommand

Parametersprotocol (class)the protocol typ (usually jmif.telegram.c3000CgiProtocol)

protocol.host (IP-address)the host IP address maybe followed by the port number

protocol.charset (character set)the character set (usually ISO-8859-1)

protocol.timeout (milliseconds)the internal protocol timeout

protocol.cmdPollIntervall (milliseconds)the command poll interval

protocol.bulkWriteMode (boolean, default: false)activate the bulk write modeIt is recomended to activate the bulk write mode.

protocol.bulkReadMode (boolean, default: false)activate the bulk read modeIt is recomended to activate the bulk read mode.

label1 (text, default: TRAY)the first label

label2 (text, default: POS)the second label

label3 (text, default: DEPTH)the third label

label4 (text, default: QUANT)the fourth label

defaultInputText (text)default input text

msgCodeFilter (regular expression)regular expression to filter unwanted opening messages alias warnings

Example

Page 73 of 85

jmif.telegram.c3000.C3000CommandBase

Page 74: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.c3kTelegram.protocol=jmif.telegram.c3000CgiProtocol

jmif.c3kTelegram.protocol.host=10.251.197.91:81

jmif.c3kTelegram.protocol.charset=ISO-8859-1

jmif.c3kTelegram.protocol.timeout=1000

jmif.c3kTelegram.protocol.cmdPollInterval=35

jmif.c3kTelegram.protocol.bulkWriteMode=true

jmif.c3kTelegram.protocol.bulkReadMode=true

jmif.c3kTelegram.label1=TRAY

jmif.c3kTelegram.label2=POS

jmif.c3kTelegram.label3=DEPTH

jmif.c3kTelegram.label4=QUANT

Page 74 of 85

jmif.telegram.c3000.C3000CommandBase

Page 75: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.telegram.c3000Class CounterState

public class CounterStateextends Object

C3000 button counter state handling. Be aware that the key mapping is for historic reasons quite tricky. Do not use undefinedpositive key codes to disable a key! They may be used in future versions.

ParameterskeyMap (int[])key code map for controls Button1 to Button4 (0..3) and E1/E2 (4,5), first element is primary code

Example

# default (F3-F6, E1-E2, F1-F2)

jmif.c3kCommand1.keyMap.0=0

jmif.c3kCommand1.keyMap.1=1

jmif.c3kCommand1.keyMap.2=2

jmif.c3kCommand1.keyMap.3=3

jmif.c3kCommand1.keyMap.4=4

jmif.c3kCommand1.keyMap.5=5

jmif.c3kCommand1.keyMap.6=6

jmif.c3kCommand1.keyMap.7=7

# only F3 enabled (ignore all other input)

jmif.c3kCommand1.keyMap.0=0

jmif.c3kCommand1.keyMap.1=-1

jmif.c3kCommand1.keyMap.2=-1

jmif.c3kCommand1.keyMap.3=-1

jmif.c3kCommand1.keyMap.4=-1

jmif.c3kCommand1.keyMap.5=-1

jmif.c3kCommand1.keyMap.6=-1

jmif.c3kCommand1.keyMap.7=-1

Page 75 of 85

jmif.telegram.c3000.CounterState

Page 76: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

# F3, F4 and F1 enabled (special firmware where F1 goes to Button3)

jmif.c3kCommand1.keyMap.0=0

jmif.c3kCommand1.keyMap.1=1

jmif.c3kCommand1.keyMap.2=-1

jmif.c3kCommand1.keyMap.3=-1

jmif.c3kCommand1.keyMap.4=-1

jmif.c3kCommand1.keyMap.5=-1

jmif.c3kCommand1.keyMap.6=2

jmif.c3kCommand1.keyMap.7=-1

# treat signals on IN6+7 (F5, F6) like F3 and F4 while disabling F3 and F4 input

jmif.c3kCommand1.keyMap.0=2

jmif.c3kCommand1.keyMap.1=3

jmif.c3kCommand1.keyMap.2=-1

jmif.c3kCommand1.keyMap.3=-1

jmif.c3kCommand1.keyMap.4=-1

jmif.c3kCommand1.keyMap.5=-1

jmif.c3kCommand1.keyMap.6=-1

jmif.c3kCommand1.keyMap.7=-1

# treat signals on IN6+7 (F5, F6) like F3 and F4

jmif.c3kCommand1.keyMap.0=0,2

jmif.c3kCommand1.keyMap.1=1,3

jmif.c3kCommand1.keyMap.2=-1

jmif.c3kCommand1.keyMap.3=-1

jmif.c3kCommand1.keyMap.4=-1

jmif.c3kCommand1.keyMap.5=-1

jmif.c3kCommand1.keyMap.6=-1

jmif.c3kCommand1.keyMap.7=-1

Page 76 of 85

jmif.telegram.c3000.CounterState

Page 77: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

# treat F4 like F3

jmif.c3kCommand1.keyMap.0=0,1

jmif.c3kCommand1.keyMap.1=-1

jmif.c3kCommand1.keyMap.2=-1

jmif.c3kCommand1.keyMap.3=-1

jmif.c3kCommand1.keyMap.4=-1

jmif.c3kCommand1.keyMap.5=-1

jmif.c3kCommand1.keyMap.6=-1

jmif.c3kCommand1.keyMap.7=-1

Page 77 of 85

jmif.telegram.c3000.CounterState

Page 78: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.telegram.rlpClass RlpBase

public abstract class RlpBaseextends AbstractTelegram

!telegram! The RLP telegram specifies the parameters to communicate with a Royonic Light Pointer device.

All Implemented Interfaces:Telegram

Alternative NameRlpTelegram

Parametersheightthe projection height of the light pointer

xminthe minimum position the RLP device can show on the x-axis

xmaxthe maximum position the RLP device can show on the x-axis

yminthe minimum position the RLP device can show on the y-axis on the lower level

ymin1the minimum position the RLP device can show on the y-axis on the upper level

ymaxthe maximum position the RLP device can show on the y-axis on the lower level

ymax1the maximum position the RLP device can show on the y-axis on the upper level

xBorderthe border of the carrier that will be added to the x-coordinate

yBorderthe border of the carrier that will be added to the y-coordinate

yAxisDiffthe difference to the ordinary mounting position of the RLP device

xOffsetthe offset that must be added to the x-position or absolute offset measured as to the default reference point 1098/432

yOffsetthe offset that must be added to the y-position or absolute offset measured as to the default reference point 1098/432

z0Offsetthe offset that must be added to the z-position for the lower level

z1Offsetthe offset that must be added to the z-position for the upper level

Page 78 of 85

jmif.telegram.rlp.RlpBase

Page 79: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

zFixingthe mounting height of the RLP device. If set to any number greater 0 it is used to calculate the position in a different way,the coordinates are calculated by JMIF. If set to 0 the default height is used and the position is calculated by the deviceitself.

cLengththe carrier length. If used together with cWidth only the (absolute!) values for the offsets, borders and the zFixing arenecessary. All other value's defaults are set or calculated according the specification.

cWidththe carrier width. See cLength.

laserlaser pointer (default: false)

extLimitsuse extended limits for depth on new hardware (default: false)

Example

(old)

jmif.rlpTelegram01.height=100

jmif.rlpTelegram01.xmin=30

jmif.rlpTelegram01.xmax=1840

jmif.rlpTelegram01.ymin=0

jmif.rlpTelegram01.ymin1=0

jmif.rlpTelegram01.ymax=864

jmif.rlpTelegram01.ymax1=864

jmif.rlpTelegram01.xBorder=0

jmif.rlpTelegram01.yBorder=0

jmif.rlpTelegram01.yAxisDiff=0

jmif.rlpTelegram01.xOffset=0

jmif.rlpTelegram01.yOffset=20

jmif.rlpTelegram01.z0Offest=0

jmif.rlpTelegram01.z1Offest=0

jmif.rlpTelegram01.zFixing=0

Page 79 of 85

jmif.telegram.rlp.RlpBase

Page 80: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

(new)

jmif.rlpTelegram.cLength=2450

jmif.rlpTelegram.cWidth=813

jmif.rlpTelegram.zFixing=960

jmif.rlpTelegram.xOffset=1098

jmif.rlpTelegram.yOffset=432

jmif.rlpTelegram.z0Offset=0

jmif.rlpTelegram.z1Offset=300

jmif.rlpTelegram.xBorder=0

jmif.rlpTelegram.yBorder=0

Page 80 of 85

jmif.telegram.rlp.RlpBase

Page 81: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.telegram.t3Class T3Base

public abstract class T3Baseextends AbstractTelegram

!telegram! The settings for the t3-communication

All Implemented Interfaces:Telegram

Alternative Namet3Telegram

ParameterscarrierByteCountthe number of digits for the carrier (default: 3)

levelByteCountthe number of digits for the level (default: 0)

posByteCountthe number of digits for the position (default: 2)

pos2ByteCountthe number of digits for the "to position" (default: 0)

depthByteCountthe number of digits for the depth (default: 1)

quantByteCountthe number of digits for the quantity (default: 4)

heightByteCountthe number of digits for the height (default: 2)

displaySizethe number of digits for the display (default: 20)

isSupport118does it support the v-telegram? (default: false)

tcpFrameactivate the TCP Frame? For C2000 TCP connections only (default: false)

hostCmdis it a host command? (default: false) The JMIF is able to receive T3-commands as a host command and translate these intoC3000 commands.

hostCmdShelfLifeafter the shelf live no response will be sent to host (default: 0)

t85is it a T85? (default: false)

Example

Page 81 of 85

jmif.telegram.t3.T3Base

Page 82: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.t3Telegram.carrierByteCount=3

jmif.t3Telegram.posByteCount=2

jmif.t3Telegram.depthByteCount=1

jmif.t3Telegram.quantByteCount=4

jmif.t3Telegram.displaySize=20

Page 82 of 85

jmif.telegram.t3.T3Base

Page 83: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.telegram.t4Class T4Base

public abstract class T4Baseextends AbstractTelegram

!telegram! The settings for the t4-communication

All Implemented Interfaces:Telegram

Alternative Namet4Telegram

ParameterscarrierByteCountthe number of digits for the carrier (default: 3)

posByteCountthe number of digits for the position (default: 2)

depthByteCountthe number of digits for the depth (default: 1)

quantByteCountthe number of digits for the quantity (default: 4)

displaySizethe number of digits for the display (default: 20)

Example

jmif.t3Telegram.carrierByteCount=3

jmif.t3Telegram.posByteCount=2

jmif.t3Telegram.depthByteCount=1

jmif.t3Telegram.quantByteCount=4

jmif.t3Telegram.displaySize=20

Page 83 of 85

jmif.telegram.t4.T4Base

Page 84: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

jmif.telegram.talkmanClass TalkmanBase

public class TalkmanBaseextends AbstractTelegram

Base class for the Talkman telegrams Gets the header information and fits the needs for type "V"

All Implemented Interfaces:Telegram

Parametersbase.fieldNamesfield list in the order they are in the telegram

Page 84 of 85

jmif.telegram.talkman.TalkmanBase

Page 85: Technical Manual - KARDEX: · PDF filejmif Class AbstractBufferedStreamChannel public abstract class AbstractBufferedStreamChannel extends AbstractBufferedChannel The framing mode

Regular expressions – searching with patterns

Regular expressions can match patterns in text. While other search functions just find a word or a specific text phrase with regular expressions you can build a pattern to match a text.

If you want to check a text to find the word license but you don't know if it was written in american English or in british English you need to search twice with a usual search engine.With regular expressions you just need to build the right pattern:

licen[cs]e → will find both licence and license

when you need to also find the word in capital case you may use the pattern

[Ll]icen[cs]e → that will find Licence and license but also licensekey

Special characters

. Matches any single character [ ] A bracket expression. Matches a single character that is contained

within the brackets. [^ ] Matches a single character that is not contained within the brackets.^ Matches the starting position within the string. In line-based tools, it

matches the starting position of any line.$ Matches the ending position of the string or the position just before a

string-ending newline. In line-based tools, it matches the ending position of any line.

| The choice (aka alternation or set union) operator matches either the expression before or the expression after the operator.

( ) Defines a group.

Quantifiers

? Matches the preceding element zero or one time.+ Matches the preceding element one or more times.* Matches the preceding element zero or more times. {3} Matches the preceding element exact 3 times.{3,7} Matches the preceding element between 3 and 7 times.

Defined character classes

\w Matches a character or digit\d Matches a digit\s Matches a control character (space, tabulator, line feed)

For more details refere to the wikibook at http://en.wikibooks.org/wiki/Regular_Expressions

Page 85 of 85

Appendix A: Regular Expressions