technical manual - kardex: · pdf filejmif class abstractbufferedstreamchannel public abstract...
TRANSCRIPT
JMIF
Technical Manual
(c) 2003-2018 KARDEX Software GmbH
created by PDFDoclet
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
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
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
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
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
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
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
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
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
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
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
# 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
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
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
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 of 85
jmif.G3Link
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
# 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
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
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
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
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 of 85
jmif.JcaChannel
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
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
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
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
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
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
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
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
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
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
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
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
# 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
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 of 85
jmif.RxTxChannel
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
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
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
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
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
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
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
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
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 of 85
jmif.dispatcher.cell.CellDispatcher
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 of 85
jmif.dispatcher.cell2.CellDispatcher
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
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
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
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
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
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
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
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
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
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
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
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
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 of 85
jmif.dispatcher.regex.RegExDispatcher
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 of 85
jmif.dispatcher.rlp.RlpDispatcher
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
jmif.rlpTelegram02.cLength=3050
jmif.rlpTelegram02.cWidth=864
jmif.rlpTelegram02.zFixing=960
Page 69 of 85
jmif.dispatcher.rlp.RlpDispatcher
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
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
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
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
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
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
# 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
# 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
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
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
(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
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
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
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
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
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