Протокол на обмен с кaсов aпaрaт Zeka в режим ON-LINE

Софтуер за откриване и разпознаване на устройства произведени от ТРЕМОЛ

Общо описние

Режима представлява ON-LINE комуникация с персонален компютър, при която продажбите се извършват от касовия апарат и се администрират от компютъра. Касовия апарат запазва своите функции в отчетните режими, като единствено в режим регистрация (продажби) изисква постоянна връзка с компютъра. Всяка една операция в този режим се докладва на компютъра. При продажби на артикули или подгрупи, касовия апарат получава от компютъра необходимите данни (име цена и т.н.). За да работят касовите апарати в ON-LINE режим е необходимо в режим "програмиране" да е указан режима (П10=1, П11=0). Режим ON-LINE може да бъде използван за създаване на мрежа от вида - много касови апарати един компютър.

Модели поддържащи протокола

Zeka 02, Zeka 02-E, Zeka M02, Zeka M02-E

Описание на протокола

Параметри на връзката:

Baud rate 9600 bps, 8 bits, no parity 

Формат на съобщенията:

<маркер><номер на КА><команда><информация><crc><LF>

Описанието на отделните полета, обозначени между знаците < и > е показано в таблицата:

 ПолеБрой байтаСтойност 
 маркер1Старт на съобщението – винаги 0xАА
номер на КА6ASCII ('nnnnnn') сериен номер на касовия апарат
команда1'a'..'z' команда
информация?променлива дължина символи в обхвата 0x20 .. 0x8F
crc2 аритметична сума, включително маркера, образувана по следния начин: сума от всички байтове на съобщението - резултата е байт от вида 0xHL, който се преобразува като 0x3H, 0x3L.
LF1 Край на съобщението - винаги - 0x0A 

Формат на квитанциите:

<тип><номер на КА><crc><LF>

Описанието на отделните полета, обозначени между знаците < и > е показано в таблицата:

 ПолеБрой байтаСтойност 
тип1Тип на квитанция – 0x06 = ACK (положителна), 0x15 = NACK (отрицателна), 0x0Е = RETRY (изисква повторение на последната изпратена команда)
номер на КА6ASCII ('nnnnnn') сериен номер на касовия апарат
crc2
аритметична сума, включително маркера, образувана по следния начин: сума от всички байтове на съобщението - резултата е байт от вида 0xHL, който се преобразува като 0x3H, 0x3L.
LF1

Край на съобщението - винаги - 0x0A

Последователност на комуникацията:

Касов апарат:Компютър:
Съобщение "въпрос" -------> 
 <-----ACK
<-----Съобщение "отговор"
ACK -------> 

Активна страна в комуникациите е касовия апарат. При липса на квитанция от компютъра, едно и също съобщение се изпраща отново след определено време timeout. Този процес продължава до получаване на квитанция ACK от компютъра. През това време касовия апарат е блокиран, а в ляво на дисплея се изписва "r"

Описание на команди и информация

Съобщения "уведомяващи" компютъра съобщения изпращани от касата:

Вход/изход на оператор:

 <f/o><номер><име>

Полета:

f/o1 байт команда - 'f' = вход на оператор, 'о' = изход на оператор
номер1 байт ASCII номер '1' до '9' на оператор 
име12 байта име на оператор 

Отговор от компютъра: квитанция (тип ACK, NACK или RETRY)

Въведени/изведени суми от текущия оператор:

<k><+/-><сума><тип плащане><десетична точка><номер на бон>

Полета:

 k1 байт команда - 'k'
 +/-1 байт тип на командата - '+' = въведена сума, '-' = изведена сума 
сума8 байта сума (без десетичната точка) ASCII формат
тип плашане
1 байт тип на плащане - ASCII номер '0' до '4'
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'
номер на бон5 байта номер на бон в ASCII формат (примерно "12345")

Отговор от компютъра: квитанция (тип ACK, NACK или RETRY)

Извършена отстъпка/надбавка върху последната продажба:

<m><+/-><сума><данъчна група><десетична точка><подгрупа>

Полета:

 m1 байт команда - 'm'
 +/-1 байт тип на командата - '+' = надбавка, '-' = отстъпка
сума8 байта сума (без десетичната точка) ASCII формат
данъчна група1 байт данъчна група - ASCII номер '0' до '7'
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'
подгрупа1 байт номер на подгрупа в ASCII номер '0' до '9'

Отговор от компютъра: квитанция (тип ACK, NACK или RETRY)

Анулиране на отстъпка/надбавка:

<u><+/-><сума><данъчна група><десетична точка><подгрупа>

Полета:

 u1 байт команда - 'u'
 +/-1 байт тип на командата - '+' = анулиране на надбавка, '-' = анулиране на отстъпка
сума8 байта сума (без десетичната точка) ASCII формат
данъчна група1 байт данъчна група - ASCII номер '0' до '7'
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'
подгрупа1 байт номер на подгрупа в ASCII номер '0' до '9'

Отговор от компютъра: квитанция (тип ACK, NACK или RETRY)

