PL document version
Copyright © 2005 Elcom s. r. o.
Revision History | ||
---|---|---|
Revision 1.00 | 23. Feb. 2006 | JAD |
Build of PL document version For Comm32.dll from version 4.29. | ||
Revision 1.01 | 23. May 2006 | JAD |
Added description for Euro-2100 Documentation change for Comm32.dll from version 4.31. | ||
Revision 1.02 | 17. July 2006 | JAD |
Illegal characters and roman numbers are converted from text to binary data as 'space'. | ||
Revision 1.03 | 7. Aug. 2006 | JAD |
Added hourly report for Euro-2100. Added new programmable keys "PLU price question" and "Calculator". Documentation change for Comm32.dll from version 4.34. | ||
Revision 1.04 | 19. Apr. 2007 | JAD |
Fixed all known bugs in descriptions. | ||
Revision 1.05 | 2. May 2007 | JAD |
Added new cash registers Euro-100T and Euro-200TX. | ||
Revision 1.06 | 22. May 2007 | JAD |
Added support for decimal comma/dot configuration. | ||
Revision 1.07 | 8. Oct. 2007 | JAD |
Added new cash register type Euro-2300TX. Added new commands Section 3.20, “Programming PLU price”, Section 3.21, “Programming PLU stock” and Section 3.28, “Read receipts (PC journal)”, Section 3.12, “Clearing journals in ECR memory”. Documentation change for Comm32.dll from version 4.45. | ||
Revision 1.08 | 17. Oct. 2007 | JAD |
Added new commands Section 3.38, “Reading length of single receipt” and Section 3.39, “Read single receipt (PC journal)” for Euro-2300TX. |
Abstract
Document contains description how to use communication library Comm32.dll. This DLL can be used with the following ECR types: Euro-500T/TX Handy, Euro-Smart, Euro-Smart Plus, Euro-2100TX, Euro-2300TX, Euro-100T and Euro-200TX
Table of Contents
Table of Contents
Free Version License. By receiving and/or using Elcom communication software, you accept the following Free Version User Agreement. This agreement is a binding legal agreement between Elcom s. r. o. and the purchasers, users or evaluators of Elcom software and products. If you do not intend to honor this agreement, remove all installed Elcom software from your computer now.
Free Version Distribution. This Free Version software may be freely distributed, provided that:
Such distribution includes only the original archive supplied by Elcom s. r. o. You may not alter, delete or add any files in the distribution archive (the only exception is in point 3).
No money is charged to the person receiving the software, beyond reasonable cost of packaging and other overhead.
Original files can be distributed included in application software that supports product from Elcom s. r. o.
For information about redistribution of
Elcom communication software visit our web site at
http://www.elcom.sk or e-mail
us <elcom@elcom.sk>
.
Free Version User Agreement.
Usage and distribution restrictions. The evaluator/user/buyer/owner may not use or distribute Elcom software for any unlawful purpose. The evaluator/user/buyer/owner is not allowed to attempt to disassemble or decompile Elcom Software and products.
Copyright restriction. Elcom name and any logo or graphics file that represents our software may not be used in any way to promote products developed with our software. All parts of Elcom software and products are copyright protected.
Limitation of responsibility. The evaluator/user/buyer/owner of Elcom software will indemnify and defend Elcom against lawsuits, claims, costs associated with defense or accusations that result from the use of Elcom software.
Elcom is not responsible for any damages whatsoever, including loss of information, interruption of business, personal injury and/or any damage or consequential damage without limitation, incurred before, during or after the use of our products.
Table of Contents
int InitComm(
portNum, portSpeed)
;int
portNum
;int
portSpeed
;
description. This function is called before communication if it is necessary to open communication port.
input parameters.
portNum
port number, which is ECR connected to: 1 – 255 (COM1 – COM255)
portSpeed
communication speed between ECR and PC: 9600 Baud, 38400 Baud
return value.
0 – port initialized
1 – port number incorrect
2 – transmission speed incorrect
4 – unable to open particular port
5 – unable to read actual port setting
6 – unable to set port
Port setting: 8 data bits, 1 stop bit, none parity
Set communication speed 9600 Baud for modem communication
int DialUp(
phoneNumber)
;char *
phoneNumber
;
description. Calling before communication and directly after InitComm
function
for dial up a modem connection.
input parameters.
*phoneNumber
phone number in text form
return value.
0 – connection established
1 – connection not established
2 – port is not opened
String of modem setting is "ATE0V0X0
",
where:
E0
– echo off
V0
– numerical form of final codes
X0
– settings of final codes and monitoring of
connection progress
- for detailed information see user guide of the modem
int CloseComm(
)
;
description.
return value.
0 – port closed
1 – unable to close port
int InitEcr(
ecrNum, ecrType)
;int
ecrNum
;int
ecrType
;
int InitEcrEx( | ecrNum, | |
ecrType, | ||
ecrCountry) ; |
int | ecrNum; |
int | ecrType; |
int | ecrCountry; |
description.
Function sets ECR type and number for communication
InitEcrEx
function will also set up
the character conversion tables (for Windows), rounding
algorithm and other features specific to given country.
InitEcr
function will set up default
properties and the character conversion table to 1:1 mode, i. e.
no conversion takes place.
input parameters.
return value.
0 – type and ECR number set
1 – ECR number incorrect
2 – ECR type incorrect (or this ECR is not supported in this version or country)
int AutoDetect( | EcrNum, | |
PortNum, | ||
PortSpeed, | ||
EcrType) ; |
int | EcrNum; |
int * | PortNum; |
int * | PortSpeed; |
int * | EcrType; |
int AutoDetectEx( | EcrNum, | |
PortNum, | ||
PortSpeed, | ||
EcrType, | ||
nCountry, | ||
nOptions) ; |
int | EcrNum; |
int * | PortNum; |
int * | PortSpeed; |
int * | EcrType; |
int | nCountry; |
int | nOptions; |
description. Function detects type of connected ECR, port number to which is
ECR connected and transmission speed on which is ECR set. Function
AutoDetectEx
detects only ECR type for selected
country and with selected options. It is desirable to specify the
country so the application would not waste time detecting ECRs that
don't exist for the given country and tested only the ECRs implemented
for the given country. Selected options also makes the detection
faster.
input parameters.
EcrNum
number of connected ECR - must be entered.
PortNum
pointer of variable containing port number
PortSpeed
pointer of variable containing transmission speed
EcrType
pointer of variable containing type of connected ECR
nCountry
desired country
nOptions
auto detection parameters – it is a bit-map of settings where individual bits take following meanings:
bit 0 (value 1):
PortNum
variable contains the
number of tested port.
bit 1 (value 2):
PortSpeed
variable contains the
communication speed.
bit 2 (value 4): prolonged break signal – useful when testing via the modem connection.
Result number is obtained by simple addition of desired values.
output parameters.
PortNum
detected COM port
PortSpeed
detected Speed
EcrType
detected type
0 – auto detection successful
1 – auto detection not successful
3 – particular port reserved
4 – ECR number incorrect (out of range)
5 – incorrect port
6 – incorrect communication speed
int SendData( | CommandNum, | |
FirstItem, | ||
ItemCount, | ||
Data, | ||
Info) ; |
int | CommandNum; |
int | FirstItem; |
int | ItemCount; |
unsigned char * | Data; |
char * | Info; |
description. Function starts data transmission from PC to ECR.
Input parameters.
CommandNum
FirstItem
ItemCount
Data
Pointer to data (binary), which will be transmitted to ECR.
Info
Pointer to array, where will be stored information about
transfer. Should be used for commands 'Send PLUs' and 'Send
cashier message'. Length of variable
Info
should be equal to
ItemCount
at least.
Output parameters.
Info
Meaning of return values in Info
is:
'A' =
Changed VAT level for PLU
(only for programming PLUs).
'N' =
VAT level unchanged
(only for programming PLUs).
'W' =
Warning, item transmitted but
is incorrect and was not accepted by ECR.
'P' =
Line was printed on ECR.
(only for sending messages for
cashier).
'E' =
Error - wrong data or transfer
error.
'T' =
Incorrect Tax / VAT level
assignment (item but is incorrect and was not
accepted by ECR).
'D' =
Incorrect Department assignment
(item but is incorrect and was not accepted by
ECR).
'U' =
Incorrect Unit assignment
(item but is incorrect and was not accepted by
ECR).
'Q' =
Incorrect stock or
quantity(item but is incorrect and was not
accepted by ECR).
'V' =
Incorrect price (item
but is incorrect and was not accepted by
ECR).
'I' =
Index out of range.
'C' =
Incorrect text string /
character (e. g. PLU name).
'B' =
Incorrect bar code
(only for programming PLUs).
'@' =
OK (no error has occurred
during transfer of packet)
unchanged if item was not send to ECR.
First position in Info
represents first transmitted PLU, first line of message,
or fist transmitted packet for all other communication
commands.
0 – Transmission started
1 – Undefined or unsupported operation
2 – Number of transmitted data incorrect
3 – Number of first transmitted data is incorrect
4 – Missing or wrong pointer to
Data
5 – Missing or wrong pointer
Info
(not
used)
6 – Port is not open - need to call function InitComm
first.
7 – ECR is not initialized - need to call function
InitEcr
or InitEcrEx
first.
int RecvData( | CommandNum, | |
FirstItem, | ||
ItemCount, | ||
Data) ; |
int | CommandNum; |
int | FirstItem; |
int | ItemCount; |
unsigned char * | Data; |
description. Function starts data transmission from ECR to PC.
input parameters.
CommandNum
FirstItem
ItemCount
Data
Pointer to data array where should be stored received binary data from ECR.
output parameters.
Data
received binary data from ECR
0 – Transmission started
1 – Undefined or unsupported operation
2 – Number of transmitted data incorrect
3 – Number of first transmitted data is incorrect
4 – Missing or wrong pointer to
Data
6 – Port is not open - need to call function InitComm
first.
7 – ECR is not initialized - need to call function
InitEcr
or InitEcrEx
first.
int CancelComm(
)
;
description. Function aborts running communication.
return value.
0 – communication stopped
7 – ECR was not initialized
int GetStatus( | Percentage) ; |
unsigned int * | Percentage; |
description. Function informs about running communication.
input parameters.
Percentage
Pointer to variable to store transfer status in percentage.
output parameters.
Percentage
Field Percentage
contains state
of successfully transferred data in percent.
-1 – No communication is in progress
0 – Communication finished without any error
1 – Running communication
2 – Communication interrupted by function CancelComm()
3 – Error during communication – incorrect or missing packet ACK1 (connect to ECR)
4 – Error during communication – incorrect or missing packet ACK2 (bad ECR type or command or command parameters)
5 – Error during communication – incorrect or missing packet ACK3 (by communication PC -> ECR)
5 – Error during communication – incorrect or missing data packet (by communication ECR -> PC)
6 – Error during communication – incorrect or missing packet EOC
8 – Communication finished without any error and with tax level change of one PLU at least (only for programming PLUs)
9 – Sale is started in ECR
11 – Wrong received data.
12 – Unknown error (Extended code is possible to
get with GetECR_Info()
or / and GetLastAckResult()
)
13 – Sending data error.
int
GetLastAckResult(
)
;
description. Function returns value of last accepted ACK packet (”0” if no received).
return value. see ACK result table
Function is important especially for PC-Online communication and PLU programming.
int GetItemsCount(
CommandNum)
;int
CommandNum
;
description. Function returns maximal item count (of same type) for selected command.
input parameters.
CommandNum
return value.
-3 – ECR not initialized
-4 – command is not supported
0 – unknown items count (PLU with non zero sale, journals, ...)
n – Items count. (for CommandNum
=
3, n = PLU count, for CommandNum
= 5, n =
VAT levels count, ...)
int GetRecordLength( | CommandNum, | |
FirstItem, | ||
ItemCount) ; |
int | CommandNum; |
int | FirstItem; |
int | ItemCount; |
description. Function serves to determine the amount of memory space demanded for given record(s). (e. g. for proper allocation of memory space)
input parameters.
CommandNum
operation ID number
FirstItem
ordinal of first record (see range initialization)
ItemCount
number of records (see range initialization)
return value.
0 – given operation is unsupported or ECR not initialized
n – size of record(s) in bytes
int SetCommParam( | lpstrConfigString) ; |
char * | lpstrConfigString; |
Description. Function serves to set up various communication and conversion parameters.
Input parameter.
lpstrConfigString
The string is comprised of individual parameters separated by ';' (semicolon) characters. Parameters could contains also a numeric, or string value if needed. Such parameter is then written as “parameter=value”.
Table 1.1. Supported parameters (marked values in are automatically set during initialisation)
parameter name(s) | description |
---|---|
modem+ / modem- | sets up default settings for modem
communication. modem+ changes
break time for 9600 Baud to 1s and
timeout to 6s.
modem- changes break time for
9600 Baud to 20ms and timeout
to 5s. |
modemtime=time | sets the modem answer time-out for dialling in milliseconds (60 s) |
485+ / 485- | sets up the usage/disusage of flow control necessary for RS-485 converters |
485wait=time | sets up the time space between the command that switches the converter and actual start of transmission. Time is specified in microseconds. (Warning: not all PCs support measuring time in microseconds. In this case, the time will be rounded up to nearest whole millisecond) (1 microsecond) |
485coef=coefficient | sets up the coefficient for switching the 485 converter into state for receiving data. The coefficient is in fact time in which the PC will transmit 1,000 bytes via the communication port divided by the time necessary to send one bit. To transmit one byte, it is necessary to transmit ten bits (start bit, eight data bits and a stop bit) and also account for the time between individual bytes. |
timeout=time | sets up the time of maximum ECR answer time-out in milliseconds (5s) (changed by modem+/- parameter) |
break=time | sets up wait time for start communication after break signal in milliseconds (20ms / 1s) (changed by modem+/- parameter) |
break384=time | same as break , only
for speed of 38 400 Baud
(20ms) |
break96=time | same as break , only
for speed of 9 600 Baud (1s)
(changed by modem+/-
parameter) |
warning+ / warning / warning- | Specifies “warning mode”. “+” means – all warnings ends communication. “-” means – no warning ends communication. Without “+”/“-” means programming warnings ends communication (e. g. warning while programming PLUs) |
wait_sn =time | “n ” is number from
1 to 3 and time is delay in milliseconds. Meaning of
n is: 1 – delay time in
wait loop before change state to send (for 485), 2 =
time before send of packet, 3 = time after send of
packet (after send command to 485 for receive).
Default values: s1 = 0, s2 = 0, s3 = 0. |
wait_rn =time | “n ” is number from
1 to 3 and time is delay in milliseconds. Meaning of
n is: 1 – not
used from version 4.30, 2 = wait time in
"reading data from COM port loop",
3 = wait time in "wait for read data delay
loop". Default values: r1 = 1, r2 = 1, s3 =
0. |
decimal=character | This parameter allow the user to select decimal separator for numbers. Standard value of decimal separator is dot. This configuration is useful if there is a third party software (e. g. MS excel™, OOo Calc™) and this software requires decimal comma (depending on operation system settings) and not decimal dot. This character will be used for both sides conversion (binary->text and text->binary). Decimal separator can be only one character long. If there is given more than one character, then only the first character will be used. |
Return value.
n – specifies the number of successfully set parameters
-1 – undefined/erroneous configuration string
-2 – communication port is not initialized
-3 – not initialized ECR.
int GetECR_Info( | pcVariable, | |
pcValue, | ||
byMaxLength) ; |
const char * | pcVariable; |
char * | pcValue; |
BYTE * | byMaxLength; |
description. Function returns information about actual ECR and communication property and serves to get extended error codes.
input parameters.
pcVariable
pointer to string with “variable name”
pcValue
pointer to output text buffer
byMaxLength
pointer to variable containing buffer length
output parameters.
pcValue
text data in pointed buffer
byMaxLength
full text data length (also when not all data saved)
0 – All OK. In text buffer is full value.
-3 – ECR not initialized.
-4 – operation unsupported
-11 – text buffer too low. (saved only byMaxLength – 1 bytes)
-13 – no text buffer.
-14 – variable not implemented
n – Numeric result for numeric variables (e. g. count of, time of, etc.). No error is returned!!
Table 1.2. ECR Info variable names
Text informations: | |
---|---|
variable name | description |
ECR_Name | ECR type name*1 |
Numeric informations: *2 | |
---|---|
variable name | description |
PLU_Count | Maximal PLU Count for this cash register type. If selected type support extended memory module then the result is maximal possible PLU count, not the actual PLU count. Actual PLU count can be obtained from command 255 (this command is not supported by all cash registers). |
IsVariablePLU_Count? | If this variable returns zero then the cash register has fixed PLU count, otherwise the PLU count depends on current hardware configuration of cash register. |
LastErrorCode | Last Error Code |
WaitAfterCommandOnline | recommended time between*3 2 online commands (all except “end of sale”) |
WaitAfterCommandNoPrint | recommended wait time after*3 command without print on receipt |
WaitAfterCommandDefault | recommended wait time after*3 “normal” command |
WaitAfterCommandnnn | recommended wait time after*3
command “nnn ”. Where
“nnn ” is command number
|
WaitAfterEndOfSale | recommended wait time after*3 online command “end of sale” |
*1: Only name of the type of ECR. Name do not contain PLU count and/or specific version implementation.
*2: Result is returned as result value of call of function and can be saved as text. If text buffer is entered return value will be in text buffer and also as return value of function. If no text buffer is entered (pointer to null or zero length) no error will occur and result is only the return value of function.
*3: time to wait after send command to send next command (in milliseconds)
Table 1.3. Last communication Error list
error number | description |
---|---|
0 | All OK |
1 | Time out, no data |
2 | Time out, low data |
3 | Bad packet header (probably other device on com port) |
4 | Bad packet type (other device or other ECR type) |
5 | Bad (unexpected) data length. (probably is bad country protocol specified) |
6 | Corrupted packet. |
7 | Wrong (corrupted) data length or Error 5 and 6 occurred on the same time. |
100 | Is not possible to send data (operation system error). |
101 | Not all data was send (operation system error). |
200 | Cancelled by user. |
300-399 | Unknown errors. |
int InitConvert( | DecPosNumDisp, | |
DecPosNumRound, | ||
CodingTable, | ||
ItemSeparator, | ||
LineSeparator) ; |
int | DecPosNumDisp; |
int | DecPosNumRound; |
char * | CodingTable; |
char * | ItemSeparator; |
char * | LineSeparator; |
int SetCodeTable(
CodingTable)
;char
*
CodingTable
;
description. These functions are used to configure transformation between binary data form and text data form. Convert table can be different for receiving and sending.
input parameters.
DecPosNumDisp
number of decimal places for price displaying (0, 1, 2, 3)
DecPosNumRound
number of decimal places for tax and price rounding and rounding algorithm
(0, 1, 2, 3) – number of decimal places
(00, 10, 20, 30) – rounding algorithm (numbers are displayed at base 10)
00 – to nearest integer
10 – to nearest lower integer
20 – to nearest bigger integer
30 – rounding by quarters (i. e. to the nearest number whose double is an integer)
Result value is obtained by simple addition of both values (e. g. 12 – always round down to two decimal places)
CodingTable
Pointer for string containing letters of national alphabet character table (see national characters table) depends on the specific country and ECR. To determine the character table for an ECR, simply perform test 200 in the ECR.
Accented characters (up to 34)
character '\5' (Pascal syntax #5, Basic syntax Chr(5)) accented characters (up to 60)
It can be performed only one of "a" or "b" steps (not both at the same time).
(inactive if step 1b) has been used)
if there were 34 characters in step 1a) then at most three special characters will follow or if character '\4' follows (and in step 1a) there were up to 34 characters), then exactly three special characters follow: „euro character“, „yen character“ and „up arrow“ (these are not used in all ECRs)
In case that characters within range 'A'–'Z' and 'a'–'z', the conversion will take place only in the ECR->PC direction.
following is character greater or equal to character ' ' (space), or a character after character '\1' will be considered a character of double width. (following = immediately following, not first one greater than ' ')
characters is greater or equal to character ' ' (space), or characters following the character '\2' will be considered for characters denoting the VAT levels (displayed in the ECR as Roman numerals I–IV). If not set explicitly, these will be automatically set to characters 'A'–'F'. (this is always the unilateral conversion from ECR to PC)
If the character '\3' is entered, the conversion is cancelled (no conversion takes place).
Special character conversion PC <––> ECR. After character '\6', that is mandatory for the beginning of that block (otherwise this block will be left out), doubles of characters follow. The doubles are in format (PC character, ECR character). Block must end with character '\6'.
Unilateral conversion from PC to ECR. After character '\7' (is mandatory or this block will be left out) doubles of characters follow, that are converted only in PC––>ECR direction. Doubles are in format (PC character, ECR character) Block must end with character '\7'
Unilateral conversion from ECR to PC. After character '\8' (is mandatory or this block will be left out) doubles of characters follow, that are converted only in ECR––>PC direction. Doubles are in format (PC character, ECR character) Block must end with character '\8'
Blocks 5a), 5b) and 5c) are designed to convert special characters such as characters specific to given national alphabet (Cyrillic, Greek) that visually resemble Latin characters.
If the pointer contains NULL the table remains unchanged, regardless of country setting (or in 1:1 mode in case there is no county specified)
ItemSeparator
value for separator in line between items – not empty
string (character ';' (semicolon) by default) (if
ItemSeparator
contains NULL it remains
unchanged - default ';' semicolon)
LineSeparator
Line separator (in case of empty string there is/must be
(depending on conversion direction) every row
terminated with character '\0' and the entire block is/must be
finished with two consecutive characters '\0') (if
LineSeparator
contains NULL it remains
unchanged - default CR+LF = '\r\n' = 0D0A in hexadecimal
code)
ItemSeparator
and
LineSeparator
must have different contents
(mustn't contain identical characters). If this would happen,
their values will not change.
return value.
0 – value settings correct
1 – wrong setting for rounding algorithm (e. g. to round to more decimal places than should be displayed)
2 – (not used)
3 – conversion table and/or separators were not set up
4 – (not used)
5 – (not used)
7 – ECR was not initialised
int ConvertBinToString( | CommandNum, | |
FirstItem, | ||
ItemCount, | ||
Data, | ||
StringData) ; |
int | CommandNum; |
int | FirstItem; |
int | ItemCount; |
unsigned char * | Data; |
char * | StringData; |
description. Function converts data from binary form (read from ECR) to text
form. After one calling converts one line of final text file and saves
it to variable StringData
, therefore it is
necessary to repeat function calling till all data are converted. This
progress of part conversion from binary to text form was chosen
because of lower demands of memory during data transmission. Also
because it is not possible to find out largeness of memory useful for
text data saving by conversion of electronic journal.
input parameters.
CommandNum
FirstItem
ItemCount
Data
Pointer to data (binary) (downloaded data from ECR).
StringData
Pointer, which will contains string for one line of converted data in text form (minimal suggested size is 200 B)
For graphical logo is more free space needed. Size of converted data (of final BMP file) for graphical logo is:
4382 B for T printers (Euro-2000T Alpha, Euro-500T Handy, Euro-100T, Euro-200T)
5182 B for TX printers (Euro-500TX Handy, Euro-2100TX, Euro-2300TX, Euro-100TX, Euro-200TX)
11582 B for TE printers (Euro-2000TE Alpha, Euro-500TE Handy, Euro-2100TE, Euro-200TE)
output parameters.
StringData
StringData
contains one line of
converted text (or picture in BMP format in case of
graphics logo conversion).
0 – Conversion of particular line successful
1 – All data converted (next function calling not required)
3 – Convert operation not supported
4 – Missing or bad pointer to binary convert data
5 – Missing or bad pointer to text data
6 – Bad convert range (items count).
7 – Bad convert first item.
8 – Error during conversion (binary data invalid).
9 – ECR is not initialized - need to call function
InitEcrEx
or "InitEcr
and InitConvert
"
first.
int ConvertStringToBin( | CommandNum, | |
FirstItem, | ||
ItemCount, | ||
Data, | ||
StringData) ; |
int | CommandNum; |
int | FirstItem; |
int | ItemCount; |
unsigned char * | Data; |
char * | StringData; |
description. Function converts data from text form to binary form. All text
data are converted after one calling of function and stored in
Data
.
input parameters.
CommandNum
FirstItem
ItemCount
Data
Pointer to data (binary).
StringData
Pointer to string which will contains all data in text form.
output parameters.
Data
Data
contains converted binary
data ("ready for ECR").
0 – Conversion successful
2 – Wrong BMP data.
3 – Convert operation not supported
4 – Missing or wrong pointer to binary convert data
5 – Missing or wrong pointer to text data
6 – Incorrect convert range (items count).
7 – Incorrect convert first item.
8 – Error during conversion (text data invalid).
9 – ECR is not initialized - need to call function
InitEcrEx
or "InitEcr
and InitConvert
"
first.
Example 1.1. Calling progress of functions by data transmission
res = InitComm(m_port, m_speed);
if (res != 0)
{
// Can’t initialize port
return;
}
res = InitEcr(m_ecrNum, m_ecrType);
if (res != 0)
{
// Wrong number of ECR or type of ECR
CloseComm();
return;
}
res = RecvData(m_command, m_numOfItems, m_firstItem, m_data);
if (res != 0)
{
// Wrong command or parameters ...
CloseComm();
return;
}
while ((res = GetStatus(&perc)) == 1)
{
// Progress bar
}
if (res == 0)
// Everything OK
else
// Error message
CloseComm();
Example 1.2. Calling progress of functions by data conversion after data accepting from ECR
res = InitConvert(m_dispDec, m_roundDec, m_countryCode, m_sep1, m_sep2);
if (res != 0)
{
// Initialization of conversion failed
return;
}
res = InitEcr(m_ecrNum, m_ecrType);
if (res != 0)
{
// Wrong number of ECR or type of ECR
return;
}
while (!ConvertBinToString(m_command, m_firstItem, m_numOfItems, m_data, m_stringData))
{
// Process m_stringData
}
Example 1.3. Calling progress of functions by data conversion before data sending to ECR
res = InitConvert(m_dispDec, m_roundDec, m_countryCode, m_sep1, m_sep2);
if (res != 0)
{
// Initialization of conversion failed
return;
}
res = InitEcr(m_ecrNum, m_ecrType);
if (res != 0)
{
// Wrong number of ECR or type of ECR
return;
}
res = ConvertStringToBin(m_command, m_firstItem, m_numOfItems, m_data, m_stringData);
if (res != 0)
{
// Error while converting data
}
// the m_data can be sent to ECR
In API function SendData
, RecvData
, ConvertBinToString
and ConvertStringToBin
is used Range select ("number of first transmitted item" and "count (or
length) of transmitted items"). These values are not used by all communication commands.
There are two ways of using these values.
"number of first transmitted item" = first transmitted item count
from 0 (in data type WORD
)
"count (or length) of transmitted items" = count of items (in data
type WORD
), or length of data (in data type
DWORD
).
Particular communication commands uses different range selects.
none
for SendData
and
RecvData
=
"first item number" = 0, "count (or length) of items" = 1
(values have no real meaning, bud are not ignored and
must be in correct range)
for ConvertBinToString
and ConvertStringToBin
depends range on particular conversion. E. g. Select "first item
number" = 0, "count (or length) of items" = 7 if the data
consist of seven records and all should be converted.
type "Start
& Length
" - "first
item number" = Start
, "count (or length) of items" =
Length
For reading PLU with non-zero sale values is Start
value ignored. Length
mean count of PLU's with non-zero
sale.
type "LongLength
" - "first item number" = 0, "count
(or length) of items" = LongLength
For command of reading length
of single receipt must be used "ID select" in API function RecvData
("number of
first transmitted item"). The value of "first item number" must be set to
"Receipt ID number" for receiving particular receipt. The value "count (or
length) of items" should be set to "1".
Table 1.4. Countries codes
Number | Acronym | Country |
---|---|---|
0 | (none) | default (no country) |
1 | SK | Slovakia |
2 | CZ | Czech Republic (non fiscal version) |
3 | EN/GB | (generic English version) |
4 | ENf/GBf | (generic fiscal law English version) |
5 | SW | Old Sweden versions |
6 | RO | Romania |
7 | PL | Poland |
8 | HU | Hungary |
9 | LV | Latvia |
10 | MK | Macedonia |
11 | FI | Finland |
12 | GR | Greece |
13 | RS | Serbia |
14 | ME | Monte Negro |
15 | LT | Lithuania |
16 | reserved | reserved |
17 | DE | Germany |
18 | CZf | Czech Republic (fiscal law version) |
19 | reserved | reserved |
20 | reserved | reserved |
21 | reserved | reserved |
22 | DK | Denmark |
23 | SE | Sweden |
24 | AT | Austria |
Table 1.5. Error codes description
Error code | Description |
---|---|
0 | All OK |
1 | Communication error (wrong check sum, wrong packet, wrong operation...). |
2 | PLU programmed VAT assignment changed. |
3 | Opened receipt (sale in progress) in ECR (communication is not possible). |
4 | VAT assignment is out of range or VAT is not active! |
6 | Sales unit is out of range! |
7 | Quantity or stock value is out of range! |
8 | Price is out of range! |
10 | Command is out of range or not allowed in this mode! |
11 | PLU index is out of range! |
12 | Not right hexadecimal sign code (name of PLU). |
17 | Link out |
18 | Duplicity of PLU names |
19 | Action is not possible. Make daily report. |
23 | Wrong message line! (unsupported characters) |
24 | Message for cashier has more than maximal allowed lines (message cannot be send). |
25 | PLU category assignment is out of range! |
26 | Invalid bar-code |
54 | It is not possible to change data for PLU. Maximal PLU count for programming reached. |
55 | It is not possible to change PLU while the receipt is open (sale in progress) in ECR. |
56 | Journal receipt was not set (command 184) before reading of receipt (command 185). |
57 | Incorrect receipt size (command 185). |
Table of Contents
In this type of communication is not necessary to create a session (relation). All connections are only data transfers (upload to ECR, download from ECR). Simply only send/receive data to/from ECR.
Table 2.1. Definition of data types
type name | length (in bytes) | description |
---|---|---|
BYTE | 1 | unsigned number (integer) |
WORD | 2 | unsigned number (integer), little endian (low byte, high byte) |
DWORD | 4 | unsigned number (integer), little endian (lowest byte first, highest byte last) |
N6 | 6 | signed integer, little endian. Low (first) 47 bits are used for unsigned part of number and last bit is used to determine positive (clear (set to 0)) or negative (set to 1) value. See example of 6 byte integer number. |
char | 1 | signed integer |
int | 2 | signed integer, little endian (low byte, high byte) |
long | 4 | signed integer, little endian (lowest byte first, highest byte last) |
double | 8 | real number. (compatible with type double
in Borland C++ Builder and MS Visual C++
). If type extension is
used then decimal places are not used. |
string | various | Text string. Maximal length depends from data type (reserved
length = end byte - start byte + 1 ). If actual string
length is less than the reserved length, then the string is null
terminated. After string termination (character 0x00 )
should be only null characters (0x00 ). See character map for correct interpreting
of characters. |
n* char | n | String with exact length n bytes. See character map for correct interpreting
of characters. (Most of these types are only numerical
values) |
BARCODE | various | bar-code stored in compressed BCD form (two numbers on each byte). If the count of numbers is odd, then on the first byte must be the top half of byte be set to zero. |
Table 2.2. Extension of definition of numerical data types
Decimal numbers are represented as whole numbers. Original value is multiplied (for encoding) or divided (for decoding) by number 1 (0 places), 10 (1 place), 100 (2 places), 1000 (3 places), according to number of places we want to use.
Table 2.3. Definition of string characters for PL
code in ECR | character / meaning |
---|---|
0x7b | Ą |
0x7c | ą |
0x7d | Ć |
0x7e | ć |
0x7f | Ę |
0x80 | ę |
0x81 | Ł |
0x82 | ł |
0x83 | Ń |
0x84 | ń |
0x85 | Ó |
0x86 | ó |
0x87 | Ś |
0x88 | ś |
0x89 | Ź |
0x8a | ź |
0x8b | Ż |
0x8c | ż |
0x1f | double width character (character after this character has double width) |
0x5b* | Roman number "I" (character Ⅰ) |
0x5c* | Roman number "II" (character Ⅱ) |
0x5d* | Roman number "III" (character Ⅲ) |
0x5e* | Roman number "IV" (character Ⅳ) |
0x5f* | Roman number "V" (character Ⅴ) |
0x60* | Roman number "VI" (character Ⅵ) |
0x20 - 0x7a | standard ASCII characters (except character 0x5b-0x60 used for vat assignment) |
Table 2.4. ECR types for Comm32.dll
number | type | PLU count |
---|---|---|
15 | Euro-500T Handy (from version 3.004, not version 1.xxx) | 2 000 |
13 | Euro-500TX Handy | 2 000 |
18 | Euro-Smart, Euro-Smart Plus | 2 000 |
22 | Euro-2100 | 8 000 |
23 | Euro-2100TX (with hardware detection) | 8 000 / 27 000* |
29 | Euro-2300TX | 6 000 / 8 000 / 25 000* |
26 | Euro-100T | 1 500 |
30 | Euro-200TX | 2 400 / 10 000* |
*: PLU count depends on RAM modules (auto-detection).
Table of Contents
In this part are described other parameters for all ECRs and how are they interpreted in ECR.
all ECRs have seven VAT levels labelled as numbers from 1 to 7,
VAT level 0 means inactive / forbiden sale
VAT levels from 1 to 7 are programmable VAT levels
Depends on VAT level programing witch VAT levels are tax free
VAT level with value 100,00% is forbidden VAT level (sale not possible in this VAT level)
Table 3.1. Send to ECR
command | description | Euro-500 Handy | Euro Smart, Euro Smart Plus | Euro-2100 | Euro-2300 | Euro-100T | Euro-200TX | |
---|---|---|---|---|---|---|---|---|
T | TX | |||||||
1 | System flags | x | x | x | x | x | x | x |
2 | Cashier names | x | x | x | x | x | x | x |
12 | Erase PLU sale data | x | x | x | x | x | x | x |
17 | Secondary currency exchange rate | x | x | x | x | x | x | x |
21 | Extended flags | - | - | - | x | x | x | x |
29 | PLU without stock state (safety) | x | x | x | x | x | x | x |
30 | PLU with stock state (safety) | x | x | x | x | x | - | x |
33 | Erase receipts (PC journal) | - | - | - | - | x | - | - |
38 | Programming returnable packs prices | x | x | x | x | x | x | x |
39 | EAN-13 bar-codes behavior parameters programming | x | x | x | x | x | x | x |
40 | Send message | - | - | - | - | - | x | x |
46 | Programmable keys | - | - | - | x | x | x | x |
47 | PLU categories | - | - | - | - | - | x | x |
51 | Hourly report (daily) clearing | - | - | - | x | x | x | x |
52 | Hourly report (periodical) clearing | - | - | - | x | x | x | x |
60 | Programming of PLU price | - | - | - | - | x | - | - |
61 | Programming of PLU stock | - | - | - | - | x | - | - |
Table 3.2. Receive from ECR
Command number: | 1 - programming, 129 - receiving |
Data length: | 36 |
0.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for price and TAX displaying (range: <0, 3>) | 1 | 6 |
1 | x | |||
2 | x | |||
3 | x | number of decimal places for price rounding (range: <0, 3>) | 1 | 5 |
4 | x | |||
5 | x | |||
6 | x | system of rounding 0 – up from 5; 1 – always up; 2 – always down; 3 - quarter rounding | 1 | 1 |
7 | x |
1.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for TAX rounding (range: <0, 3>) | 1 | 4 |
1 | x | |||
2 | x | |||
3 | x | number of decimal places for total price of sale rounding (range: <0, 3>) | 1 | 3 |
4 | x | |||
5 | x | |||
6 | x | prices of PLU are programmed with TAX – without TAX ( 0 – prices with TAX, 1 – prices without TAX) | 1 | 2 |
7 | x |
Note: 0. and 1. byte is always ignored by ECR (read-only parameters).
2.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for quantity rounding (range: <0, 3>) | 2 | 3 |
1 | x | |||
2 | x | number of blank lines between receipts (range: <0, 6>) | 2 | 4 |
3 | x | |||
4 | x | |||
5 | x | number of logo lines (range: <0, 6>) | 2 | 5 |
6 | x | |||
7 | x |
3.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | quantity multiplying: if 0 then m1 / m2 ,
if 1 then m1 * m2 | 2 | 6 |
1 | x | date format (0 – day month year, 1 – month day year) (parameter is read-only) | 2 | 2 |
2 | x | 0 – not to print / 1 – to print TAX values on sale receipt (parameter is read-only) | 2 | 1 |
3 | - | not used | ||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
Byte(s) | Meaning | type | system flag | digits |
---|---|---|---|---|
4-7 | receipt number (range: <1, 9999>) | WORD | 3 | 4-9 |
8 | ECR number (range: <1, 99>) | BYTE | 3 | 2-3 |
9.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | 0 – resets the receipt number after daily report (parameter is read-only) | 3 | 1 |
1 | - | not used | ||
2 | - | |||
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
10.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | required subtotal key pressing before receipt finishing 0 – not required, 1 – required | 4 | 2 |
1 | x | subtotal amount printing after subtotal pressing 0 – no, 1 – yes | 4 | 1 |
2 | x | required credit card number entering if paid by Credit 0-not required, 1-required | 4 | 3 |
3 | x | required customer’s payment amount entering 0-not required, 1-required | 4 | 4 |
4 | - | not used | ||
5 | - | |||
6 | - | |||
7 | - |
Byte | Meaning | type | system flag |
---|---|---|---|
11 | not used | BYTE |
12.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | terminal code for bar code scanner (0 – CR+LF, 1 – CR, 2 – LF) | 5 | 1 |
1 | x | |||
2 | x | communication speed of bar code scanner (0 – 1200, 1 – 2400, 2 – 4800, 3 – 9600, 4 – 19200) | 5 | 2 |
3 | x | |||
4 | x | |||
5 | x | communication speed of PC (0 – 9600 or 1 – 38400) | 5 | 3 |
6 | x | type of electronic scales (bits 0 and 1) - see user manual for scales types | 5 | 4 |
7 | x |
11.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | type of electronic scales (bits 2 and 3) - see user manual for scales types | 5 | 4 |
1 | x | |||
2 | x | PC ONLINE (0 - PC->ECR, 1 – PC->ECR and ECR->PC) (parameter is read-only) | 5 | 5 |
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
12.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | font for battery power supply | 6 | 1 |
1 | x | |||
2 | x | font for adapter power supply | 6 | 2 |
3 | x | |||
4 | x | graphical logo printing 0 – no, 1 – yes (parameter is read-only) | 6 | 3 |
5 | x | 0 – large font (2,5 mm high) (parameter is read-only) | 6 | 4 |
6 | - | not used | ||
7 | x | standby mode time (bit 0) | 6 | 5 |
13.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | standby mode time (bits 1 and 2): 0 - off , 1 - after 1 min, 2 - after 5min, 3 - after 10min, 4 - after 15min | 6 | 5 |
1 | x | |||
2 | - | not used | ||
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
Byte(s) | Meaning | type | system flag |
---|---|---|---|
16-17 | value of percent add-on (range: <1, 9999>) | WORD(2) | 7 |
18-19 | limit for percent add on entered by ECR keyboard (range: <1, 99>) | WORD | 7 |
20-21 | value of percent discount (range: <1, 9999>) | WORD(2) | 8 |
22-23 | limit for percent discount entered by ECR keyboard (range: <1, 9999>) | WORD | 8 |
24-29 | time: hour:min:sec , hour – two numbers, min –
two numbers, sec – two numbers, in internal hexadecimal ECR codes
(see example of stored
time) | 6*char | 9 |
30-35 | date: day.month.year , day – two numbers, month
– two numbers, year – two numbers, in internal hexadecimal ECR
codes (see example of stored
date) | 6*char | 10 |
Example 3.1. Time
The time "12:20:32" (24 hour time) is in ECR represented by
sequence of bytes: 0x31, 0x32, 0x32, 0x30, 0x33,
0x32
Example 3.2. Date
The date "1st April 1999" (01.04.99) is
in ECR represented by sequence of bytes: 0x30, 0x31, 0x30, 0x34,
0x39, 0x39
It is not possible to change date and time from communication.
Command number: | 1 - programming, 129 - receiving |
Data length: | 36 |
0.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for price and TAX displaying (range: <0, 3>) | 1 | 6 |
1 | x | |||
2 | x | |||
3 | x | number of decimal places for price rounding (range: <0, 3>) | 1 | 5 |
4 | x | |||
5 | x | |||
6 | x | system of rounding 0 – up from 5; 1 – always up; 2 – always down; 3 - quarter rounding | 1 | 1 |
7 | x |
1.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for TAX rounding (range: <0, 3>) | 1 | 4 |
1 | x | |||
2 | x | |||
3 | x | number of decimal places for total price of sale rounding (range: <0, 3>) | 1 | 3 |
4 | x | |||
5 | x | |||
6 | x | prices of PLU are programmed with TAX – without TAX ( 0 – prices with TAX, 1 – prices without TAX) | 1 | 2 |
7 | x |
Note: 0. and 1. byte is always ignored by ECR (read-only parameters).
2.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for quantity rounding (range: <0, 3>) | 2 | 3 |
1 | x | |||
2 | x | number of blank lines between receipts (range: <0, 6>) | 2 | 4 |
3 | x | |||
4 | x | |||
5 | x | number of logo lines (range: <0, 9>) low 3 bites | 2 | 5 |
6 | x | |||
7 | x |
3.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of logo lines (range: <0, 9>) highest significant bite | 2 | 5 |
1 | x | quantity multiplying: if 0 then m1 / m2 ,
if 1 then m1 * m2 | 2 | 6 |
2 | x | date format (0 – day month year, 1 – month day year) (parameter is read-only) | 2 | 2 |
3 | x | 0 – not to print / 1 – to print TAX values on sale receipt (parameter is read-only) | 2 | 1 |
4 | - | not used | ||
5 | - | |||
6 | - | |||
7 | - |
Byte(s) | Meaning | type | system flag | digits |
---|---|---|---|---|
4-7 | receipt number (range: <1, 9999>) | WORD | 3 | 4-9 |
8 | ECR number (range: <1, 99>) | BYTE | 3 | 2-3 |
9.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | 0 – resets the receipt number after daily report (parameter is read-only) | 3 | 1 |
1 | - | not used | ||
2 | - | |||
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
10.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | required subtotal key pressing before receipt finishing 0 – not required, 1 – required | 4 | 2 |
1 | x | subtotal amount printing after subtotal pressing 0 – no, 1 – yes | 4 | 1 |
2 | x | required credit card number entering if paid by Credit 0-not required, 1-required | 4 | 3 |
3 | x | required customer’s payment amount entering 0-not required, 1-required | 4 | 4 |
4 | - | not used | ||
5 | - | |||
6 | - | |||
7 | - |
Byte | Meaning | type | system flag |
---|---|---|---|
11 | not used | BYTE |
12.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | terminal code for bar code scanner (0 – CR+LF, 1 – CR, 2 – LF) | 5 | 1 |
1 | x | |||
2 | x | communication speed of bar code scanner (0 – 1200, 1 – 2400, 2 – 4800, 3 – 9600, 4 – 19200) | 5 | 2 |
3 | x | |||
4 | x | |||
5 | x | communication speed of PC (0 – 9600 or 1 – 38400) | 5 | 3 |
6 | x | type of primary electronic scales (bits 0 and 1) - see user manual for scales types | 5 | 4 |
7 | x |
11.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | type of primary electronic scales (bits 2 and 3) - see user manual for scales types | 5 | 4 |
1 | x | |||
2 | x | PC ONLINE (0 - PC->ECR, 1 – PC->ECR and ECR->PC) (parameter is read-only) | 5 | 5 |
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
12.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | font for battery power supply (not used in Euro-2300) | 6 | 1 |
1 | x | |||
2 | x | font for adapter power supply (not used in Euro-2300) | 6 | 2 |
3 | x | |||
4 | x | graphical logo printing 0 – no, 1 – yes (parameter is read-only) | 6 | 3 |
5 | x | 0 – large font (2,5 mm high) (parameter is read-only) | 6 | 4 |
6 | - | not used | ||
7 | x | standby mode time (bit 0) | 6 | 5 |
13.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | standby mode time (bits 1 and 2): 0 - off, 1 - after 1 min, 2 - after 5min, 3 - after 10min, 4 - after 15min | 6 | 5 |
1 | x | |||
2 | - | not used | ||
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
Byte(s) | Meaning | type | system flag |
---|---|---|---|
16-17 | value of percent add-on (range: <1, 9999>) | WORD(2) | 7 |
18-19 | limit for percent add on entered by ECR keyboard (range: <1, 99>) | WORD | 7 |
20-21 | value of percent discount (range: <1, 9999>) | WORD(2) | 8 |
22-23 | limit for percent discount entered by ECR keyboard (range: <1, 9999>) | WORD | 8 |
24-29 | time: hour:min:sec , hour – two numbers, min –
two numbers, sec – two numbers, in internal hexadecimal ECR codes
(see example of stored
time) | 6*char | 9 |
30-35 | date: day.month.year , day – two numbers, month
– two numbers, year – two numbers, in internal hexadecimal ECR
codes (see example of stored
date) | 6*char | 10 |
Example 3.3. Time
The time "12:20:32" (24 hour time) is in ECR represented by
sequence of bytes: 0x31, 0x32, 0x32, 0x30, 0x33,
0x32
Example 3.4. Date
The date "1st April 1999" (01.04.99) is
in ECR represented by sequence of bytes: 0x30, 0x31, 0x30, 0x34,
0x39, 0x39
It is not possible to change date and time from communication.
Command number: | 1 - programming, 129 - receiving |
Data length: | 37 |
0.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for price and TAX displaying (range: <0, 3>) | 1 | 6 |
1 | x | |||
2 | x | |||
3 | x | number of decimal places for price rounding (range: <0, 3>) | 1 | 5 |
4 | x | |||
5 | x | |||
6 | x | system of rounding 0 – up from 5; 1 – always up; 2 – always down; 3 - quarter rounding | 1 | 1 |
7 | x |
1.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for TAX rounding (range: <0, 3>) | 1 | 4 |
1 | x | |||
2 | x | |||
3 | x | number of decimal places for total price of sale rounding (range: <0, 3>) | 1 | 3 |
4 | x | |||
5 | x | |||
6 | x | prices of PLU are programmed with TAX – without TAX ( 0 – prices with TAX, 1 – prices without TAX) | 1 | 2 |
7 | x |
Note: 0. and 1. byte is always ignored by ECR (read-only parameters).
2.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of decimal places for quantity rounding (range: <0, 3>) | 2 | 3 |
1 | x | |||
2 | x | number of blank lines between receipts (range: <0, 6>) | 2 | 4 |
3 | x | |||
4 | x | |||
5 | x | number of logo lines (range: <0, 9>) low 3 bites | 2 | 5 |
6 | x | |||
7 | x |
3.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | number of logo lines (range: <0, 9>) highest significant bite | 2 | 5 |
1 | x | quantity multiplying: if 0 then m1 / m2 ,
if 1 then m1 * m2 | 2 | 6 |
2 | x | date format (0 – day month year, 1 – month day year) (parameter is read-only) | 2 | 2 |
3 | x | 0 – not to print / 1 – to print TAX values on sale receipt (parameter is read-only) | 2 | 1 |
4 | - | not used | ||
5 | - | |||
6 | - | |||
7 | - |
Byte(s) | Meaning | type | system flag | digits |
---|---|---|---|---|
4-7 | receipt number (range: <1, 9999>) | DWORD | 3 | 4-9 |
8 | ECR number (range: <1, 99>) | BYTE | 3 | 2-3 |
9.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | 0 – resets the receipt number after daily report (parameter is read-only) | 3 | 1 |
1 | - | not used | ||
2 | - | |||
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
10.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | required subtotal key pressing before receipt finishing 0 – not required, 1 – required | 4 | 2 |
1 | x | subtotal amount printing after subtotal pressing 0 – no, 1 – yes | 4 | 1 |
2 | x | required credit card number entering if paid by Credit 0-not required, 1-required | 4 | 3 |
3 | x | required customer’s payment amount entering 0-not required, 1-required | 4 | 4 |
4 | - | not used | ||
5 | - | |||
6 | - | |||
7 | - |
11.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | PC communication port*1 | 5a | 1 |
1 | x | |||
2 | x | |||
3 | x | Communication speed for communication with PC (0 – 9600 or 1 – 38400) | 5a | 2 |
4 | x | PC ONLINE mode (0 - PC->ECR, 1 – PC->ECR and ECR->PC) (parameter is read only and not used) | 5a | 3 |
5 | - | not used | ||
6 | - | |||
7 | - |
*1: For Euro-100 is possible to select one of the following ports 0, 1, 2 or 5*2. For Euro-200 is possible to select port in range from 0 to 6*2. Port 0 means that communication is disabled. Numbers from 1 to 4 means RS-232 protocol on communication ports COM1 to COM4. Value 5 means USB port and value 6 means RS-485 protocol on COM2.
*2: Each active device must have a dedicated port. It is not possible to program two devices to work with one port. USB port is technically identical with COM2 and therefore can not be programed USB and COM2 port together.
12.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | not used | ||
1 | x | Bar-code scanner communication port*4 | 5b | 1 |
2 | x | |||
3 | x | |||
4 | x | Communication speed of bar-code scanner (0 – 1200, 1 – 2400, 2 – 4800, 3 – 9600, 4 – 19200) | 5b | 2 |
5 | x | |||
6 | x | |||
7 | x | Terminal code for bar-code scanner (0 – CR+LF, 1 – CR, 2 – LF) (bit 0) | 5b | 3 |
*4: For Euro-100 is possible to select port in range from 0 to 2*2 and for Euro-200 ports in range 0 to 4*2. Port 0 means that communication is disabled. Numbers from 1 to 4 means RS-232 protocol on communication ports COM1 to COM4.
13.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | Terminal code for bar-code scanner (0 – CR+LF, 1 – CR, 2 – LF) (bit 1) | 5b | 3 |
1 | x | Primary scales communication port*5 | 5b | 4 |
2 | x | |||
3 | x | |||
4 | x | Type of primary electronic scales - see user manual for scales types | 5b | 5 |
5 | x | |||
6 | x | |||
7 | x |
*5: For Euro-100 is possible to select port in range from 0 to 2*2 and for Euro-200 ports in range 0 to 4*2. Port 0 means that communication is disabled. Numbers from 1 to 4 means RS-232 protocol on communication ports COM1 to COM4.
14.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | Secondary scales communication port*5 | 5b | 6 |
1 | x | |||
2 | x | |||
3 | x | Type of secondary electronic scales - see user manual for scales types | 5b | 7 |
4 | x | |||
5 | x | |||
6 | x | |||
7 | - | not used |
15.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | font for battery power supply (parameter is read only) | 6 | 1 |
1 | x | |||
2 | x | font for adapter power supply (parameter is read only) | 6 | 2 |
3 | x | |||
4 | x | graphical logo printing 0 – no, 1 – yes (parameter is read only and not used) | 6 | 3 |
5 | x | 0 – large font (2,5 mm high) (parameter is read only and not used) | 6 | 4 |
6 | - | not used | ||
7 | x | standby mode time (bit 0) | 6 | 5 |
16.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | standby mode time (bits 1 and 2): 0 - off, 1 - after 1 min, 2 - after 5min, 3 - after 10min, 4 - after 15min | 6 | 5 |
1 | x | |||
2 | - | not used | ||
3 | - | |||
4 | - | |||
5 | - | |||
6 | - | |||
7 | - |
Byte(s) | Meaning | type | system flag |
---|---|---|---|
17-18 | value of percent add-on (range: <1, 9999>) | WORD(2) | 7 |
19-20 | limit for percent add on entered by ECR keyboard (range: <1, 99>) | WORD | 7 |
21-22 | value of percent discount (range: <1, 9999>) | WORD(2) | 8 |
23-24 | limit for percent discount entered by ECR keyboard (range: <1, 9999>) | WORD | 8 |
25-30 | time: hour:min:sec , hour – two numbers, min –
two numbers, sec – two numbers, in internal hexadecimal ECR codes
(see example of stored
time) | 6*char | 9 |
31-36 | date: day.month.year , day – two numbers, month
– two numbers, year – two numbers, in internal hexadecimal ECR
codes (see example of
stored date) | 6*char | 10 |
Example 3.5. Time
The time "12:20:32" (24 hour time) is in ECR represented by
sequence of bytes: 0x31, 0x32, 0x32, 0x30, 0x33,
0x32
Example 3.6. Date
The date "1st April 1999" (01.04.99) is
in ECR represented by sequence of bytes: 0x30, 0x31, 0x30, 0x34,
0x39, 0x39
It is not possible to change date and time from communication.
Data contains cashier names.
Command number: |
| ||
Data length: | 6 * 10 - for programming and receiving |
Only cashiers names can be programmed through computer. Passwords and access rights can be set only by ECR keyboard.
Byte(s) | Meaning | type | range |
---|---|---|---|
0-9 | Cashier name (in internal hexadecimal code of ECR) | string | characters |
Command number: | 12 |
Data length: | 1 |
In this commands is used Range
select of type Start
and Length
. Start
means first PLU number (start counting from 0
). Length
means count of PLUs witch sales data should be deleted.
Byte | Meaning | type | range |
---|---|---|---|
0 | not used | BYTE |
Data contains secondary currency exchange rate.
Command number: |
| ||
Data length: | 8 |
Byte(s) | Meaning | type | range |
---|---|---|---|
0-7 | Secondary currency exchange rate | double | <0.0001, 10000.0> |
It is possible to program all exchange rates between 0.0001 and 10000.0 with maximal 6 valid digits (leading and trailing zeros are not valid digits). Rates 0.000123456 or 9876.54 are valid. Rate 0.0001234567 will be truncated and rounded (to 0.000123457).
Data contains information about PLUs.
Programming of stock state in ECR has own rules. These rules are in following text marked as *stock and means final state of PLU stock after programming.
If transmitted stock value is more than 1 000 000 000 then the difference of transmitted value and 1 000 000 000 is added to stock value in ECR.
Example 3.7. Adding PLU stock
PLU stock value in ECR is 50. Transmitted value is 1 000 000 050. Data are accepted to ECR and follow operation is done: New stock value = 50 {primal stock} + (1 000 000 050 {transmitted value} - 1 000 000 000) = 100.
If new stock value could be more than 109 – PLU stock in ECR will be not changed.
If transmitted stock value is less than -1 000 000 000 then the difference of absolute value of transmitted data and 1 000 000 000 stock value is deducted in ECR
Example 3.8. Subtracting PLU stock
PLU stock value in ECR is 45. Transmitted value is -1 000 000 030. Data are accepted to ECR and follow operation is done: New stock value = 45 {primal stock} - (1 000 000 030 {transmitted value} - 1 000 000 000) = 15.
If new stock value could be less than 0 – PLU stock in ECR will be not changed.
In all PLU commands is used Range
select of type Start
and Length
. Start
means first PLU number (start counting from 0
). Length means
amount of transmitted PLUs except of command 159 (receive PLU non
zero sale report).
Command number: | 29 - programming PLU without stock state (safety) |
Data length: | n * 30 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-8 | BARCODE | 7 | bar-code | 13 numbers |
9-22 | string | 14 | PLU name | characters |
23-25 | FLAGS | 3 | Flags | |
26-29 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 30 - programming PLU with stock state (safety) |
Data length: | n * 34 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-8 | BARCODE | 7 | bar-code | 13 numbers |
9-22 | string | 14 | PLU name | characters |
23-25 | FLAGS | 3 | Flags | |
26-29 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
30-33 | long(3) | 4 | stock value of particular PLU | <0, 999 999 999>*stock |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 157 - receive programmed PLU (safety) |
Data length: | n * 32 |
Command number: | 158 - receive PLU sale report (safety) |
Data length: | n * 44 |
Command number: | 159 - receive PLU non zero sale report (safety) |
Data length: | n * 46 |
This command use Range select. See detailed description.
0.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | descriptive PLU (0 - no, 1 - yes) (unused – read only) | 1 | 1 |
1 | x | single PLU sale (0 - no, 1 - yes) | 1 | 2 |
2 | x | stock status printed on PLU report (0 - no, 1 - yes) | 2 | 4 |
3 | x | Sale in case of negative stock value allowed (0 - no, 1 - yes) | 2 | 5 |
4 | x | possibility of fragmentary amount sale (0 - no, 1 - yes) | 2 | 6 |
5 | x | Sale unit (range: <0, 7>) | 2 | 3 |
6 | x | |||
7 | x |
1.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | linked returnable pack (0 - 50)
| 2 | 1-2 |
1 | x | |||
2 | x | |||
3 | x | |||
4 | x | |||
5 | x | |||
6 | x | |||
7 | x | Sale features (bit 0) | 1 | 3 |
2.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | Sale features (bit 1) 0 – forbidden 1 – open, 2 – preset, 3 – open and preset | 1 | 3 |
1 | x | Price limits (0 - 7; 0 means limit 1 ...) | 2 | 7 |
2 | x | |||
3 | x | |||
4 | x | Assignment to VAT level. | 2 | 1-2 |
5 | x | |||
6 | x | |||
7 | x |
Command number: | 29 - programming PLU without stock state (safety) |
Data length: | n * 38 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-10 | BARCODE | 9 | bar-code | 18 numbers |
11-30 | string | 20 | PLU name | characters |
31-33 | FLAGS | 3 | Flags | |
34-37 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 30 - programming PLU with stock state (safety) |
Data length: | n * 42 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-10 | BARCODE | 9 | bar-code | 18 numbers |
11-30 | string | 20 | PLU name | characters |
31-33 | FLAGS | 3 | Flags | |
34-37 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
38-41 | long(3) | 4 | stock value of particular PLU | <0, 999 999 999>*stock |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 157 - receive programmed PLU (safety) |
Data length: | n * 40 |
Command number: | 158 - receive PLU sale report (safety) |
Data length: | n * 52 |
Command number: | 159 - receive PLU non zero sale report (safety) |
Data length: | n * 54 |
This command use Range select. See detailed description.
Command number: | 29 - programming PLU without stock state (safety) |
Data length: | n * 34 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-10 | BARCODE | 9 | bar-code | 18 numbers |
11-24 | string | 14 | PLU name | characters |
25-29 | FLAGS | 5 | Flags | |
30-33 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 157 - receive programmed PLU (safety) |
Data length: | n * 32 |
Command number: | 158 - receive PLU sale report (safety) |
Data length: | n * 44 |
Command number: | 159 - receive PLU non zero sale report (safety) |
Data length: | n * 46 |
This command use Range select. See detailed description.
0.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | descriptive PLU (0 - no, 1 - yes) (unused – read only) | 1 | 1 |
1 | x | single PLU sale (0 - no, 1 - yes) | 1 | 2 |
2 | - | not used | ||
3 | - | |||
4 | x | possibility of fragmentary amount sale (0 - no, 1 - yes) | 2 | 6 |
5 | x | Sale unit (range: <0, 7>) | 2 | 3 |
6 | x | |||
7 | x |
1.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | linked returnable pack (0 - 50)
| 2 | 1-2 |
1 | x | |||
2 | x | |||
3 | x | |||
4 | x | |||
5 | x | |||
6 | x | |||
7 | x | Sale features (bit 0) | 1 | 3 |
2.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | Sale features (bit 1) 0 – forbidden 1 – open, 2 – preset, 3 – open and preset | 1 | 3 |
1 | x | Price limits (0 - 7; 0 means limit 1 ...) | 2 | 7 |
2 | x | |||
3 | x | |||
4 | x | Assignment to VAT level. | 2 | 1-2 |
5 | x | |||
6 | x | |||
7 | x |
3.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | linked PLU category (0 - 10)
| 2 | 1-2 |
1 | x | |||
2 | x | |||
3 | x | |||
4 | x | |||
5 | x | |||
6 | - | not used | 2 | 7 |
7 | - |
Byte | Meaning | type | flag |
---|---|---|---|
4 | not used | BYTE |
Command number: | 29 - programming PLU without stock state (safety) |
Data length: | n * 40 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-10 | BARCODE | 9 | bar-code | 18 numbers |
11-30 | string | 20 | PLU name | characters |
31-35 | FLAGS | 5 | Flags | |
36-39 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 30 - programming PLU with stock state (safety) |
Data length: | n * 44 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-10 | BARCODE | 9 | bar-code | 18 numbers |
11-30 | string | 20 | PLU name | characters |
31-35 | FLAGS | 5 | Flags | |
36-39 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
40-43 | long(3) | 4 | stock value of particular PLU | <0, 999 999 999>*stock |
Name of PLU can not be empty string or duplicated name of already existing PLU.
Name of PLU and assignment to VAT level can be changed only after daily Z-report.
Command number: | 157 - receive programmed PLU (safety) |
Data length: | n * 42 |
Command number: | 158 - receive PLU sale report (safety) |
Data length: | n * 54 |
Command number: | 159 - receive PLU non zero sale report (safety) |
Data length: | n * 56 |
This command use Range select. See detailed description.
0.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | descriptive PLU (0 - no, 1 - yes) (unused – read only) | 1 | 1 |
1 | x | single PLU sale (0 - no, 1 - yes) | 1 | 2 |
2 | x | stock status printed on PLU report (0 - no, 1 - yes) | 2 | 4 |
3 | x | Sale in case of negative stock value allowed (0 - no, 1 - yes) | 2 | 5 |
4 | x | possibility of fragmentary amount sale (0 - no, 1 - yes) | 2 | 6 |
5 | x | Sale unit (range: <0, 7>) | 2 | 3 |
6 | x | |||
7 | x |
1.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | linked returnable pack (0 - 50)
| 2 | 1-2 |
1 | x | |||
2 | x | |||
3 | x | |||
4 | x | |||
5 | x | |||
6 | x | |||
7 | x | Sale features (bit 0) | 1 | 3 |
2.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | Sale features (bit 1) 0 – forbidden 1 – open, 2 – preset, 3 – open and preset | 1 | 3 |
1 | x | Price limits (0 - 7; 0 means limit 1 ...) | 2 | 7 |
2 | x | |||
3 | x | |||
4 | x | Assignment to VAT level. | 2 | 1-2 |
5 | x | |||
6 | x | |||
7 | x |
3.Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | x | linked PLU category (0 - 30)
| 2 | 1-2 |
1 | x | |||
2 | x | |||
3 | x | |||
4 | x | |||
5 | x | |||
6 | - | not used | 2 | 7 |
7 | - |
Byte | Meaning | type | flag |
---|---|---|---|
4 | not used | BYTE |
Číslo príkazu: |
| ||
Dĺžka údajov: | 10 |
Byte(s) | Meaning | type | flag | digit |
---|---|---|---|---|
0-1 | not used | - | - | - |
2 | type of secondary electronic scales - see user manual for scales types | BYTE | 2 | 1 |
3-7 | not used | - | - | - |
8.&9. Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | - | not used | ||
1 | - | |||
2 | - | |||
3 | - | |||
4 | - | |||
5 | x | Look-up 13+5 bar-code if there is no 18 bar-code: 0-no, 1-yes | 1 | 1 |
6 | x | Look-up 13+2 bar-code if there is no 15 bar-code: 0-no, 1-yes | 1 | 2 |
7 | x | printing mode for 13+5 bar-codes: 0-do not print, 1-extended part only, 2-whole bar-code | 1 | 3 |
8 | x | |||
9 | x | printing mode for 13+2 bar-codes: 0-do not print, 1-extended part only, 2-whole bar-code | 1 | 4 |
10 | x | |||
11 | x | Print 18-digit bar-codes: 0-no, 1-yes | 1 | 5 |
12 | - | not used | ||
13 | - | |||
14 | - | |||
15 | - |
Číslo príkazu: |
| ||
Dĺžka údajov: | 10 |
Byte(s) | Meaning | type | flag | digit |
---|---|---|---|---|
0-7 | not used | - | - | - |
8.&9. Byte | In ECR | |||
---|---|---|---|---|
bit | Meaning | Flag | number | |
0 | - | not used | ||
1 | - | |||
2 | - | |||
3 | - | |||
4 | - | |||
5 | x | Look-up 13+5 bar-code if there is no 18 bar-code: 0-no, 1-yes | 1 | 1 |
6 | x | Look-up 13+2 bar-code if there is no 15 bar-code: 0-no, 1-yes | 1 | 2 |
7 | x | printing mode for 13+5 bar-codes: 0-do not print, 1-extended part only, 2-whole bar-code | 1 | 3 |
8 | x | |||
9 | x | printing mode for 13+2 bar-codes: 0-do not print, 1-extended part only, 2-whole bar-code | 1 | 4 |
10 | x | |||
11 | x | Print 18-digit bar-codes: 0-no, 1-yes | 1 | 5 |
12 | - | not used | ||
13 | - | |||
14 | - | |||
15 | - |
Functions are used to delete journal from memory of ECR.
Command number: | 33 - Clearing data journal in ECR memory |
Data length: | 8 |
Content of DATABLOCK is not used.
Data contains prices of returnable packs.
Command number: | 38 |
Data length: | 50*4 |
Byte(s) | Meaning | type |
---|---|---|
0-4 | returnable pack price | long(*) |
Command number: | 39 - programming, 167 - receiving |
Data length: | 10*8 |
DATA consist of 10 items, each 8 B long. Each item describes structure and behavior of EAN13 bar-codes started by prefix “20”, “21”,..., “29”.
Byte(s) | Meaning | type | acceptable values | |||
---|---|---|---|---|---|---|
0-1 | length of array with PLU ID number | WORD | 4, 5 * | |||
2-3 | length of array with inner checksum | WORD | 0, 1 * | |||
4-5 | length of array with quantity, weight or price | WORD | 4, 5, 6 * | |||
6-7 | type of bar-code – specifies how will be handled bar-codes with this prefix | WORD |
|
*: Sum of first three item values must be 10.
Command is used to send a message to cashier.
Command number: | 40 - Send cashier message |
Data length: | lines count * 23 |
Data are lines printed on ECR as a message for cashier.
Byte(s) | Short description | type |
---|---|---|
0-22 | line (text line to print on ECR) | string |
For Euro-100T are used only first 17 characters.
Programmable keys function.
Command number: |
| ||
Data length: |
|
Data content setting for 72 / 20 keys of programmable keyboard (36 / 10 without shift + 36 / 10 with shift). Each key allows to program its name and function keys sequence that will be simulated after its pressing.
Byte(s) | Meaning | type | range |
---|---|---|---|
0-9 | key name | string | characters |
10 | function key code | BYTE | valid codes |
11 | function key code | BYTE | valid codes |
12 | function key code | BYTE | valid codes |
13 | function key code | BYTE | valid codes |
14 | function key code | BYTE | valid codes |
15 | function key code | BYTE | valid codes |
16 | function key code | BYTE | valid codes |
17 | function key code | BYTE | valid codes |
18 | function key code | BYTE | valid codes |
19 | function key code | BYTE | valid codes |
20 | function key code | BYTE | valid codes |
21 | function key code | BYTE | valid codes |
22 | function key code | BYTE | valid codes |
23 | function key code | BYTE | valid codes |
24 | function key code | BYTE | valid codes |
25 | function key code | BYTE | valid codes |
If in the key sequence is only one value invalid than whole key will be refused as invalid.
Code | meaning | |
---|---|---|
dec. | hex. | |
195 | 0xC3 | empty button (for Euro-2100 and Euro-2300) |
143 | 0x8f | empty button (for Euro-100 and Euro-200) |
48 | 0x30 | button 0 |
49 | 0x31 | button 1 |
50 | 0x32 | button 2 |
51 | 0x33 | button 3 |
52 | 0x34 | button 4 |
53 | 0x35 | button 5 |
54 | 0x36 | button 6 |
55 | 0x37 | button 7 |
56 | 0x38 | button 8 |
57 | 0x39 | button 9 |
111 | 0x6F | button 00 |
106 | 0x6A | button DOT |
79 | 0x4F | button RETURNABLE PACK |
97 | 0x61 | button KOD1 |
98 | 0x62 | button KOD2 |
99 | 0x63 | button KOD3 |
100 | 0x64 | button KOD4 |
101 | 0x65 | button KOD5 |
102 | 0x66 | button KOD6 |
103 | 0x67 | button KOD7 |
104 | 0x68 | button KOD8 |
196 | 0xC4 | button KOD9 |
197 | 0xC5 | button KOD10 |
122 | 0x7A | button Clear |
110 | 0x6E | button Void |
121 | 0x79 | button EAN |
108 | 0x6C | button Scales |
118 | 0x76 | button Drawer |
117 | 0x75 | button Paper feed |
120 | 0x78 | button TimeMultiply |
105 | 0x69 | button Price |
112 | 0x70 | button PLU |
77 | 0x4D | button Mode |
107 | 0x6B | button Credit |
115 | 0x73 | button Check |
109 | 0x6D | button Subtotal |
116 | 0x74 | button Total |
114 | 0x72 | REPURCHASE OF RETURNABLE PACK (not used in Euro-100) |
44 | 0x2C | button Paid out |
46 | 0x2E | button Received on account |
113 | 0x71 | button Password |
45 | 0x2D | button Discount |
61 | 0x3D | button Add-on |
81 | 0x51 | button PLU search (not used in Euro-100) |
86 | 0x56 | VOID FROM SALE BUFFER (not used in Euro-100) |
39 | 0x27 | "PLU price question" button (not used in Euro-100) |
198 | 0xC6 | button Secondary scales (for Euro-2100 and Euro-2300 only) |
Data contains names of PLU categories.
Command number: | 47 |
Data length: | 10*14 |
Byte(s) | Meaning | type | range |
---|---|---|---|
0-13 | Category name (in internal hexadecimal code of ECR) | string | characters |
Data contains names of PLU categories.
Command number: | 47 |
Data length: | 30*20 |
Byte(s) | Meaning | type | range |
---|---|---|---|
0-19 | Category name (in internal hexadecimal code of ECR) | string | characters |
Command number: |
| ||
Data length: | 1 |
Byte | Meaning | type | range |
---|---|---|---|
0 | Not used | BYTE |
Command number: | 60 - programming PLU price |
Data length: | n * 6 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2-5 | DWORD(*) | 4 | PLU price | <0, 99 999 999> |
This command can be used also during opened receipt in cash register. In this case it is possible to program only 100 PLUs.
Command number: | 61 - programming PLU stock |
Data length: | n * 7 |
Bytes | type | length | Meaning | range |
---|---|---|---|---|
0-1 | WORD | 2 | PLU number | <1, MAX PLU> |
2 | BYTE | 1 | Operation type | 0 - add to stock, 1 - subtract from stock |
3-6 | DWORD(3) | 4 | stock value of particular PLU | <0, 999 999 999> |
This command can be used also during opened receipt in cash register. In this case it is possible to program only 100 PLUs.
Data contains text logo that will be printed on the receipt. Printed lines count depends on setting of system flags.
Command number: | 128 - receiving | ||
Data length: |
|
DATA consists of 6 or 9 strings from internal hexadecimal ECR codes (6 or 9 logo lines - depends on ECR type).
Byte(s) | Meaning | type | range |
---|---|---|---|
0-24 | Text logo line (in internal hexadecimal code of ECR) | string | characters |
Particular cash registers use different count of characters per line. This depends on paper width.
Data contains sale values for each VAT level.
Command number: | 133 |
Data length: | 7*68 |
Byte(s) | Meaning | type |
---|---|---|
0-9 | VAT description (text) | string |
10-11 | VAT level rate | WORD(2) |
12-19 | taxable value since last daily report | double(*) |
20-27 | net value since last daily report – only if system flag 1 digit 2 is set – otherwise not used | double(*) |
28-35 | not used | |
36-39 | type of VAT level* | long |
40-47 | not used | |
48-55 | not used | |
56-63 | not used | |
64-67 | not used |
*: If type of VAT level is equal to 1 then level is non-taxable, if is equal to 0 then level is taxable with rate or denied (depends on VAT level rate).
See description of taxes.
Data contains grand total (GT) values.
Command number: | 134 |
Data length: | 24 |
Byte(s) | Meaning | type |
---|---|---|
0-7 | GT value | double(*) |
8-15 | not used | |
16-23 | not used |
Sale values and counters are incremented to daily report since last daily report.
Command number: | 135 - reading daily report |
Data length: | 376 |
DATA items looks as follows:
Byte(s) | Meaning | type |
---|---|---|
0-7 | taxable value | double(*) |
8-11 | number of receipts | long |
12-19 | netto | double(*) |
20-27 | TAX | double(*) |
28-35 | void amount | double(*) |
36-39 | void quantity | long |
40-47 | amount of subtotal void | double(*) |
48-51 | quantity of subtotal void | long |
52-59 | not used (refund amount) | double(*) |
60-63 | not used (refund quantity) | long |
64-71 | RA cash amount | double(*) |
72-75 | RA cash quantity | long |
76-83 | RA cash amount in secondary currency | double(*) |
84-87 | RA cash quantity in secondary currency | long |
88-95 | PO cash amount | double(*) |
96-99 | PO cash quantity | long |
100-107 | PO cash amount in secondary currency | double(*) |
108-111 | PO cash quantity in secondary currency | long |
112-119 | RA check amount | double(*) |
120-123 | RA check quantity | long |
124-131 | not used (RA check amount in secondary currency) | double(*) |
132-135 | not used (RA check quantity in secondary currency) | long |
136-143 | PO check amount | double(*) |
144-147 | PO check quantity | long |
148-155 | not used (PO check amount in secondary currency) | double(*) |
156-159 | not used (PO check quantity in secondary currency) | long |
160-167 | discount amount | double(*) |
168-171 | discount quantity | long |
172-179 | add on amount | double(*) |
180-183 | add on quantity | long |
184-191 | not used (difference of rounding - used for quarter rounding) | double(*) |
192-195 | not used | |
196-203 | not used | |
204-207 | not used | |
208-215 | total sale cash amount | double(*) |
216-219 | total sale cash quantity | long |
220-227 | total sale cash amount in secondary currency | double(*) |
228-231 | total sale cash quantity in secondary currency | long |
232-239 | total sale check amount | double(*) |
240-243 | total sale check quantity | long |
244-251 | not used (total sale check in secondary currency) | double(*) |
252-255 | not used (total sale check quantity in secondary currency) | long |
264-267 | total sale credit amount | double(*) |
264-267 | total sale credit quantity | long |
268-275 | not used | |
276-279 | not used | |
280-287 | cash in drawer | double(*) |
288-295 | cash in drawer in secondary currency | double(*) |
296-303 | check in drawer | double(*) |
304-311 | not used (check in drawer in secondary currency) | double(*) |
312-319 | credit in drawer | double(*) |
320-327 | not used | |
328-335 | bottle sale amount | double(*) |
336-339 | not used (bottle sale quantity) | long |
340-347 | bottle refund amount | double(*) |
348-351 | not used (bottle refund quantity) | long |
352-359 | bottle subtotal void amount | double(*) |
360-363 | bottle subtotal void quantity | long |
364-367 | number of all receipts | long |
368-371 | number of fiscal receipts | long |
372-375 | number of changes of names and tax levels | long |
Command number: | 139 |
Data length: | 6 * 70 |
Byte(s) | Meaning | type |
---|---|---|
0-9 | Cashier name (in internal hexadecimal code of ECR) | string |
10-13 | number of sales since last daily report | long |
14-21 | sale amount since last daily report | double(*) |
22-25 | number of payment by cash in main currency | long |
26-33 | total amount of payments by cash in main currency | double(*) |
34-37 | number of payment by cash in foreign currency | long |
38-45 | total amount of payments by cash in foreign currency | double(*2) |
46-49 | number of payment by check in main currency | long |
50-57 | total amount of payments by check in main currency | double(*) |
58-61 | number of payment by credit in main currency | long |
62-69 | total amount of payments by credit in main currency | double(*) |
Command is used to get count of PLUs sold from ECR memory.
Command number: | 152 |
Data length: | 2 |
DATA contains count of PLU witch were sold since last PLU Z report.
Byte(s) | Meaning | type |
---|---|---|
0-1 | number of PLU-s with non zero sale | WORD |
Command is used to get receipts in binary form, from ECR for processing in PC.
Command number: |
| ||
Data length: | depends on journal length |
Informations are grouped to logical entities.
In this command is used Range Select as LongLength (DWORD) for receipts length in bytes. This length can be obtained from command 164 - Journals data length.
Table 3.3. (Single) receipt structure
count | length | Short description | ||
---|---|---|---|---|
1 | 46 | Head of receipt | ||
n | n * (22 + bar-code length) |
| ||
1 | 2 | Count of voided items (PLU's and returnable packs) in receipt | ||
k | k * (22 + bar-code length) |
| ||
1 | 37 | Financial data for receipt | ||
1 or 0 | 2 | Tax data count for receipt (not included for canceled receipts) | ||
m | m * 13 | Tax records for each non zero tax level (m can be zero ==> block is not used) (not included for canceled receipts) | ||
1 or 0 | 33 | Payments data for receipt (not included for canceled receipts) | ||
1 or 0 | 10 | Extended number of document (this is optional record and can omitted) | ||
1 | 1 | End of record |
Table 3.4. Receipt head structure
Byte(s) | Meaning | type |
---|---|---|
0 | fixed number 25 (0x19) - ID byte of the start of logical block - receipt | BYTE |
1-2 | number of all bytes in particular logical entity | WORD |
3 | receipt type: 0 – sale, 5 – canceled receipt (receipt types 1,2,3,4 are not active in Polish version) | BYTE |
4-15 | date and time form
DDMMYYYYhhmm *
(ASCII number codes) | 12*char |
16-19 | cashier ID number (values 1 – 6) | long |
20-29 | cashier’s name | string |
30-33 | number of actual receipt 1 – 2 147 483 647 | long |
34-37 | fiscal receipt number 1 – 2 147 483 647 (In nonfiscal receipts (canceled receipts, receipts only with returnable packs) and in receipt issued in nonfiscal mode will be always equal to zero.) | long |
38-39 | number of Z report | WORD |
40-43 | short number of document** | long |
44 | ECR number 1 – 99 | BYTE |
45 | count of items (PLU's and returnable packs) in actual receipt | BYTE |
*:meaning of characters is:
DD = day (two numbers)
MM = month (two numbers)
YYYY = year (four numbers)
hh = hour (two numbers)
mm = minute (two numbers)
**: Short document number contains only numbers in range from 0 up to 999 999 999. If the document number has more than 9 numbers (up to 18 numbers) extended number of document is used and short document number value is zero.
Table 3.5. (Single) Item structure
Byte(s) | Meaning | type |
---|---|---|
0 | item type:
| BYTE |
1-2 | number of item in internal database | WORD |
3-6 | quantity of sold item | long(3) |
7-10 | database unit price of item | long(*) |
11-14 | sold unit price of item (different from database price if the user uses open price for sale) | long(*) |
15-20 | total price of item | N6(*) |
21 | bar-code types | BYTE |
depends from type | bar-code information | various |
Table 3.6. Journal bar-code types
number (ID) | description | bar-code length | length in bytes |
---|---|---|---|
0 | none | - | 0 |
1 | programmed bar-code for particular PLU | 18 | 9 |
2 | only enhanced part from 13+5 bar-code | 5 | 3 |
3 | only enhanced part from 13+2 bar-code | 2 | 1 |
4 | full scanned 13+5 bar-code | 18 | 10 |
5 | full scanned 13+2 bar-code | 15 | 8 |
Bar-codes are stored in compressed BCD format therefore are in one byte stored two numbers from bar-code.
Full bar-code (type 1) is stored as type BARCODE (9 bytes, 18 numbers)
Enhanced part from 13+5 bar-code (type 2)
1st byte | 2nd byte | 3rd byte | |||
---|---|---|---|---|---|
1st sufix number | 2nd sufix number | 3rd sufix number | 4th sufix number | 5th sufix number | not used |
Enhanced part from 13+2 bar-code (type 3)
1st byte | |
---|---|
1st sufix number | 2nd sufix number |
Full EAN 13+5 bar-code (type 4)
1st byte | 2nd byte | 3rd byte | 4th byte | ||||
---|---|---|---|---|---|---|---|
not used | 1st number | 2nd number | 3rd number | 4th number | 5th number | 6th number | 7th number |
5th byte | 6th byte | 7th byte | |||
---|---|---|---|---|---|
8th number | 9th number | 10th number | 11th number | 12th number | 13th number |
8th byte | 9th byte | 10th byte | |||
---|---|---|---|---|---|
1st sufix number | 2nd sufix number | 3rd sufix number | 4th sufix number | 5th sufix number | not used |
Full EAN 13+2 bar-code (type 5)
1st byte | 2nd byte | 3rd byte | 4th byte | ||||
---|---|---|---|---|---|---|---|
not used | 1st number | 2nd number | 3rd number | 4th number | 5th number | 6th number | 7th number |
5th byte | 6th byte | 7th byte | |||
---|---|---|---|---|---|
8th number | 9th number | 10th number | 11th number | 12th number | 13th number |
8th byte | |
---|---|
1st sufix number | 2nd sufix number |
Table 3.7. Count of voided items in receipt
Byte(s) | Meaning | type |
---|---|---|
0 | fixed number 8 (ID byte of voided items block) | BYTE |
1 | count of voided items (PLU's and returnable packs) in actual receipt | BYTE |
Each voided item (PLU or returnable pack) item has identical structure as is described in Table 3.5, “(Single) Item structure”.
Table 3.8. Financial data for receipt
Byte(s) | Meaning | type |
---|---|---|
0 | fixed number 5 (ID byte of financial block) | BYTE |
1-6 | total amount of all add-ons of sale | N6(*) |
7-12 | total amount of all discounts of sale | N6(*) |
13-18 | total amount of all void operations of sale | N6(*) |
19-24 | total amount of sale | N6(*) |
25-30 | total sale of returnable packs | N6(*) |
31-36 | total return of returnable packs | N6(*) |
For canceled receipts contains data valid in time immediatelly before canceling of receipt.
Table 3.9. Used VAT levels count
Byte(s) | Meaning | type |
---|---|---|
0 | fixed number 6 (ID byte of TAX block) | BYTE |
1 | count of non-zero VAT levels in receipt (0 – 7) | BYTE |
Table 3.10. (Single) VAT level structure
Byte(s) | Meaning | type |
---|---|---|
0 | ID number of VAT level | BYTE |
1-6 | taxable amount | N6(*) |
7-12 | tax value | N6(*) |
Table 3.11. Payments data for receipt
Byte(s) | Meaning | type |
---|---|---|
0 | fixed number 9 (ID byte of Payments data block) | BYTE |
1-6 | total sum paid by cash | N6(*) |
7-12 | total sum paid by check | N6(*) |
13-18 | total sum paid by credit | N6(*) |
19-24 | total sum paid by cash in second currency (used only in Euro phase 1, 2 and 3) | N6(*2) |
25-32 | Conversion rate between main and foreign currency (used only in Euro phase 1, 2 and 3) | double |
Table 3.12. Extended number of document
Byte(s) | Meaning | type |
---|---|---|
0 | fixed number 7 (ID byte of Extended number of document block) | BYTE |
1-9 | Extended receipt number in BCD format (identical format like for bar-code storing) | BARCODE |
This is optional record. If this record is not used then the exteded receipt number is not used. If this record is used is valid only this value and not the value from header.
Command is used to get length of journals stored in ECR.
Command number: | 164 |
Data length: | 8 |
Byte(s) | Meaning | type |
---|---|---|
0-3 | PC journal size in bytes | long |
4-7 | not used | long |
Data contains sale values for each returnable pack.
Command number: | 166 |
Data length: | 50*44 |
Data contains sale values for each returnable pack.
Command number: | 166 |
Data length: | 50*52 |
Data contains sale values for each returnable pack.
Command number: | 166 |
Data length: | 50*44 |
Data contains sale values for each returnable pack.
Command number: | 166 |
Data length: | 50*54 |
Command number: | 170 |
Data length: | 131072 (128kB) |
Data contains whole content of fiscal memory.
Data contains names of PLU categories and sale values.
Command number: | 175 |
Data length: | 10*30 |
Data contains names of PLU categories and sale values.
Command number: | 175 |
Data length: | 30*36 |
Data contains sale values for each hour.
Command number: |
| ||
Data length: | 24 * 12 (288) |
Byte(s) | Meaning | type |
---|---|---|
0-3 | count of sales (bills) | int |
4-11 | sale value | double(*) |
Command is used to get length of single receipt stored in ECR.
Command number: | 184 |
Data length: | 4 |
In this command is used ID Select (DWORD) for setting of receipt number.
Zero length means that receipt with given ID was not found in journal.
Byte(s) | Meaning | type |
---|---|---|
0-3 | single receipt length in bytes (part of binary (PC) journal) | long |
Command is used to get single receipt in binary form, from ECR for processing in PC.
Command number: | 185 - Read single receipts (PC journal) (X report) |
Data length: | depends on receipt length |
In this command is used Range Select as LongLength (DWORD) for receipts length in bytes. Command 184 - Receive single receipt length must be executed before this command to select receipt number and to receive length of the receipt.
Data description is described in Section 3.28, “Read receipts (PC journal)”.
Command is used to get information about current ECR.
Command number: | 255 |
Data length: | 84 |
Byte(s) | Meaning | type |
---|---|---|
0-2 | country identifier by ISO 3166 (two bytes in ASCII terminated by zero) | string |
3-12 | ECR name (9 bytes in ASCII terminated by zero) | string |
13-15 | type of printer (“T”, “TX”, “TE”, “M”) (two bytes in ASCII terminated by zero) | string |
16-19 | type of displays (e. g. “A/S”, it means alphanumerical (A) display for cashier and segment (S) display for customer ) (three bytes in ASCII terminated by zero) | string |
20-31 | fiscal or non-fiscal country (eleven bytes in ASCII terminated by zero) | string |
32-33 | firmware version number - last three digits means subversion, (e. g. If software version is 2.011, number 2011 is sent) | int |
34-35 | communication protocol version number - last two digits means subversion (e. g. If communication protocol version is 3.05, number 305 is send) | int |
36-37 | number of cashiers | int |
38-39 | amount of PLU | int |
40-41 | amount of departments | int |
42-43 | amount of tax levels | int |
44-45 | PLU text size | int |
46-47 | department text size | int |
48-49 | bar code size | int |
50-51 | electronic journal support (if value is 1 el. journal is implemented, if value is 0 el. journal is not implemented) | int |
52-55 | Size of journal in bytes. – Not used in actual versions. | DWORD |
56-59 | Free size for journal in bytes. – Not used in actual versions. | DWORD |
60-83 | reserved – not used |
Table of Contents
Table 4.1. Supported convert command (send to ECR)
command | description | Euro-500 Handy | Euro Smart, Euro Smart Plus | Euro-2100 | Euro-2300 | Euro-100T | Euro-200TX | |
---|---|---|---|---|---|---|---|---|
T | TX | |||||||
1 | System flags | x | x | x | x | x | x | x |
2 | Cashier names | x | x | x | x | x | x | x |
12 | Erase PLU sale data | x | x | x | x | x | x | x |
17 | Secondary currency exchange rate | x | x | x | x | x | x | x |
21 | Extended flags | - | - | - | x | x | x | x |
29 | PLU without stock state (safety) | x | x | x | x | x | x | x |
30 | PLU with stock state (safety) | x | x | x | x | x | - | x |
33 | Erase receipts (PC journal) | - | - | - | - | x | - | - |
38 | Programming returnable packs prices | x | x | x | x | x | x | x |
39 | EAN-13 bar-codes behavior parameters programming | x | x | x | x | x | x | x |
40 | Send message | - | - | - | - | - | x | x |
46 | Programmable keys | - | - | - | x | x | x | x |
47 | PLU categories | - | - | - | - | - | x | x |
51 | Hourly report (daily) clearing | - | - | - | x | x | x | x |
52 | Hourly report (periodical) clearing | - | - | - | x | x | x | x |
60 | Programming of PLU price | - | - | - | - | x | - | - |
61 | Programming of PLU stock | - | - | - | - | x | - | - |
Table 4.2. Supported convert command (receive from ECR)
Taxes are specific for each country. In the next table will be specified how are they interpreted in text form.
Table 4.3. Text interpretation of VAT levels
Acronym | Country/Version | VAT level | ||||||
---|---|---|---|---|---|---|---|---|
non taxable | minimal | maximal | special | |||||
(none) | Generic version | 0 | 1 | 6 | -- | |||
SK | Slovakia | |||||||
CZ | Czech republic (non fiscal law) | |||||||
EN/GB | Generic non fiscal law version | |||||||
ENf/GBf | Generic fiscal law version | |||||||
SW | old Swedish protocol | |||||||
FI | old Finish protocol | |||||||
DE | Germany | |||||||
AT | Austria | |||||||
DK | Denmark | |||||||
LV | Latvia | |||||||
CZf | Czech republic (fiscal law) | 0 | 1 | 5 | -- | |||
RO | Romania | 0 | 1 | 4 | -- | |||
GR | Greece | |||||||
HU | Hungary | 0 - TAM, 4 - AJT | 1 | 3 (programmable) | 0 - TAM, 4 - AJT | |||
PL | Poland | depends from TAX programming | 1 | 7 | 0 - disabled sale | |||
MK | Macedonia | -- | 1 | 5 | -- | |||
RS | Serbia | -- | 1 | 9 | -- | |||
LT | Lithuania | 0 | 1 | 4 |
| |||
CA | Canada | 0 | 1 | 6 |
| |||
ME | Monte Negro | 0 | 1 | 6 | 8 – not assigned |
Data contains text logo that will be printed on the receipt.
Command number: |
| ||
Lines count: | depends on ECR type |
The logo that will be printed on receipt. File contains text logo lines. Characters are in ASCII form.
Some cash register use only first characters (see table below) of the logo line.
New text logo will not be accepted when there are illegal characters.
Command number: | 1 - programming, 129 - receiving |
Lines count: | 12 |
System flag setting in ECR. File consists of 12 lines. Lines set system flags of ECR. Not all flags have to be used in particular ECR types, or flags can be used in turned-order (see ECR user’s guide). Particular digits in line are not separated with separator. Flag digits meaning (warning, digit order is not equal to programming order of system flags in ECR):
1st line
1st digit: number of decimal places for price and tax displaying (0 – 3)
2nd digit: number of decimal places for price rounding (0 – 3)
3rd digit: rounding 0 – from 5 up, 1 – up, 2 – down, 3 – quarter rounding
4th digit: number of decimal places for tax rounding (0 – 3)
5th digit: number of decimal places for total sale rounding (0 – 3)
6th digit: type of tax counting: 0 – PLU and DPT prices include tax, 1 – price without tax
2nd line
1st digit: number of decimal places for price and tax displaying (0 – 3)
2nd digit: number of free lines between receipts (0 – 6)
3rd digit: number of logo lines (0 – 6)
4th digit: multiple price , if 0
then m1/m2
, if 1 then m1*m2
5th digit: date form, 0 – day month year, 1 – month day year
6th digit: 0 – not to print / 1 – print tax data on receipt
3rd line
digits 1-6: receipt number (1 – 999999) – it is ignored by transmission to ECR
digits 7-8: ECR number (1 – 99)
9th digit: reset: 0 – resets receipt number after daily report, 1 – after monthly report – ignored
4th line
1st digit: obligation to press SUBTOTAL before TOTAL to finish sale: 0 – no, 1 – yes
2nd digit: ST printing on receipt: 0 – no, 1 – yes
3rd digit: obligation to enter credit card number by credit payment: 0 – no, 1 – yes
4th digit: cashier has to enter paid value accepted from customer: 0 – no, 1 – yes
5th line (for Euro-500T/TX Handy, Euro-Smart, Euro-Smart Plus, Euro-2100 and Euro-2300)
1st digit: terminal character for bar code scanner (0 – CR+LF, 1 – CR, 2 – LF)
2nd digit: communication speed of scanner (0 – 1200, 1 – 2400, 2 – 4800, 3 – 9600, 4 –19200)
3rd digit: communication speed of PC serial port (0 – 9600, 1 – 38400)
4th digit: type of scales (0 – CAS Morcan, Martes T, 1 – EURO scales, Martes M, 3 – not used, 4 – not used)
5th digit: PC ONLINE (0 – PC -> ECR, 1 – PC -> ECR as well as ECR -> PC)
6th digit: protocol for payment terminal: 0 - none, 1 - Bull Amadeo, 2 - PinPad - KeyCorp (not used)
5th line (for cash registers Euro-100, Euro-200)
1st item: Configuration of communication with PC
1st digit: Communication port range depends on ECR type. See binary description for detailed informations. Port 0 means that communication is disabled. Numbers from 1 to 4 means RS-232 protocol on communication ports COM1 to COM4. Value 5 means USB port and value 6 means RS-485 protocol on COM2.
2nd digit: communication speed of scanner (0 – 9600, 1 – 38400)
3rd digit: PC ONLINE mode (0 – PC -> ECR, 1 – PC -> ECR as well as ECR -> PC)
2nd item: Configuration of communication with bar-code scanner
1st digit: Communication port range depends on ECR type. See binary description for detailed informations. Port 0 means that communication is disabled. Numbers from 1 to 4 are communication ports COM1 to COM4.
2nd digit: communication speed of scanner (0 – 1200, 1 – 2400, 2 – 4800, 3 – 9600, 4 –19200)
3rd digit: terminal character for bar code scanner (0 – CR+LF, 1 – CR, 2 – LF)
3rd item: Configuration of communication with primary scales
1st digit: Communication port range depends on ECR type. See binary description for detailed informations. Port 0 means that communication is disabled. Numbers from 1 to 4 are communication ports COM1 to COM4.
2nd digit: type of scales (see user manual for supported scales)
4th item: Configuration of communication with secondary scales
1st digit: Communication port range depends on ECR type. See binary description for detailed informations. Port 0 means that communication is disabled. Numbers from 1 to 4 are communication ports COM1 to COM4.
2nd digit: type of scales (see user manual for supported scales)
6th line
1st digit: printing mode for battery, (0 – normal mode, 1 – economic mode, 2 – fast) (not used in Euro-2300, Euro-100 and Euro-200)
2nd digit: printing mode for adapter, (0 – normal mode, 1 – economic mode, 2 – fast) (not used in Euro-2300, Euro-100 and Euro-200)
3rd digit: printing graphic logo at the end of receipt, (0 – not printed, 1 – printed) (not used)
4th digit font size (0 – large font (height 2,5 mm)) (not used)
5th digit standby mode: 0 - none, 1 - after 1minute, 2 - after 5 minutes, 3 - after 10 minutes, 4 - after 15 minutes.
7th line: (four digits) value of percentage add-on always on two decimal places without decimal point (0 – 9999).
8th line: (two digits) limit of percentage add-on for entering through ECR keyboard (0 – 99)
9th line: (four digits) value of percentage discount always on two decimal places without decimal point (0 – 9999)
10th line: (two digits) limit of percentage discount for entering through ECR keyboard (0 – 99)
11th line: (six digits) time (hhmmss) (hh = hour, mm = minutes, ss = seconds)
12th line: (six digits) date (always in form DDMMYY (independent from digit 5 in second line)) (DD = day, MM = month, YY = year)
Command number: | 2 - programming, 130 - receiving |
Lines count: | for each cahier one line |
File consists of 6 lines per maximal 10 characters – names of 6 cashiers.
Data contains all information about PLU.
Command number: |
| |||
Lines count: | depends on transmitted PLU count |
Not all operation are supported in all ECR's.
Each line contains data about one PLU. Each item is separated by "ItemSeparator".
1st item: PLU number (Range depends on particular ECR type).
2nd item: PLU name (accepting only first 14 characters).
3rd item: PLU price*1 – number of decimal places according to setting of digit 6 system flag 1 of ECR,.
4th item: PLU flags: (see PLU flags)
5th item: bar code (13 digits).
6th item: stock*2 on three decimal places
*1: entering price 1500 will be interpreted as price 15.00 in cash register (decimal point can be included but is ignored, digits are valid only) if 6th digit of the 1st system flag in ECR is set to value 2.
Entered number 15.0 is transmitted as value 150 (!!!only digits are valid!!!) and will be interpreted in depency on the setting of 6th digit of the 1st system flag in ECR. If this flag is set to 2, then the price in cash register will be 1.50.
*2: Value of transmitted stock is in range 1 - 999999999. If transmitted stock is out of range then only first 9 digits are used (in case plus sign or minus sign is used, then only first 8 digits are accepted). To change stock in ECR insert plus or minus sign before transmitted stock value, then transmitted stock value is added (deducted) to stock value of particular PLU in ECR. Stock value in ECR will not change in case new stock value should be besides allowed range.
Write transmitted value as –0 in case you do not want to change stock value in ECR.
Position of decimal point is ignored like it is by price.
Data all information about PLU sales.
Command number: |
| ||
Lines count: | depends on transmitted PLU count |
Not all operation are supported in all ECR's.
Each line contains data about one PLU. Each item is separated by "ItemSeparator".
1st item: PLU number (Range depends on particular ECR type).
2nd item: PLU name.
3rd item: PLU price*1 – number of decimal places according to setting of digit 6 system flag 1 of ECR,.
4th item: PLU flags are the same as in PLU structure:
5th item: bar code.
6th item: sale value
7th item: sold quantity
8th item: stock
Items are not separated by any separator.
1st digit: descriptive PLU: 0 – no, 1 – yes
2nd digit: one PLU sale: 0 – no, 1 – yes
3rd digit: stock list on report: 0 – no, 1 – yes
4th digit: sale in case of negative stock: 0 – no, 1 – yes
5th digit: possibility of fragmentary quantum sale: 0 – no, 1 – yes
6th digit: unit sale assignment (1 – 8)
7th digit: sale possibility: 0 – forbidden, 1 – open, 2 – preset, 3 – open and preset
8th digit: price limits (1 – 8)
9th digit: VAT level assignment
digits 10 and 11: linked returnable pack – two digits (00 – 50) where "00" means no linked returnable packet, 1-50 – this returnable pack is linked.
digits 12 and 13 are used only in Euro-100 and Euro-200: PLU category – two digits (00 – 10 for Euro-100 or 00 – 30 for Euro-200)
Command number: | 12 |
Lines count: | 1 |
In this commands is used Range
select of type Start
and Length
. Start
means first PLU number (start counting from 0
). Length
means count of PLUs witch sales data should be deleted.
Data contains 1 line with one value. This value is ignored but must be given.
Data contains secondary currency exchange rate.
Command number: | 17 - programming, 145 - receiving |
Lines count: | 1 |
File contains 1 line. It is one decimal number representing secondary currency rate (see ECR user’s guide)
Rate has to contain decimal point.
Extended flag setting.
Command number: | 21 - programming, 149 - receiving |
Lines count: | 1 |
File contains two lines with setting of particular extended flags for bar-code and secondary scales. Each item is separated by "ItemSeparator".
1st line: bar-code settings
1st item: look-up of 18-digit bar-codes: 0 – only 18 – digits, 1 – also 13+5 – digits.
2nd item: look-up of 15-digit bar-codes: 0 – only 15 – digits, 1 – also 13+2 – digits.
3rd item: printing of 13+5-digit bar-codes: 0 – do not print, 1 – extension only, 2 – whole.
4th item: printing of 13+2-digit bar-codes: 0 – do not print, 1 – extension only, 2 – whole
5th item: print 18-digit bar-codes: 0 – no, 1 – yes.
2nd line: secondary scales type (see user manual for types description) (used only for Euro-2100 and Euro-2300)
Functions are used to delete journal from memory of ECR.
Command number: | 33 - Clearing data journal in ECR memory |
Lines count: | 1 |
Content of line is not used.
Data contains prices of returnable packs.
Command number: | 38 |
Lines count: | 50 |
Each line contains one price.
Command number: | 39 - programming, 167 - receiving |
Lines count: | 10 |
Each line describes structure and behavior of EAN13 bar-codes started by prefix “20”, “21”,..., “29”.
1st item: length of array with PLU ID number (4, 5 *)
2nd item: length of array with inner checksum (0, 1 *)
3rd item: length of array with quantity, weight or price (4, 5, 6 *)
4th item: type of bar-code – specifies how will be handled bar-codes with this prefix (0 – unused bar code, 1 – quantity bar code, 2 – price bar code)
*: Sum of first three item values must be 10.
Command is used to send a message to cashier.
Command number: | 40 - Send cashier message |
Lines count: | 1 or more |
File consists of text message for cashier (maximal 23 characters per line).
Data contains settings for programmable keybord.
Command number: | 46 - programming, 174 - receiving |
Lines count: | depends on count of programable keys for particular cash register |
Each line contains programming of one programable key. It is possible to set a name and 16 scan codes for each key.
1. item: key name (max. 10 characters).
items 2 to 17: function keys codes (all codes are described in binary part of data description)
Data contains names of PLU categories.
Command number: | 47 | ||
Lines count: |
|
Each line contains name of one PLU category.
Command number: |
| ||
Lines count: | 1 |
Data contains 1 line with one value. This value is ignored but must be given.
Data contains new prices values for PLU's.
Command number: | 60 |
Lines count: | depends on transmitted PLU count |
Each line contains price change for one PLU. Each item is separated by "ItemSeparator".
1st item: PLU number (Range depends on particular ECR type).
2nd item: PLU price*1
*1: entering price 1500 will be interpreted as price 15.00 in cash register (decimal point can be included but is ignored, digits are valid only) if 6th digit of the 1st system flag in ECR is set to value 2.
Entered number 15.0 is transmitted as value 150 (!!!only digits are valid!!!) and will be interpreted in depency on the setting of 6th digit of the 1st system flag in ECR. If this flag is set to 2, then the price in cash register will be 1.50.
Data contains stock changes for PLU's.
Command number: | 61 |
Lines count: | depends on transmitted PLU count |
Each line contains stock change values for one PLU. Each item is separated by "ItemSeparator".
1st item: PLU number (Range depends on particular ECR type).
2nd item: Operation: 0 - Add to stock, 1 - remove from stock.
3rd item: stock*2 on three decimal places
*2: Value of transmitted stock is in range 1 - 999999999. If transmitted stock is out of range then only first 9 digits are used (in case plus sign or minus sign is used, then only first 8 digits are accepted). To change stock in ECR insert plus or minus sign before transmitted stock value, then transmitted stock value is added (deducted) to stock value of particular PLU in ECR. Stock value in ECR will not change in case new stock value should be besides allowed range.
Write transmitted value as –0 in case you do not want to change stock value in ECR.
Position of decimal point is ignored like it is by price.
Data contains sale values for each VAT level.
Command number: | 133 |
Lines count: | 7 |
1st item: Type of VAT level. If type of VAT level is equal to 1 then level is non-taxable, if is equal to 0 then level is taxable with rate or denied (depends on VAT level rate)
2nd item: tax rate value (0 – 10000) – always for two decimal places without decimal point (comma)
VAT level is forbidden if tax rate value is 10000, (not possible to count assigned PLU).
3rd item: taxable value since last daily report
4th item: value without tax (net) since last daily report
5th item: tax value since last daily report
6th item: taxable value since last monthly report
7th item: value without tax (net) since last monthly report
8th item: tax value since last monthly report
Command number: | 134 |
Lines count: | 1 (fiscal version) |
Text data contains one line with GT value.
Sale values and counters are incremented to daily/periodical report since last daily/periodical report.
Command number: | 135 - reading daily report |
Lines count: | 36 |
Both files have the same form. Two items are separated with ItemSeparator in each line. First item defines quantity and second one defines sale value. Empty place (gap) at the line means that particular item has no meaning. File items meaning:
1st line: total sale
2nd line: net
3rd line: tax
4th line: void
5th line: void of subtotal
6th line: refund
7th line: received cash on account
8th line: received cash on account in secondary currency
9th line: paid out cash
10th line: paid out cash in secondary currency
11th line: received check on account
12th line: not used (received check on account in secondary currency)
13th line: paid out check
14th line: not used (paid out check in secondary currency)
15th line: discounts
16th line: add-ons
17th line: not used (rounding diference)
18th line: not used
19th line: cash sale
20th line: cash sale in secondary currency
21th line: check sale
22th line: not used (check sale in secondary currency)
23th line: credit sale
24th line: not used
25th line: cash in drawer
26th line: cash in drawer in secondary currency
27th line: checks in drawer
28th line: not used (check in drawer in secondary currency)
29th line: credit in drawer
30th line: not used
31th line: bottles
32th line: returnable bottles
33th line: void of bottle subtotal
34th line: number of all receipts
35th line: number of fiscal receipts
36th line: number of changes of names and tax levels
Data contains cashier names and sales report.
Command number: | 139 - cashier sales report |
Lines count: | for each cahier one line |
Each line contains data about one cashier.
1st item: programmed cashier’s name
2nd item: number of sales since last daily report
3rd item: sale value since last daily report
4th item: number of payment by cash in main currency
5th item: total amount of payments by cash in main currency
6th item: number of payment by cash in foreign currency
7th item: total amount of payments by cash in foreign currency
8th item: number of payment by check in main currency
9th item: total amount of payments by check in main currency
10th item: number of payment by credit in main currency
11th item: total amount of payments by credit in main currency
Command is used to get count of PLUs sold from ECR memory.
Command number: | 152 |
Lines count: | 1 |
DATA contains count of PLU which were sold since last PLU Z report was performed.
Command is used to get receipts in binary form, from ECR for processing in PC.
Command number: |
| ||
Lines count: | depends from journal length |
File consists of several line blocks. Each line block describes one receipt of registration mode. One block contains first info line and others are data lines.
In this command is used Range Select as LongLength (DWORD) for receipts length in bytes. This length can be obtained from command 164 - Journals data length.
Description of first info line in items.
1st item: receipt type: 0 – sale, 5 – subtotal void
2nd item: date and time: string DDMMYYYYhhmm*1
3rd item: cashier’s ID
4th item: cashier’s name
5th item: number of actual receipt (in range: 1 – 2 147 483 647)
6th item: iscal receipt number (in range: 1 – 2 147 483 647) (In receipt issued in nonfiscal mode or in canceled receipt will be always equal to zero.)
7th item: number of Z report
8th item: short number of document*2 (1 – 999 999 999)
9th item: ECR number (1 – 99)
10th item: number of items (PLU's and returnable packs) sale: (number of next lines describes items)
*1: meaning of characters is:
DD = day (two numbers)
MM = month (two numbers)
YYYY = year (four numbers)
hh = hour (two numbers)
mm = minute (two numbers)
*2: Short document number contains only numbers in range from 0 up to 999 999 999. If the document number has more than 9 numbers (up to 18 numbers) extended number of document is used and short document number value is zero.
Item (PLU or returnable pack) sale data (each item on one line).
1st item: type of sale: 10 – sale through PLU, 34 – sold retunable pack, 35 – refund of retunable pack
2nd item: PLU (retunable pack) number
3rd item: quantity of sold item
4th item: database unit price of item
4th item: sold unit price of item (different from database price if the user uses open price for sale)
6th item: total price of item
7th item: bar-code type: 0 – no bar-code, 1 – programmed, 2 – extension 13+5, 3 – extension 13+5, 4 – codes 13+5, 5 – codes 13+2
8th item: nothing / bar-code / extension – depending on the bar-code type
9th item: nothing / extension – depending on the bar-code type
“nothing” means that the given data is not present in its row (there is nothing there, not even an empty string between separators nor a separator)
Count of voided items (PLU's and returnable packs) in receipt.
1st item: ID = 18
2nd item: number of voided items (PLU's and returnable packs) (number of next lines describes items)
Particular lines with voided PLU's.
Each voided item has identical structure as is described in Item (PLU or returnable pack) sale data (each item on one line).
Financial data for receipt. Total sale sum, discounts, add-ons and void applied at receipt line, retunable pack sale and refund.
1st item: ID byte: 15
2nd item: total amount of all add-ons of sale
3rd item: total amount of all discounts of sale
4th item: total amount of all void operations of sale
5th item: total amount of sale
6th item: total sale of returnable packs
7th item: total return of returnable packs
For canceled receipts contains data valid in time immediatelly before canceling of receipt.
Information about stored VAT levels line.
1st item: ID byte: 16
2nd item: number of used VAT levels (0 – 7)
Particular lines with tax information.
1st item: VAT level + 20
2nd item: taxable value of particular VAT level
3rd item: tax in particular VAT level
Payments data for receipt.
1st item: ID byte: 19
2nd item: total sum paid by cash
3rd item: total sum paid by check
4th item: total sum paid by credit
5th item: total sum paid by cash in second currency (used only in Euro phase 1, 2 and 3)
6th item: Conversion rate between main and foreign currency (used only in Euro phase 1, 2 and 3)
Extended number of document line.
1st item: ID byte: 17
2nd item: Extended receipt number.
This is optional record. If this record is not used then the exteded receipt number is not used. If this record is used is valid only this value and not the value from header.
Command is used to get length of journals stored in ECR.
Command number: | 164 |
Lines count: | 2 |
1st line: binary (PC) journal size in bytes
2nd line: not used
Data contains sale values for each returnable pack.
Command number: | 166 |
Lines count: | 50 |
1st item: description text
2nd item: returnable pack price
3rd item: total sale
4th item: number of sales
Data contains names of PLU categories and sale values.
Command number: | 132 | ||
Data length: |
|
Each line contains data about one PLU category. Each item is separated by "ItemSeparator".
1st item: Category name.
2nd item: sold quantity since last daily report
3rd item: sale value since last daily report
Command number: |
| ||
Lines count: | 24 |
Each line contains data fot one hour interval. Item are separated by "ItemSeparator".
1st item: count of sales (bills)
2nd item: sale value
Command is used to get length of single receipt stored in ECR.
Command number: | 184 |
Lines count: | 1 |
In this command is used ID Select (DWORD) for setting of receipt number.
Data contains only one line with single receipt length in bytes (part of binary (PC) journal).
Zero length means that receipt with given ID was not found in journal.
Command is used to get single receipt in binary form, from ECR for processing in PC.
Command number: | 185 - Read single receipts (PC journal) (X report) |
Lines count: | depends on receipt length |
File consists of several line blocks. Each line block describes one receipt of registration mode. One block contains first info line and others are data lines.
In this command is used Range Select as LongLength (DWORD) for receipts length in bytes. Command 184 - Receive single receipt length must be executed before this command to select receipt number and to receive length of the receipt.
Data description is described in Section 4.24, “Read receipts (PC journal)”.
Command is used to get information about connected ECR.
Command number: | 255 |
Lines count: | 15 |
1st line: country identifier by ISO 3166
2nd line: ECR name
3rd line: type of printer (“T”, “TX”, “TE”, “M”)
4th line: type of displays (e. g. “A/S”, it means alphanumerical (A) display for cashier and segment (S) display for customer)
5th line: fiscal or non-fiscal country (string in english)
6th line: software version number - last three digits means subversion. e. g.: number 2011 means software version is 2.011.
7th line: communication protocol version number - last two digits means subversion. e. g.: number 305 means protocol version is 3.05.
8th line: count of cashiers
9th line: amount of PLU
10th line: amount of departments
11th line: amount of tax levels
12th line: PLU text size
13th line: department text size
14th line: bar code size
15th line: electronic journal support (if value is 1 el. Journal is implemented, if value is 0 el. Journal is not implemented)
16th line: journal length informations (not used in actual versions)
1st item: Size of journal in bytes. – Not used in actual versions.
2nd item: Free size for journal in bytes. – Not used in actual versions.
Bar-code = EAN.
For data type see types definition.
Binary form of data means data that are not readable by humans. It is the form of data that is used by computers to store numerical data (and strings) for processing. In most cases no data transformation is needed to process data stored in binary form. Needed is only description / meaning of each data position.
Binary journal is sometimes used as term for PC processing journal (see PC journal).
see types definition.
see types definition.
see types definition.
Electronic journal is used as symbol for non tactile journal. It can be the PC journal (in most cases is means this one) or Text journal.
see types definition.
see types definition.
see types definition.
Receipts stored in binary form (not human readable). Receipts are separated in logical blocks (its is possible to separate every stored purchase from whole block data). It is possible to use data from this journal to post-processing sale data (make hour reports, ....).
see Text journal
see PC journal
see types definition.
Human readable form of data. This form is also used by some application to import/export data from/to other programs.
Text journal is only a copy of journal tape in ECR. This journal is human readable. No direct post processing is possible.
see types definition.