Продажба в подгрупа:

<s><подгрупа><данъчна група><количество><цена><десетична точка>

Полета:

 s1 байт команда - 's'
подгрупа1 байт номер на подгрупа в ASCII номер '0' до '9'
данъчна група1 байт данъчна група - ASCII номер '0' до '7'
количество
9 байта номер количество ASCII формат без десетична точка (десетичната точка е фиксирана на третия знак) - примерно "123456789" => количеството е 123456.789)
цена8 байта цена (без десетичната точка) ASCII формат
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'

Отговор от компютъра: квитанция (тип ACK, NACK или RETRY)

Анулиране на продажба в подгрупа:

<n><подгрупа><данъчна група><количество><цена><десетична точка>

Полета:

 n1 байт команда - 'n'
подгрупа1 байт номер на подгрупа в ASCII номер '0' до '9'
данъчна група1 байт данъчна група - ASCII номер '0' до '7'
количество
9 байта номер количество ASCII формат без десетична точка (десетичната точка е фиксирана на третия знак) - примерно "123456789" => количеството е 123456.789)
цена8 байта цена (без десетичната точка) ASCII формат
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'

Отговор от компютъра: квитанция (тип ACK, NACK или RETRY)

Съобщения изискващи отговор от компютъра

Заявка за продажба на артикул:

<b><баркод><номер на артикул><количество>

Полета:

 b1 байт команда - 'b'
баркод
12 байта баркод на артикула
номер на артикул5 байта номер на артикул ASCII формат - примерно "00123"
количество
9 байта номер количество ASCII формат без десетична точка (десетичната точка е фиксирана на третия знак) - примерно "123456789" => количеството е 123456.789)

Отговор от компютъра:

<p><номер на артикул><цена><име><данъчна група><арт.група><подгрупа><десетична точка>

или при грешка

<е><номер>

Полета:

p
1 байт команда - 'p'
номер на артикул5 байта номер на артикул ASCII формат - примерно "00123"
цена8 байта цена (без десетичната точка) ASCII формат
име12 байта име на артикул
данъчна група1 байт данъчна група - ASCII номер '0' до '7'
артикулна група1 байт артикулна група - ASCII номер '0' до '9'
подгрупа1 байт номер на подгрупа в ASCII номер '0' до '9'
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'

или при грешка

Полета:

e
1 байт команда - 'e'
номер
1 байт номер на грешката ASCII номер - '1' = не е намерен такъв артикул, '2' = забранен артикул, '6' = препълване

Заявка за анулиране на артикул:

<c><баркод><номер на артикул><количество>

Полета:

 c1 байт команда - 'c'
баркод
12 байта баркод на артикула
номер на артикул5 байта номер на артикул ASCII формат - примерно "00123"
количество
9 байта номер количество ASCII формат без десетична точка (десетичната точка е фиксирана на третия знак) - примерно "123456789" => количеството е 123456.789)

Отговор от компютъра:

<j><номер на артикул><цена><име><данъчна група><арт.група><подгрупа><десетична точка>

или при грешка

<е><номер>

Полета:

j
1 байт команда - 'j'
номер на артикул5 байта номер на артикул ASCII формат - примерно "00123"
цена8 байта цена (без десетичната точка) ASCII формат
име12 байта име на артикул
данъчна група1 байт данъчна група - ASCII номер '0' до '7'
артикулна група1 байт артикулна група - ASCII номер '0' до '9'
подгрупа1 байт номер на подгрупа в ASCII номер '0' до '9'
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'

или при грешка

Полета:

e
1 байт команда - 'e'
номер
1 байт номер на грешката ASCII номер - '1' = не е намерен такъв артикул, '2' = забранен артикул, '6' = препълване

Заявка за приключване на бон (плащане):

<d><тип плащане><сума><получена сума><номер на бон><десетична точка>

Полета:

d1 байт команда - 'd'
тип плащане
1 байт ASCII номер '0' до '3'
сума8 байта сума (без десетичната точка) ASCII формат
получена сума8 байта получена сума (без десетичната точка) ASCII формат
номер на бон
5 байта номер на бон ASCII формат - примерно "00123"
десетична точка
1 байт позиция на десетичната точка - ASCII номер '0' или '2'

Отговор от компютъра:

<q><000001000><име>

или при грешка

<е><номер>

Полета:

q
1 байт команда - 'q'
0000010009 байта - константа ASCII формат "000001000"
име6 байта име на тип плащане. Ако плащането е 0 (В БРОЙ) името е без значение, тъй като касата ще отпечати "В БРОЙ"

или при грешка

Полета:

e
1 байт команда - 'e'
номер
1 байт номер на грешката ASCII номер - '3' = забранено плащане

Съобщения изпращани от касата след потвърдена  последна заявка:

'x' след 'b', препълване (цена * количество > 8 знака)
'x' след 'c', има разлика в параметрите на артикула (цена, данъчна група, и др.)
'w' след 'b', препълване в междинна сума (STL > 8 знака)

<последна редакция 29.11.2007 г.>