Package ru.nilsoft.tm

# Class TMCommand

java.lang.Object
ru.nilsoft.tm.TMCommand

public class TMCommand extends Object

## Класс контейнер для формирования и распаковки команд контроллера ФН (поддерживаются протоколы ФФД 1.05, ФФД 1.1, ФФД 1.2).

## Протокол работы с контроллером ФН

### Формат запроса

- [Стартовый символ: `TMCommand.symbols.START`]
- [Префикс/пароль передачи данных: `cmdPrefix`]
- [Идентификационный/отличительный байт: `cmdThisId`]
- [Код команды (H2): `TMCommand.commands`]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Поле 1 - 1ый параметр команды: Форматы полей/параметров]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- ...
- [Поле N - Nый параметр команды: Форматы полей/параметров]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Завершающий символ: `TMCommand.symbols.END`]
- [BCC (проверочная сумма): `CalcBCC(byte[], int, int)`]

### Формат ответа

- [Стартовый символ: `TMCommand.symbols.START`]
- [Идентификационный/отличительный байт: `cmdThisId`]
- [Код команды (H2): `TMCommand.commands`]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Поле 1 (H2) "Постоянный статус ККТ": `GetHardStatus()`]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Поле 2 (H4) "Текущий статус ККТ": `GetDynamicStatus()`]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Поле 3 (H4) "Результат выполнения команды": первый байт - код ошибки `GetMainError()`, второй байт - дополнительный код `GetSubError()`]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Поле 4 (H10) "Состояние печатающего устройства": ]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Поле 5 - 1ый параметр ответа: Форматы полей/параметров]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- ...
- [Поле N+4 - Nый параметр ответа: Форматы полей/параметров]
- [Разделитель полей/параметров команды: `TMCommand.symbols.FIELD_END`]
- [Завершающий символ: `TMCommand.symbols.END`]
- [BCC (проверочная сумма): `CalcBCC(byte[], int, int)`]

### Форматы полей/параметров

Все поля представляют собой строки, состоящие из ASCII символов в диапазоне от 0x20 до 0xFF, завершающиеся символом разделения данных `TMCommand.symbols.FIELD_END`.
Тип поля | Обозначение | Функции | Пример
Строковое поле | S[максимальная длина поля в байтах] | `GetFieldString(int)` `MakeString(java.lang.String)` | "Сигареты ~11Salem~01 легкие"
Денежное поле | M[максимальная длина поля в байтах] | `GetFieldValue(int)` `MakeValue(java.lang.String)` | "12306" "123.06"
Числовое поле | N[максимальная длина поля в байтах] | `GetFieldValue(int)` `MakeValue(java.lang.String)` | "12306" "123.06"
Произвольные (hex) данные | H[максимальная длина поля в байтах] | `GetFieldBin(int)` `MakeBin(byte[])` | Число 27: "1B" Число 437: "B501" Битовая цепочка 11010101: "D5"
Байтовое поле | B, B2, H2 | `GetFieldHexB(int)` `MakeHexB(byte)` | Число 27: "1B"
Слово | H4 | `GetFieldHexW(int)` `MakeHexW(short)` | Число 1: "0100"
Двойное слово | W, W8, H8 | `GetFieldHexDW(int)` `MakeHexDW(int)` | Число 1: "01000000"
Поле-дата | D, D6 | `MakeDate()` | 01.09.2002 "010902" 25.11.2005 "251105"
Поле-время | T, T4 | `MakeTime()` | 00:55 "0055"

Author:
  www.nilsoft.ru, nilstarsoft@mail.ru

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `TMCommand.agent_type`
  Признак агента по предмету расчёта (тег 1222).
  `static final class`
  `TMCommand.asokp_cmd`
  Дополнительные команды сервиса ключей АС ОКП (смотри функции `CmdServiceUpdateKeys(byte)`)
  `static final class`
  `TMCommand.barcode_types`
  Типы штрихкодов (смотри функцию `CmdReceiptBarcode(byte, byte, byte, byte, byte, java.lang.String)`)
  `static final class`
  `TMCommand.calc_methods`
  Признаки способа расчета (тэг 1214).
  `static final class`
  `TMCommand.calc_objects`
  Признаки предмета рассчета (тэг 1212).
  `static final class`
  `TMCommand.cmdFNgroupBx`
  Поддержка команд ФН группы Bx (нужно для работы ТС ПИоТ) `CmdFNGroupBx(byte, java.lang.String)`.
  `static final class`
  `TMCommand.commands`
  Коды команд фискального регистратора.
  `static final class`
  `TMCommand.correction_types`
  Тип коррекции (смотри функцию `CmdCorrection(byte, java.lang.String, java.lang.String, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, java.lang.String, int, java.lang.String, byte)`).
  `static final class`
  `TMCommand.doc_params1`
  Параметр1 документов (смотри функции `CmdGetParams()`, `CmdSetParams(short, short, short)`).
  `static final class`
  `TMCommand.doc_params2`
  Параметр2 документов (смотри функции `CmdGetParams()`, `CmdSetParams(short, short, short)`).
  `static final class`
  `TMCommand.doc_params4`
  Параметр4 документов - дополнительные параметры (смотри функции `CmdGetParams()`, `CmdSetParams(short, short, short)`).
  `static final class`
  `TMCommand.dynamic_status_flags`
  Флаги динамического статуса контроллера ФН.
  `static final class`
  `TMCommand.errors`
  Коды ошибок выполнения команд.
  `static final class`
  `TMCommand.fn_doc_mode`
  Режим получения документа ФН (смотри функцию `CmdFNGetDoc(int, byte)`).
  `static final class`
  `TMCommand.fn_warn_flags`
  Флаги предупреждения ФН (смотри `CmdFNGetStatus()`).
  `static class`
  `TMCommand.FreeFiscalReceipt`
  Класс описатель произвольного фискального документа
  `static final class`
  `TMCommand.hard_status_flags`
  Флаги постоянного статуса контроллера ФН.
  `static final class`
  `TMCommand.kkt_mode_reg`
  Режим регистрации ККТ (тэг 1290) [ФФД 1.2 и выше].
  `static final class`
  `TMCommand.km_check_result`
  Состояния битов в значении реквизита «результат проверки сведений о товаре» (тег 2106).
  `static final class`
  `TMCommand.mode_types`
  Режимы работы ККТ (смотри `CmdRegistration_1_05(java.lang.String, java.lang.String, byte, java.lang.String, short, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String)`,`CmdRegistration_1_1(java.lang.String, java.lang.String, byte, java.lang.String, short, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)`,`CmdRegistration_1_2(java.lang.String, java.lang.String, byte, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String)`).
  `static final class`
  `TMCommand.ofd_status_flags`
  Статус информационного обмена (смотри `CmdFNGetCommStatus()`).
  `static final class`
  `TMCommand.paramServiceMode`
  Дополнительные параметры для сервисных команд [0x9C] (смотри `CmdServiceMode(byte)`)
  `static final class`
  `TMCommand.pay_indexes`
  Индексы видов платежей (0..4 - предопрелены в КФН, 6..15 - определяемые).
  `static final class`
  `TMCommand.planned_status`
  Значение реквизита "Планируемый статус товара" (тег 2003), "Присвоенный статус товара" (тег 2110) [ФФД 1.2 и выше].
  `static final class`
  `TMCommand.proto_ffd`
  Версия протокола ФФД (тэг 1209).
  `static final class`
  `TMCommand.reasonServiceMode`
  Коды причин самостоятельного выхода КФН в сервисный монитор.
  `static final class`
  `TMCommand.receipt_types`
  Типы чеков (смотри `CmdReceiptOpen(byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, java.lang.String, java.lang.String)`).
  `static final class`
  `TMCommand.reg_change_flags`
  Коды причин изменения сведений о ККТ (тег 1205, ФФД 1.1 и выше, смотри `CmdRegistration_1_1(java.lang.String, java.lang.String, byte, java.lang.String, short, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)`,`CmdRegistration_1_2(java.lang.String, java.lang.String, byte, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String)`).
  `static final class`
  `TMCommand.reg_reasons`
  Коды причины регистрации/перерегистрации ККТ (смотри `CmdRegistration_1_05(java.lang.String, java.lang.String, byte, java.lang.String, short, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String)`,`CmdRegistration_1_1(java.lang.String, java.lang.String, byte, java.lang.String, short, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int)`,`CmdRegistration_1_2(java.lang.String, java.lang.String, byte, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, byte, byte, byte, java.lang.String, java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String)`).
  `static final class`
  `TMCommand.result_status_flags`
  Флаги реквизита «результат проверки сведений о товаре» (тег 2106) [ФФД 1.2 и выше].
  `static final class`
  `TMCommand.server_types`
  Типы серверов (смотри функции `CmdOFDGetParamExt(byte)`,`CmdOFDSetParamExt(java.lang.String, short, short, short, short, byte)`)
  `static final class`
  `TMCommand.symbols`
  Базовые символы сообщений.
  `static final class`
  `TMCommand.tax_indexes`
  Индексы налогов, предопределены в КФН.
  `static final class`
  `TMCommand.tax_types`
  Типы систем налогообложения (там где используется несколько систем - номер бита [начиная с 1], там где одна система - значение).
  `static final class`
  `TMCommand.unit_id`
  Значения реквизита «мера количества предмета расчета» (тег 2108) [ФФД 1.2 и выше].

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected ArrayList<Byte>`
  `cmdBuf`
  Буфер для команд.
  `protected int`
  `cmdFields`
  Количество полей.
  `protected static byte`
  `cmdId`
  Счетчик для генерации проверочного байта.
  `protected static String`
  `cmdPrefix`
  Текущий префикс команды.
  `protected byte`
  `cmdThisId`
  Текущий проверочный байт.
  `static final int`
  `MAX_DEPARTMENT_INDEX`
  Максимальный номер отдела, поддерживаемый КФН (команды `CmdGetDepNames()`,`CmdSetDepNames(java.util.Map<java.lang.Byte, java.lang.String>)`).
  `static final int`
  `MAX_DEPARTMENTS`
  ` Максимальное количество отделов, поддерживаемых КФН (команды `CmdGetDepNames()`,`CmdSetDepNames(java.util.Map<java.lang.Byte, java.lang.String>)`).
  `static final int`
  `MAX_OFD_DATA_PART_SIZE`
  Размер буфера для получения данных для отправки в ОФД (команда `CmdFNRead(short, short)` ).
  `static final int`
  `MAX_PAYMENT_TYPES`
  Максимальное количество видов платежей (команды `CmdGetPayment(byte)`,`CmdSetPayment(byte, java.lang.String, boolean, boolean, byte, byte, java.lang.String)`).

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TMCommand()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static byte[]`
  `BytesToHex(byte[] src, int srcLen)`
  Конвертирование байтов в HEX-представление.
  `static byte[]`
  `ByteToHex(byte src)`
  Конвертирование байта в HEX-представление.
  `static byte`
  `ByteToHexNibble(byte src, int part)`
  Byte to hex-nibble conversion.
  `static int`
  `CalcBCC(byte[] buf, int startIndex, int len)`
  Подсчет контрольной суммы.
  `int`
  `CalcFields()`
  Пересчитать количество полей в пакете.
  `int`
  `CmdBar2Dprepare(byte options, byte param, String tAdd, String tCode)`
  Сборка команды "Подгтовка к печати 2D штрихкода" [1E].
  `int`
  `CmdBar2Dprint(byte wMul, byte hMul, byte align)`
  Сборка команды "Печать 2D штрихкода" [1F].
  `int`
  `CmdCertification(String tSerNum)`
  Сборка команды "Сертификация" [92].
  `int`
  `CmdCertification(String tSerNum, String tCode)`
  Сборка команды "Сертификация" [92].
  `int`
  `CmdCorrection(byte receiptType, String tUserName, String tUserINN, byte copies, byte taxType, String tTotal, String tCash, String tCard, String tAdvance, String tCredit, String tOncoming, byte corrType, String tDescription, int date, String tNumDoc, byte taxIndex)`
  Deprecated.
  `int`
  `CmdCorrection(String tDate, String tTime, byte receiptType, String tUserName, String tUserINN, byte copies, byte taxType, String tTotal, String tCash, String tCard, String tAdvance, String tCredit, String tOncoming, byte corrType, String tDescription, int date, String tNumDoc, byte taxIndex)`
  Deprecated.
  `int`
  `CmdEJErase()`
  Сборка команды "Стирание РПКУ" [85].
  `int`
  `CmdEJGetParam()`
  Сборка команды "Запрос параметров РПКУ" [49].
  `int`
  `CmdEJNoDoc(short DocNo, byte Over)`
  Сборка команды "Документ по номеру из РПКУ" [7F].
  `int`
  `CmdEJNoReport(short DocStart, short DocEnd, byte Over)`
  Сборка команды "Отчёт из РПКУ по номерам документов" [7E].
  `int`
  `CmdEJPrint(short ShiftNo)`
  Сборка команды "Печать РПКУ" [84].
  `int`
  `CmdEJShiftCloseReport(short ShiftNo)`
  Сборка команды "Печать 'Отчёта закрытия смены' из РПКУ" [7С].
  `int`
  `CmdEJTimeReport(String tTimeStart, String tTimeEnd, String tDate)`
  Сборка команды "Отчёт из РПКУ по времени" [7D].
  `int`
  `CmdFNClose(String tOperatorName, String tOperatorINN)`
  Deprecated.
  `int`
  `CmdFNClose(String tOperatorName, String tOperatorINN, byte mode)`
  Сборка команды "Закрытие ФН" [8D].
  `int`
  `CmdFNClose(String tDate, String tTime, String tOperatorName, String tOperatorINN)`
  Deprecated.
  `int`
  `CmdFNClose(String tDate, String tTime, String tOperatorName, String tOperatorINN, byte mode)`
  Сборка команды "Закрытие ФН" [8D].
  `int`
  `CmdFNGetCommStatus()`
  Сборка команды "Получить из ФН статус обмена с ОФД" [2B].
  `int`
  `CmdFNGetDoc(int numDoc, byte mode)`
  Сборка команды "Документ по номеру из ФН" [8B].
  `int`
  `CmdFNGetError()`
  Сборка команды "Запрос последних ошибок ФН" [2A].
  `int`
  `CmdFNGetRegParam(short tlvId)`
  Сборка команды "Запрос параметров регистрации" [88].
  `int`
  `CmdFNGetStatus()`
  Сборка команды "Запрос статуса ФН" [29].
  `int`
  `CmdFNGetTotal(byte numReg, boolean bPrint)`
  Сборка команды "Итоги регистрации" [8F].
  `int`
  `CmdFNGroupBx(byte CmdFNcode, String hexdump)`
  Сборка команды "Работа с командами ФН группы Bx" [98] (для ТС ПИоТ).
  `int`
  `CmdFNRead(short offSet, short size)`
  Сборка команды "Чтение блока документа из ФН" [5B].
  `int`
  `CmdFNReadCancel()`
  Сборка команды "Отмена чтения документа из ФН" [5C].
  `int`
  `CmdFNReadClose()`
  Сборка команды "Завершение чтения документа" [5D].
  `int`
  `CmdFNReadOpen()`
  Сборка команды "Начать чтение документа из ФН" [5A].
  `int`
  `CmdFNSetCommStatus(boolean bConn)`
  Сборка команды "Установить в ФН статус обмена с ОФД" [5F].
  `int`
  `CmdFNWriteScript(byte[] data)`
  Сборка команды "Сохранение квитанции полученой от ОФД" [5E].
  `int`
  `CmdFromCash(String tSum, String tUserName)`
  Сборка команды "Инкассация" [33].
  `int`
  `CmdFromCash(String tDate, String tTime, String tSum, String tUserName)`
  Сборка команды "Инкассация" [33].
  `int`
  `CmdGetCurCounters()`
  Сборка команды "Получение текущих номеров документов" [35].
  `int`
  `CmdGetDateTime()`
  Сборка команды "Чтение времени и даты" [43].
  `int`
  `CmdGetDepNames()`
  Сборка команды "Получение данных по отделам" [61].
  `int`
  `CmdGetDocCounters()`
  Сборка команды "Запрос счётчиков документов" [3D].
  `int`
  `CmdGetHeader()`
  Сборка команды "Чтение заголовка документа" [9A].
  `int`
  `CmdGetInfo()`
  Сборка команды "Получение информации о ККТ" [97].
  `int`
  `CmdGetMoney()`
  Сборка команды "Получить электронный отчёт" [34].
  `int`
  `CmdGetMoney(String tDate, String tTime)`
  Сборка команды "Получить электронный отчёт" [34].
  `int`
  `CmdGetParams()`
  Сборка команды "Чтение параметров документа" [4D].
  `int`
  `CmdGetPayment(byte index)`
  Сборка команды "Получение данных о виде платежа" [4B].
  `int`
  `CmdGetReportExt()`
  Сборка команды "Получение электронного отчета (расширенного)" [37].
  `int`
  `CmdGetReportPayment(byte payIndex)`
  Сборка команды "Получение отчета по типу оплат" [36].
  `int`
  `CmdGetResources()`
  Сборка команды "Информация о свободных ресурсах" [03].
  `int`
  `CmdGetResources(String tDate, String tTime)`
  Сборка команды "Информация о свободных ресурсах" [03].
  `int`
  `CmdGetSerialNo()`
  Сборка команды "Получение заводского номера ККТ" [96].
  `int`
  `CmdGetTail()`
  Сборка команды "Чтение окончания документа" [9B].
  `int`
  `CmdGetTax(byte index)`
  Сборка команды "Получение данных о налоговой ставке" [59].
  `int`
  `CmdGetWaitDocs()`
  Сборка команды "Запрос количества неподтверждённых фискальных документов" [39].
  `int`
  `CmdKMCheck(byte type, byte[] code, byte offsetGS1_91, byte offsetGS1_92)`
  Собрать команду "Передать код маркировки для проверки в ФН" [26].
  `int`
  `CmdKMClean()`
  Собрать команду "Очистить КМ из ФН" [23].
  `int`
  `CmdKMGetStatus()`
  Собрать команду "Запрос статуса КМ" [20].
  `int`
  `CmdKMGetStatus(byte dopCode)`
  Собрать команду "Запрос статуса КМ" [20] c дополнительным параметром.
  `int`
  `CmdKMNotifCreate(byte plannedStatus, byte unitId, String sQty, String sLotSize)`
  Собрать команду "Создать уведомление КМ" [24].
  `int`
  `CmdKMNotifCreate(byte plannedStatus, byte unitId, String sQty, String sLotSize, byte sendOverKKT)`
  Собрать команду "Создать уведомление КМ" [24].
  `int`
  `CmdKMOISMResp(byte[] resp)`
  Собрать команду "Отправить ответ ОИСМ в ФН" [25].
  `int`
  `CmdKMSaveResult(boolean isSave)`
  Собрать команду "Сохранить результаты проверки КМ" [22]
  В ответе на эту команду возращаются следующие поля: Поле 5: (H2) Возвращаемое значение соответствует реквизиту ФФД 2106, возвращается только в случае сохранения
  `int`
  `CmdKMTransfer(short tag, byte[] code, byte IDproduct, byte offsetGS1, byte typeCode, byte plannedStatus, byte processMode, byte status)`
  Собрать команду "Передача КМ" [21].
  `int`
  `CmdNonFiscalClose()`
  Сборка команды "Закрытие отчётного документа на чековой ленте" [52].
  `int`
  `CmdNonFiscalFree()`
  Сборка команды "Печать нефискального произвольного чека" [70].
  `int`
  `CmdNonFiscalLine(String t)`
  Сборка команды "Печать строки отчёта на чековой ленте" [51].
  `int`
  `CmdNonFiscalLines(String[] t)`
  Сборка команды "Печать строк отчёта на чековой ленте" [56].
  `int`
  `CmdNonFiscalOpen()`
  Сборка команды "Начало формирования отчётного документа на чековой ленте" [50].
  `int`
  `CmdNonFiscalOpen(String tDate, String tTime)`
  Сборка команды "Начало формирования отчётного документа на чековой ленте" [50].
  `int`
  `CmdNotifAutoConfirm(byte addCmd, int numReq, short crc)`
  Собрать команду "Подтвердить выгрузку уведомления или получить информацию по неподтверждённым уведомлениям (автономный режим)" [87].
  `int`
  `CmdNotifAutoNext(byte addCmd)`
  Собрать команду "Перейти к следующему уведомлению, или получить параметры текущего уведомления (автономный режим)" [8A].
  `int`
  `CmdNotifAutoReadData(short offset, short size)`
  Собрать команду "Прочитать блок данных текущего уведомления (автономный режим)" [89].
  `int`
  `CmdNotifAutoReadStart(byte addCmd)`
  Собрать команду "Начать сессию выгрузку уведомлений, или получить состояние текущей сессии (автономный режим)" [80].
  `int`
  `CmdNotifGetStatus()`
  Собрать команду "Получить число уведомлений КМ" [27].
  `int`
  `CmdNotifRead(short offset, short size)`
  Собрать команду "Прочитать блок данных уведомления" [2C].
  `int`
  `CmdNotifReadCancel()`
  Собрать команду "Отменить чтение уведомления" [2D].
  `int`
  `CmdNotifReadClose()`
  Собрать команду "Завершить чтение уведомления" [2E].
  `int`
  `CmdNotifReadOpen()`
  Собрать команду "Начать чтение уведомления" [28].
  `int`
  `CmdNotifWriteReceipt(byte[] data)`
  Собрать команду "Передать квитанцию на уведомление (Передать квитанцию из ОИСМ в ФН)" [2F].
  `int`
  `CmdOFDGetInfoUrl()`
  Сборка команды "Получение адреса проверки чеков" [6E].
  `int`
  `CmdOFDGetParam()`
  Сборка команды "Получить параметры обмена с ОФД" [67].
  `int`
  `CmdOFDGetParamExt(byte index)`
  Сборка команды "Получить параметры обмена с сервером ОФД/ОИСМ/AC ОКП" [67].
  `int`
  `CmdOFDGetPaymentState()`
  Сборка команды "Отчет о текущем состоянии расчетов" [3B].
  `int`
  `CmdOFDGetTicket(int numDoc, boolean bPrint)`
  Сборка команды "Запрос Квитанции ОФД из ФН" [3A].
  `int`
  `CmdOFDSetInfoUrl(String tURL)`
  Сборка команды "Установка адреса проверки чеков" [6D].
  `int`
  `CmdOFDSetParam(String tAddress, short port, short timeConn, short timeRecv, short timeSend)`
  Сборка команды "Установить параметры обмена с ОФД" [66].
  `int`
  `CmdOFDSetParamExt(String tAddress, short port, short timeConn, short timeRecv, short timeSend, byte index)`
  Сборка команды "Установить параметры обмена с ОФД/ОИСМ/AC ОКП" [66].
  `int`
  `CmdOnOffUPD(boolean on)`
  Сборка команды "Включение/выключение встроенного УПД" [65].
  `int`
  `CmdPrintHeader()`
  Сборка команды "Печать заголовка чека" [1D].
  `int`
  `CmdReceiptAddTLV(short TLVId, String tData)`
  Сборка команды "Добавление TLV структуры в документ" [6A].
  `int`
  `CmdReceiptBarcode(byte barType, byte barMode, byte barFont, byte height, byte width, String tBarcode)`
  Сборка команды "Печать штрих-кода" [1A].
  `int`
  `CmdReceiptCancel()`
  Сборка команды "Аннулирование" [17].
  `int`
  `CmdReceiptClose()`
  Сборка команды "Закрытие документа" [14].
  `int`
  `CmdReceiptComission(boolean isDiscount, String tPercent, String tSumma, String tName)`
  Сборка команды "Скидка/Наценка" [15].
  `int`
  `CmdReceiptComment(String tComment)`
  Сборка команды "Строка комментария" [1С].
  `int`
  `CmdReceiptFree(TMCommand.FreeFiscalReceipt receipt)`
  Сборка команды "Произвольный фискальный чек" [73].
  `int`
  `CmdReceiptItem(String tName, String tCode, String tPrice, String tQty, String tUnit, byte taxIndex, byte calcMethod, byte calcObject, byte agentType, byte depIndex, String tDepName, String tComment)`
  Сборка команды "Оформление позиции товара/услуги" [11].
  `int`
  `CmdReceiptOpen(byte receiptType, String tCashier, String tCashierINN, String tTableNum, String tPlaceNum, byte copies, byte taxMode, String tAccount, String tComment)`
  Сборка команды "Начало формирования кассового чека на чековой ленте" [10].
  `int`
  `CmdReceiptOpen(String tDate, String tTime, byte receiptType, String tCashier, String tCashierINN, String tTableNum, String tPlaceNum, byte copies, byte taxMode, String tAccount, String tComment)`
  Сборка команды "Начало формирования кассового чека на чековой ленте" [10].
  `int`
  `CmdReceiptSubtotal(String tComment)`
  Сборка команды "Подитог" [16].
  `int`
  `CmdReceiptTax(byte taxIndex, String tComment)`
  Сборка команды "Налоговая ставка" [1B].
  `int`
  `CmdReceiptTender(byte payIndex, String tSumma, String tAdd, String tComment)`
  Сборка команды "Расчёт" [13].
  `int`
  `CmdReceiptTotal(String tComment)`
  Сборка команды "Итог по чеку" [12].
  `int`
  `CmdRegistration_1_05(String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace)`
  Сборка команды "Регистрация (Перерегистрация)" ФФД1.05 [04].
  `int`
  `CmdRegistration_1_05(String tDate, String tTime, String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace)`
  Сборка команды "Регистрация (Перерегистрация)" ФФД1.05 [04].
  `int`
  `CmdRegistration_1_1(String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code)`
  Сборка команды "Регистрация (Перерегистрация)" ФФД1.1 [04].
  `int`
  `CmdRegistration_1_1(String tDate, String tTime, String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code)`
  Сборка команды "Регистрация (Перерегистрация)" ФФД1.1 [04].
  `int`
  `CmdRegistration_1_2(String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, int mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code, String addReqOR, String addDataOR)`
  Сборка команды "Регистрация (Перерегистрация)" ФФД1.2 [04].
  `int`
  `CmdRegistration_1_2(String tDate, String tTime, String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, int mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code, String addReqOR, String addDataOR)`
  Сборка команды "Регистрация (Перерегистрация)" ФФД1.2 [04].
  `int`
  `CmdServiceMode(byte param)`
  Сборка команды "Сервисная команда в КФН (аналог команды сервисного монитора)" [9C].
  `int`
  `CmdServiceMode(byte param, String codeAct)`
  Сборка команды "Сервисная команда в КФН (аналог команды сервисного монитора)" [9C].
  `int`
  `CmdServiceUpdateKeys(byte addCmd)`
  Собрать команду "Сервис обновления ключей проверки в ФН" [9E].
  `int`
  `CmdServiceUpdateKeys(byte addCmd, String data)`
  Собрать команду "Сервис обновления ключей проверки в ФН" [9E].
  `int`
  `CmdSetDateTime()`
  Сборка команды "Установка времени и даты" [42].
  `int`
  `CmdSetDateTime(String tDate, String tTime)`
  Сборка команды "Установка времени и даты" [42].
  `int`
  `CmdSetDepNames(Map<Byte,String> deps)`
  Сборка команды "Программирование отделов" [60].
  `int`
  `CmdSetHeader(String[] tStrings)`
  Сборка команды "Установка заголовка документа" [41] (4 строки по 38 символов).
  `int`
  `CmdSetHeaderExt(String[] tStrings)`
  Сборка команды "Установка заголовка документа (расширенная)" [4E] (6 строк по 40 символов).
  `int`
  `CmdSetParams(short param1, short param2, short lineFeed)`
  Deprecated.
  `int`
  `CmdSetParams(short param1, short param2, short lineFeed, short param4)`
  Сборка команды "Программирование параметров документов" [4C].
  `int`
  `CmdSetPayment(byte index, String tName, boolean isSecond, boolean isCharge, byte currency, byte mask, String tConvertCurrency)`
  Сборка команды "Программирование вида платежа" [4A].
  `int`
  `CmdSetTail(String[] tStrings)`
  Сборка команды "Установка окончания документа" [46]
  `int`
  `CmdShiftClose(String tCashier, String tCashierInn, String tMessage, String tAdd, boolean bNotPrint)`
  Сборка команды "Закрыть смену" [31].
  `int`
  `CmdShiftClose(String tDate, String tTime, String tCashier, String tCashierInn, String tMessage, String tAdd, boolean bNotPrint)`
  Сборка команды "Закрыть смену" [31].
  `int`
  `CmdShiftOpen(String tCashier, String tCashierInn, String tMessage, String tAdd, String tShift)`
  Сборка команды "Открыть смену" [02].
  `int`
  `CmdShiftOpen(String tDate, String tTime, String tCashier, String tCashierInn, String tMessage, String tAdd, String tShift)`
  Сборка команды "Открыть смену" [02].
  `int`
  `CmdShiftReport()`
  Сборка команды "Отчет о текущем состоянии" [30].
  `int`
  `CmdShiftReport(String tDate, String tTime)`
  Сборка команды "Отчет о текущем состоянии" [30].
  `int`
  `CmdStart()`
  Сборка команды "Начало сеанса" [01].
  `int`
  `CmdStart(String tDate, String tTime)`
  Сборка команды "Начало сеанса" [01].
  `int`
  `CmdStartMonitor()`
  Сборка команды "Переключение контроллера в сервисный режим" [93].
  `int`
  `CmdToCash(String tSum, String tUserName)`
  Сборка команды "Подкрепление" [32].
  `int`
  `CmdToCash(String tDate, String tTime, String tSum, String tUserName)`
  Сборка команды "Подкрепление" [32].
  `static String`
  `Cp866toUtf8(String src)`
  Конвертирование строки из UTF8 в CP866.
  `byte[]`
  `GetCmdBuf()`
  Получить данные.
  `int`
  `GetCmdBufLen()`
  Получение размера пакета.
  `int`
  `GetCmdCode()`
  Получение кода команды.
  `byte`
  `GetCmdId()`
  Получить отличительный байт команды.
  `int`
  `GetDynamicStatus()`
  Получение динамического статуса из ответа.
  `byte[]`
  `GetField(int fieldIndex)`
  Получение поля из пакета.
  `byte[]`
  `GetFieldBin(int fieldIndex)`
  Получение бинарного поля (конвертация из Hex).
  `byte`
  `GetFieldHexB(int fieldIndex)`
  Получение поля как байта.
  `int`
  `GetFieldHexDW(int fieldIndex)`
  Получение поля как двойного слова.
  `short`
  `GetFieldHexW(int fieldIndex)`
  Получение поля как слова.
  `int`
  `GetFieldLength(int fieldIndex)`
  Получение длины поля из пакета.
  `int`
  `GetFieldOffset(int fieldIndex)`
  Получить стартовый индекс (смещение) поля из пакета.
  `int`
  `GetFields()`
  Получить количество полей.
  `String`
  `GetFieldString(int fieldIndex)`
  Получение поля команды как строки.
  `String`
  `GetFieldValue(int fieldIndex)`
  Получение поля команды как строки.
  `int`
  `GetHardStatus()`
  Получение постоянного статуса из ответа.
  `static byte`
  `GetId()`
  Получение текущего проверочного байта для команды (автоинкрементируется).
  `int`
  `GetMainError()`
  Получение кода основной ошибки из ответа.
  `static String`
  `GetPrefix()`
  Получение префикса команды.
  `int`
  `GetSubError()`
  Получение кода дополнительной ошибки из ответа.
  `static byte`
  `GetUnitID(String ed)`
  Определение меры количества предмета расчёта по популярным сокращениям (не всем возможным) для ФФД 1.2 - для неопознанного сокращения возвращается 255 (иная единица измерения); - входная строка также может содержать непосредственное HEX-значение в формате xNN.
  `static String`
  `GetUnitIDHex(String ed)`
  Определение меры количества предмета расчёта по популярным сокращениям (не всем возможным) для ФФД 1.2 - для неопознанного сокращения возвращается 'FF' (иная единица измерения); - входная строка также может содержать непосредственное HEX-значение в формате xNN.
  `static byte`
  `HexToByte(byte[] src, int startIndex)`
  Конвертирование шестанадцатеричной строки в байт.
  `static byte[]`
  `HexToBytes(byte[] src)`
  Конвертирование шестанадцатеричной строки в байтовый массив.
  `static byte[]`
  `HexToBytes(byte[] src, int srcLen)`
  Конвертирование шестанадцатеричной строки в байтовый массив.
  `static int`
  `HexToDWord(byte[] src, int startIndex)`
  Конвертирование набора байт в двойное слово.
  `static short`
  `HexToWord(byte[] src, int startIndex)`
  Конвертирование набора байт в слово.
  `boolean`
  `IsCmdId()`
  Проверка отличительного байта команды.
  `static boolean`
  `IsPrefix(byte[] data, int startIndex)`
  Проверка что данные соотвествуют префиксу.
  `int`
  `MakeBin(byte[] src)`
  Добавление бинарного поля (конвертация в Hex).
  `int`
  `MakeCashier(String name, String inn)`
  Создать поле с информацией о кассире.
  `int`
  `MakeDate()`
  Добавление поля даты в команду (использует текущую дату).
  `int`
  `MakeDate(Calendar cal)`
  Добавление поля даты в команду.
  `int`
  `MakeFreeField(TMCommand.FreeFiscalReceipt.FreeField field)`
  Создание дополнительного поля произвольного чека.
  `int`
  `MakeHeader(byte cmdCode)`
  Создание заголовочного поля команды.
  `int`
  `MakeHexB(byte src)`
  Создание поля H2 (8-битное значение, переведенное в hex вид) команды.
  `int`
  `MakeHexDW(int src)`
  Создание поля H8 (32-битное значение, переведенное в hex вид) команды.
  `int`
  `MakeHexW(short src)`
  Создание поля H4 (16-битное значение, переведенное в hex вид) команды.
  `int`
  `MakePosField(TMCommand.FreeFiscalReceipt.PosField field)`
  Создание обязательного поля произвольного чека.
  `int`
  `MakeString(String src)`
  Создание строкового поля (с конвертацией CP866).
  `int`
  `MakeTail()`
  Создание завершающей части команды.
  `int`
  `MakeTime()`
  Добавление поля времени в команду (использует текущее время).
  `int`
  `MakeTime(Calendar cal)`
  Добавление поля времени в команду.
  `int`
  `MakeValue(String src)`
  Создание строкового поля (без конвертации в CP866).
  `void`
  `ReCalcBCC()`
  Перерасчет контрольного значения (BCC) пакета.
  `void`
  `Replace(int index, byte data)`
  Изменение данных пакета.
  `void`
  `Replace(int index, byte[] data)`
  Изменение данных пакета.
  `int`
  `SetPacket(byte[] data)`
  Установка пакета (проверка что пакет является командой и его установка).
  `int`
  `SetPacket(byte[] data, int length)`
  Установка пакета (проверка что пакет является командой и его установка).
  `String`
  `toString()`
  Вывод ввиде строки.
  `static String`
  `Utf8toCp866(String src)`
  Конвертирование строки из UTF8 в CP866.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### MAX_OFD_DATA_PART_SIZE

    public static final int MAX_OFD_DATA_PART_SIZE
    Размер буфера для получения данных для отправки в ОФД (команда `CmdFNRead(short, short)` ).
    See Also:
      - Constant Field Values

  - ### MAX_DEPARTMENTS

    public static final int MAX_DEPARTMENTS
    ` Максимальное количество отделов, поддерживаемых КФН (команды `CmdGetDepNames()`,`CmdSetDepNames(java.util.Map<java.lang.Byte, java.lang.String>)`).
    See Also:
      - Constant Field Values

  - ### MAX_DEPARTMENT_INDEX

    public static final int MAX_DEPARTMENT_INDEX
    Максимальный номер отдела, поддерживаемый КФН (команды `CmdGetDepNames()`,`CmdSetDepNames(java.util.Map<java.lang.Byte, java.lang.String>)`).
    See Also:
      - Constant Field Values

  - ### MAX_PAYMENT_TYPES

    public static final int MAX_PAYMENT_TYPES
    Максимальное количество видов платежей (команды `CmdGetPayment(byte)`,`CmdSetPayment(byte, java.lang.String, boolean, boolean, byte, byte, java.lang.String)`).
    See Also:
      - Constant Field Values

  - ### cmdId

    protected static volatile byte cmdId
    Счетчик для генерации проверочного байта.

  - ### cmdPrefix

    protected static volatile String cmdPrefix
    Текущий префикс команды.

  - ### cmdBuf

    protected ArrayList<Byte> cmdBuf
    Буфер для команд.

  - ### cmdFields

    protected int cmdFields
    Количество полей.

  - ### cmdThisId

    protected byte cmdThisId
    Текущий проверочный байт.

- ## Constructor Details

  - ### TMCommand

    public TMCommand()

- ## Method Details

  - ### GetId

    public static byte GetId()
    Получение текущего проверочного байта для команды (автоинкрементируется).
    Returns:
      проверочный байт.

  - ### HexToBytes

    public static byte[] HexToBytes(byte[] src, int srcLen)
    Конвертирование шестанадцатеричной строки в байтовый массив.
    Parameters:
      `src` - исходный буфер (шестнадцатеричная строка).
      `srcLen` - длина данных для конвертации.
    Returns:
      байтовый массив.

  - ### HexToBytes

    public static byte[] HexToBytes(byte[] src)
    Конвертирование шестанадцатеричной строки в байтовый массив.
    Parameters:
      `src` - исходный буфер (шестнадцатеричная строка).
    Returns:
      байтовый массив.

  - ### HexToByte

    public static byte HexToByte(byte[] src, int startIndex)
    Конвертирование шестанадцатеричной строки в байт.
    Parameters:
      `src` - исходный буфер (шестнадцатеричная строка).
      `startIndex` - индекс начала данных в исходном буфере.
    Returns:
      байт.

  - ### HexToWord

    public static short HexToWord(byte[] src, int startIndex)
    Конвертирование набора байт в слово.
    Parameters:
      `src` - буфер с исходными данными.
      `startIndex` - стартовый индекс начала данных.
    Returns:
      значение ввиде слова.

  - ### HexToDWord

    public static int HexToDWord(byte[] src, int startIndex)
    Конвертирование набора байт в двойное слово.
    Parameters:
      `src` - буфер с исходными данными.
      `startIndex` - стартовый индекс начала данных.
    Returns:
      значение ввиде двойного слова.

  - ### BytesToHex

    public static byte[] BytesToHex(byte[] src, int srcLen)
    Конвертирование байтов в HEX-представление.
    Parameters:
      `src` - буфер с исходными данными.
      `srcLen` - длина данных.
    Returns:
      HEX-представление.

  - ### ByteToHex

    public static byte[] ByteToHex(byte src)
    Конвертирование байта в HEX-представление.
    Parameters:
      `src` - исходный байт.
    Returns:
      HEX-представление.

  - ### ByteToHexNibble

    public static byte ByteToHexNibble(byte src, int part)
    Byte to hex-nibble conversion.
    Parameters:
      `src` - source byte.
      `part` - part of byte (0 - low 4bit, 1 - hi 4bit).
    Returns:
      hex-nibble.

  - ### Utf8toCp866

    public static String Utf8toCp866(String src)
    Конвертирование строки из UTF8 в CP866.
    Parameters:
      `src` - UTF8 строка.
    Returns:
      CP866 строка.

  - ### Cp866toUtf8

    public static String Cp866toUtf8(String src)
    Конвертирование строки из UTF8 в CP866.
    Parameters:
      `src` - CP866 строка.
    Returns:
      UTF8 строка.

  - ### CalcBCC

    public static int CalcBCC(byte[] buf, int startIndex, int len)
    Подсчет контрольной суммы.
    Parameters:
      `buf` - набор байт.
      `startIndex` - стартовый индекс.
      `len` - длина в байтах, начиная от стартового индекса.
    Returns:
      контрольная сумма.

  - ### IsPrefix

    public static boolean IsPrefix(byte[] data, int startIndex)
    Проверка что данные соотвествуют префиксу.
    Parameters:
      `data` - буффер с данными.
      `startIndex` - отступ от начала буфера.
    Returns:
      true: соответствуют, false: не соответствуют.

  - ### GetUnitID

    public static byte GetUnitID(String ed)
    Определение меры количества предмета расчёта по популярным сокращениям (не всем возможным) для ФФД 1.2 - для неопознанного сокращения возвращается 255 (иная единица измерения); - входная строка также может содержать непосредственное HEX-значение в формате xNN.
    Parameters:
      `ed` - строка для определения.
    Returns:
      код единицы измерения (`TMCommand.unit_id`).

  - ### GetUnitIDHex

    public static String GetUnitIDHex(String ed)
    Определение меры количества предмета расчёта по популярным сокращениям (не всем возможным) для ФФД 1.2 - для неопознанного сокращения возвращается 'FF' (иная единица измерения); - входная строка также может содержать непосредственное HEX-значение в формате xNN.
    Parameters:
      `ed` - строка для определения.
    Returns:
      код единицы измерения в hex строке (`TMCommand.unit_id`).

  - ### GetCmdBuf

    public byte[] GetCmdBuf()
    Получить данные.
    Returns:
      данные ввиде набора байт.

  - ### GetCmdBufLen

    public int GetCmdBufLen()
    Получение размера пакета.
    Returns:
      размер пакета.

  - ### CalcFields

    public int CalcFields()
    Пересчитать количество полей в пакете.
    Returns:
      количество полей.

  - ### GetFields

    public int GetFields()
    Получить количество полей.
    Returns:
      количество полей.

  - ### GetField

    public byte[] GetField(int fieldIndex)
    Получение поля из пакета.
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      null: ошибка, иначе поле ввиде набора байт.

  - ### GetFieldLength

    public int GetFieldLength(int fieldIndex)
    Получение длины поля из пакета.
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      -1: поле не найдено, иначе длина поля.

  - ### GetFieldOffset

    public int GetFieldOffset(int fieldIndex)
    Получить стартовый индекс (смещение) поля из пакета.
    Parameters:
      `fieldIndex` - индекс поля
    Returns:
      0: ошибка, иначе смещение поля в пакете

  - ### GetCmdCode

    public int GetCmdCode()
    Получение кода команды.
    Returns:
      -1 ошибка, иначе код команды.

  - ### GetCmdId

    public byte GetCmdId()
    Получить отличительный байт команды.
    Returns:
      отличительный байт или ( <0 ) код ошибки.

  - ### IsCmdId

    public boolean IsCmdId()
    Проверка отличительного байта команды.
    Returns:
      false: байт не совпадает, true: байт совпадает.

  - ### GetMainError

    public int GetMainError()
    Получение кода основной ошибки из ответа.
    Returns:
      -1 ошибка, иначе код ошибки из ответа `TMCommand.errors`.

  - ### GetSubError

    public int GetSubError()
    Получение кода дополнительной ошибки из ответа.
    Returns:
      -1 ошибка, иначе код дополнительной ошибки из ответа.

  - ### GetHardStatus

    public int GetHardStatus()
    Получение постоянного статуса из ответа.
    Returns:
      -1 ошибка, иначе постоянный статус `TMCommand.hard_status_flags`.

  - ### GetDynamicStatus

    public int GetDynamicStatus()
    Получение динамического статуса из ответа.
    Returns:
      -1 ошибка, иначе динамический статус `TMCommand.dynamic_status_flags`.

  - ### GetFieldHexB

    public byte GetFieldHexB(int fieldIndex)
    Получение поля как байта.
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      значение поля (0: если не найдено).

  - ### GetFieldHexW

    public short GetFieldHexW(int fieldIndex)
    Получение поля как слова.
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      значение поля (0: если не найдено).

  - ### GetFieldHexDW

    public int GetFieldHexDW(int fieldIndex)
    Получение поля как двойного слова.
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      значение поля (0: если не найдено).

  - ### GetFieldValue

    public String GetFieldValue(int fieldIndex)
    Получение поля команды как строки. (без конвертации кодировки).
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      значение поля (пустая строка: если не найдено).

  - ### GetFieldString

    public String GetFieldString(int fieldIndex)
    Получение поля команды как строки. (с конвертацией кодировки из CP866).
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      значение поля (пустая строка: если не найдено).

  - ### GetFieldBin

    public byte[] GetFieldBin(int fieldIndex)
    Получение бинарного поля (конвертация из Hex).
    Parameters:
      `fieldIndex` - индекс поля.
    Returns:
      данные поля (null если пустое поле).

  - ### SetPacket

    public int SetPacket(byte[] data)
    Установка пакета (проверка что пакет является командой и его установка).
    Parameters:
      `data` - данные пакета.
    Returns:
      -1 ошибка, иначе количество полей в пакете.

  - ### SetPacket

    public int SetPacket(byte[] data, int length)
    Установка пакета (проверка что пакет является командой и его установка).
    Parameters:
      `data` - данные пакета.
      `length` - длина пакета.
    Returns:
      -1 ошибка, иначе количество полей в пакете.

  - ### GetPrefix

    public static String GetPrefix()
    Получение префикса команды.
    Returns:
      префикс команды.

  - ### toString

    public String toString()
    Вывод ввиде строки.
    Overrides:
      `toString` in class `Object`
    Returns:
      строка для вывода.

  - ### Replace

    public void Replace(int index, byte data)
    Изменение данных пакета.
    Parameters:
      `index` - индекс (отступ) изменяемых данных пакета.
      `data` - новое значение.

  - ### Replace

    public void Replace(int index, byte[] data)
    Изменение данных пакета.
    Parameters:
      `index` - индекс (отступ) изменяемых данных пакета.
      `data` - новое значение.

  - ### ReCalcBCC

    public void ReCalcBCC()
    Перерасчет контрольного значения (BCC) пакета.

  - ### MakeHexB

    public int MakeHexB(byte src)
    Создание поля H2 (8-битное значение, переведенное в hex вид) команды.
    Parameters:
      `src` - байтовое значение.
    Returns:
      текущая длина сообщения.

  - ### MakeHexW

    public int MakeHexW(short src)
    Создание поля H4 (16-битное значение, переведенное в hex вид) команды.
    Parameters:
      `src` - 16-битное значение.
    Returns:
      текущая длина сообщения.

  - ### MakeHexDW

    public int MakeHexDW(int src)
    Создание поля H8 (32-битное значение, переведенное в hex вид) команды.
    Parameters:
      `src` - 32-битное значение.
    Returns:
      текущая длина сообщения.

  - ### MakeValue

    public int MakeValue(String src)
    Создание строкового поля (без конвертации в CP866).
    Parameters:
      `src` - строка.
    Returns:
      текущая длина сообщения.

  - ### MakeString

    public int MakeString(String src)
    Создание строкового поля (с конвертацией CP866).
    Parameters:
      `src` - строка.
    Returns:
      текущая длина сообщения.

  - ### MakeCashier

    public int MakeCashier(String name, String inn)
    Создать поле с информацией о кассире.
    Parameters:
      `name` - ФИО кассира.
      `inn` - ИНН кассира (необязательное поле).
    Returns:
      текущая длина сообщения.

  - ### MakeBin

    public int MakeBin(byte[] src)
    Добавление бинарного поля (конвертация в Hex).
    Parameters:
      `src` - массив байт.
    Returns:
      текущая длина сообщения.

  - ### MakeDate

    public int MakeDate()
    Добавление поля даты в команду (использует текущую дату).
    Returns:
      текущая длина сообщения.

  - ### MakeTime

    public int MakeTime()
    Добавление поля времени в команду (использует текущее время).
    Returns:
      текущая длина сообщения.

  - ### MakeDate

    public int MakeDate(Calendar cal)
    Добавление поля даты в команду.
    Parameters:
      `cal` - объект-календарь.
    Returns:
      текущая длина сообщения.

  - ### MakeTime

    public int MakeTime(Calendar cal)
    Добавление поля времени в команду.
    Parameters:
      `cal` - объект-календарь.
    Returns:
      текущая длина сообщения.

  - ### MakeHeader

    public int MakeHeader(byte cmdCode)
    Создание заголовочного поля команды.
    Parameters:
      `cmdCode` - код команды.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### MakeTail

    public int MakeTail()
    Создание завершающей части команды.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### MakePosField

    public int MakePosField(TMCommand.FreeFiscalReceipt.PosField field)
    Создание обязательного поля произвольного чека.
    Parameters:
      `field` - описатель поля.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### MakeFreeField

    public int MakeFreeField(TMCommand.FreeFiscalReceipt.FreeField field)
    Создание дополнительного поля произвольного чека.
    Parameters:
      `field` - описатель поля.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdStart

    public int CmdStart()
    Сборка команды "Начало сеанса" [01].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdStart

    public int CmdStart(String tDate, String tTime)
    Сборка команды "Начало сеанса" [01].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdPrintHeader

    public int CmdPrintHeader()
    Сборка команды "Печать заголовка чека" [1D].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdBar2Dprepare

    public int CmdBar2Dprepare(byte options, byte param, String tAdd, String tCode)
    Сборка команды "Подгтовка к печати 2D штрихкода" [1E].
    Parameters:
      `options` - опции 2D штрихкода.
      `param` - параметры 2D штрихкода
      `tAdd` - дополнительные данные.
      `tCode` - текст штрихкода.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdBar2Dprint

    public int CmdBar2Dprint(byte wMul, byte hMul, byte align)
    Сборка команды "Печать 2D штрихкода" [1F].
    Parameters:
      `wMul` - множитель по ширине 2D штрихкода (1..5).
      `hMul` - множитель по высоте 2D штрихкода (1..10).
      `align` - выравнивание (0 - лево, 1 - центр, 2 - вправо).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNonFiscalFree

    public int CmdNonFiscalFree()
    Сборка команды "Печать нефискального произвольного чека" [70]. (В КФН используется как пустая команда, не выполняющая никаких действий).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdShiftReport

    public int CmdShiftReport()
    Сборка команды "Отчет о текущем состоянии" [30].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdShiftReport

    public int CmdShiftReport(String tDate, String tTime)
    Сборка команды "Отчет о текущем состоянии" [30].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdShiftOpen

    public int CmdShiftOpen(String tCashier, String tCashierInn, String tMessage, String tAdd, String tShift)
    Сборка команды "Открыть смену" [02].
    Parameters:
      `tCashier` - имя кассира открывающего смену (до 64 байта).
      `tCashierInn` - ИНН оператора, проводящего регистрацию (12 байт).
      `tMessage` - сообщение для ОФД [резервировано для ФФД 1.05](до 250 байт).
      `tAdd` - дополнительные реквизиты [резервировано для ФФД 1.05](до 250 байт).
      `tShift` - реквизиты смены (до 255 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdShiftOpen

    public int CmdShiftOpen(String tDate, String tTime, String tCashier, String tCashierInn, String tMessage, String tAdd, String tShift)
    Сборка команды "Открыть смену" [02].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tCashier` - имя кассира открывающего смену (до 64 байта).
      `tCashierInn` - ИНН оператора, проводящего регистрацию (12 байт).
      `tMessage` - сообщение для ОФД [резервировано для ФФД 1.05](до 250 байт).
      `tAdd` - дополнительные реквизиты [резервировано для ФФД 1.05](до 250 байт).
      `tShift` - реквизиты смены (до 255 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdShiftClose

    public int CmdShiftClose(String tCashier, String tCashierInn, String tMessage, String tAdd, boolean bNotPrint)
    Сборка команды "Закрыть смену" [31].
    Parameters:
      `tCashier` - имя кассира открывающего смену (до 64 байта).
      `tCashierInn` - ИНН оператора, проводящего регистрацию (12 байт).
      `tMessage` - сообщение для ОФД [резервировано для ФФД 1.05](до 250 байт).
      `tAdd` - дополнительные реквизиты [резервировано для ФФД 1.05](до 250 байт).
      `bNotPrint` - false: печатать отчет, true: не печатать отчет.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdShiftClose

    public int CmdShiftClose(String tDate, String tTime, String tCashier, String tCashierInn, String tMessage, String tAdd, boolean bNotPrint)
    Сборка команды "Закрыть смену" [31].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tCashier` - имя кассира открывающего смену (до 64 байта).
      `tCashierInn` - ИНН оператора, проводящего регистрацию (12 байт).
      `tMessage` - сообщение для ОФД [резервировано для ФФД 1.05](до 250 байт).
      `tAdd` - дополнительные реквизиты [резервировано для ФФД 1.05](до 250 байт).
      `bNotPrint` - false: печатать отчет, true: не печатать отчет.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetSerialNo

    public int CmdGetSerialNo()
    Сборка команды "Получение заводского номера ККТ" [96].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (S10) Заводской номер ККТ
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetInfo

    public int CmdGetInfo()
    Сборка команды "Получение информации о ККТ" [97].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (S16) Наименование модели ККТ
    - Поле 6: (S16) Информация о модели КФН
    - Поле 7: (S10) Заводской номер ККТ
    - Поле 8: (S20) Регистрационный номер ККТ
    - Поле 9: (S12) ИНН
    - Поле 10: (S7) Версия прошивки КФН
    - Поле 11: (S16) Заводской номер ФН
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetDateTime

    public int CmdGetDateTime()
    Сборка команды "Чтение времени и даты" [43].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (D6) Дата, установленная в КФН (формат ДДММГГ)
    - Поле 6: (T4) Время, установленное в КФН (формат ЧЧММ)
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetDateTime

    public int CmdSetDateTime(String tDate, String tTime)
    Сборка команды "Установка времени и даты" [42].
    Parameters:
      `tDate` - текущая дата (формат ДДММГГ).
      `tTime` - текущее время (формат ЧЧММ).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetDateTime

    public int CmdSetDateTime()
    Сборка команды "Установка времени и даты" [42].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGetStatus

    public int CmdFNGetStatus()
    Сборка команды "Запрос статуса ФН" [29].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Состояние фазы жизни
    - Поле 6: (H2) Текущий документ
    - Поле 7: (H2) Данные документа
    - Поле 8: (H2) Состояние смены
    - Поле 9: (H2) Флаги предупреждения (смотри `TMCommand.fn_warn_flags`)
    - Поле 10: (D10) Дата и время ФН (формат ДДММГГччмм)
    - Поле 11: (S16) Заводской номер ФН
    - Поле 12: (W8) Номер последнего ФД
    - Поле 13: (D6) Срок действия ФН (формат ДДММГГ)
    - Поле 14: (S16) Версия ФН
    - Поле 15: (H2) Тип ФН (00-отладочный, 01-серийный)
    - Поле 16: (H4) Номер смены в ФН
    - Поле 17: (H4) Номер кассового чека в ФН
    - Поле 18: (H2) Код последней ошибки при работе с ОФД (00 - нет ошибки)
    - Поле 19: (S64) Строка с расшифровкой последней ошибки при работе с ОФД
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGetError

    public int CmdFNGetError()
    Сборка команды "Запрос последних ошибок ФН" [2A].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (S256) Детализация ошибки
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetWaitDocs

    public int CmdGetWaitDocs()
    Сборка команды "Запрос количества неподтверждённых фискальных документов" [39].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Количество неподтверждённых фискальных документов
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGetCommStatus

    public int CmdFNGetCommStatus()
    Сборка команды "Получить из ФН статус обмена с ОФД" [2B].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Статус информационного обмена (смотри `TMCommand.ofd_status_flags`)
    - Поле 6: (H2) Начато чтение сообщения для ОФД (1 – да, 0 – нет)
    - Поле 7: (H4) Количество сообщений для передачи в ОФД
    - Поле 8: (W8) Номер первого в очереди документа для ОФД
    - Поле 9: (D10) Дата и время первого в очереди документа для ОФД (формат ДДММГГччмм)
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNSetCommStatus

    public int CmdFNSetCommStatus(boolean bConn)
    Сборка команды "Установить в ФН статус обмена с ОФД" [5F].
    Parameters:
      `bConn` - false: нет соединения, true: есть соединение.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNReadOpen

    public int CmdFNReadOpen()
    Сборка команды "Начать чтение документа из ФН" [5A].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Размер пакета
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNRead

    public int CmdFNRead(short offSet, short size)
    Сборка команды "Чтение блока документа из ФН" [5B].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2..512) Блок данных (до 256 байт) в hex представлении
    Parameters:
      `offSet` - отступ от начала блока.
      `size` - размер ожидаемых данных (не рекомендуется использовать значение больше MAX_OFD_DATA_PART_SIZE).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNReadClose

    public int CmdFNReadClose()
    Сборка команды "Завершение чтения документа" [5D].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNReadCancel

    public int CmdFNReadCancel()
    Сборка команды "Отмена чтения документа из ФН" [5C].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNWriteScript

    public int CmdFNWriteScript(byte[] data)
    Сборка команды "Сохранение квитанции полученой от ОФД" [5E].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Код ответа ОФД
    - Поле 6: (H0..512) Сообщение из ответа ОФД
    Parameters:
      `data` - данные квитанции из ОФД.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGetRegParam

    public int CmdFNGetRegParam(short tlvId)
    Сборка команды "Запрос параметров регистрации" [88].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: Значение TLV параметра
    Parameters:
      `tlvId` - тэг параметра регистрации (можно запросить теги 1009, 1013, 1017, 1021, 1048).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGetDoc

    public int CmdFNGetDoc(int numDoc, byte mode)
    Сборка команды "Документ по номеру из ФН" [8B].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Тип документа (значение cовпадает с типом TLV документа ФН)
    - Поле 6: (H2) Квитанция из ОФД (0 - не получена, 1 - получена)
    Далее идут данные документа:
    - Поле 7: (D10) Дата и время документа ФН (формат ДДММГГччмм)
    - Поле 8: (W8) Порядковый номер документа ФН
    - Поле 9: (W8) Фискальный признак документа ФН
    Последующие поля зависят от типа документа (смотри "Инструкция по программированию ККТ").
    Parameters:
      `numDoc` - номер документа ФН.
      `mode` - режим операции (смотри `TMCommand.fn_doc_mode`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNClose

    @Deprecated public int CmdFNClose(String tOperatorName, String tOperatorINN)
    Deprecated.
    Сборка команды "Закрытие ФН" [8D].
    Parameters:
      `tOperatorName` - имя оператора закрывающего ФН (64 байта).
      `tOperatorINN` - ИНН оператора закрывающего ФН (12 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNClose

    @Deprecated public int CmdFNClose(String tDate, String tTime, String tOperatorName, String tOperatorINN)
    Deprecated.
    Сборка команды "Закрытие ФН" [8D].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tOperatorName` - имя оператора закрывающего ФН (64 байта).
      `tOperatorINN` - ИНН оператора закрывающего ФН (12 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNClose

    public int CmdFNClose(String tOperatorName, String tOperatorINN, byte mode)
    Сборка команды "Закрытие ФН" [8D].
    Parameters:
      `tOperatorName` - имя оператора закрывающего ФН (64 байта).
      `tOperatorINN` - ИНН оператора закрывающего ФН (12 байт).
      `mode` - режим выполнения команды (0-брать из ФН, 1-брать из КМОС, 2-брать из параметров команды).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNClose

    public int CmdFNClose(String tDate, String tTime, String tOperatorName, String tOperatorINN, byte mode)
    Сборка команды "Закрытие ФН" [8D].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tOperatorName` - имя оператора закрывающего ФН (64 байта).
      `tOperatorINN` - ИНН оператора закрывающего ФН (12 байт).
      `mode` - режим выполнения команды (0-брать из ФН, 1-брать из КМОС, 2-брать из параметров команды).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGetTotal

    public int CmdFNGetTotal(byte numReg, boolean bPrint)
    Сборка команды "Итоги регистрации" [8F].
    В ответе на эту команду возращаются следующие поля (ФФД 1.1 и старше):
    - Поле 5: (D10) Дата и время регистрации (формат ДДММГГччмм)
    - Поле 6: (S12) ИНН оператора
    - Поле 7: (S20) Регистрационный номер ККТ
    - Поле 8: (H2) Системы налогообложения (смотри `TMCommand.tax_types`)
    - Поле 9: (H2) Режим работы ККТ (младший байт)
    - Поле 10: (W8) Порядковый номер документа регистрации
    - Поле 11: (W8) Фискальный признак документа регистрации
    - Поле 12: (H2) Режим работы ККТ (старший байт)
    - Поле 13: (S12) ИНН ОФД
    - Поле 14: (H2) Причины перерегистрации
    В ответе на эту команду возращаются следующие поля (для ФФД 1.05):
    - Поле 5: (D10) Дата и время регистрации (формат ДДММГГччмм)
    - Поле 6: (S12) ИНН оператора
    - Поле 7: (S20) Регистрационный номер ККТ
    - Поле 8: (H2) Системы налогообложения (смотри `TMCommand.tax_types`)
    - Поле 9: (H2) Режим работы ККТ (младший байт)
    - Поле 10: (W8) Порядковый номер документа регистрации
    - Поле 11: (W8) Фискальный признак документа регистрации
    - Поле 12: (H2) Причины перерегистрации
    Parameters:
      `numReg` - номер регистрации (0: ККТ возвращает данные по последней выполненной регистрации).
      `bPrint` - печатать чек.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDGetTicket

    public int CmdOFDGetTicket(int numDoc, boolean bPrint)
    Сборка команды "Запрос Квитанции ОФД из ФН" [3A].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (D10) Дата и время (формат ДДММГГччмм)
    - Поле 6: (W8) Порядковый номер документа ФН
    - Поле 7: (S18) Фискальный признак квитанции ОФД
    Parameters:
      `numDoc` - номер документа.
      `bPrint` - печатать чек.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDGetPaymentState

    public int CmdOFDGetPaymentState()
    Сборка команды "Отчет о текущем состоянии расчетов" [3B].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (W8) Порядковый номер документа ФН
    - Поле 6: (W8) Фискальный признак
    - Поле 7: (W8) Количество неподтверждённых фискальных документов
    - Поле 8: (D6) Дата первого неподтверждённого документа (формат ДДММГГ)
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDGetParam

    public int CmdOFDGetParam()
    Сборка команды "Получить параметры обмена с ОФД" [67].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Порт сервера ОФД
    - Поле 6: (H4) Таймаут обращения (сек)
    - Поле 7: (H4) Таймаут чтения (сек)
    - Поле 8: (H4) Таймаут записи (сек)
    - Поле 9: (S128) Адрес хоста (DNS или IP-адрес)
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDGetParamExt

    public int CmdOFDGetParamExt(byte index)
    Сборка команды "Получить параметры обмена с сервером ОФД/ОИСМ/AC ОКП" [67].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Порт сервера
    - Поле 6: (H4) Таймаут обращения (сек)
    - Поле 7: (H4) Таймаут чтения (сек)
    - Поле 8: (H4) Таймаут записи (сек)
    - Поле 9: (S128) Адрес хоста (DNS или IP-адрес)
    - Поле 10: (H2) Тип сервера (`TMCommand.server_types`)
    Parameters:
      `index` - индекс сервера (смотри `TMCommand.server_types`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDSetParam

    public int CmdOFDSetParam(String tAddress, short port, short timeConn, short timeRecv, short timeSend)
    Сборка команды "Установить параметры обмена с ОФД" [66].
    Parameters:
      `tAddress` - адрес ОФД (до 128 байт).
      `port` - порт ОФД.
      `timeConn` - таймаут соединения с ОФД (в секундах).
      `timeRecv` - таймаут ожидания ответа от ОФД (в секундах).
      `timeSend` - таймаут отправки пакета в ОФД (в секундах).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDSetParamExt

    public int CmdOFDSetParamExt(String tAddress, short port, short timeConn, short timeRecv, short timeSend, byte index)
    Сборка команды "Установить параметры обмена с ОФД/ОИСМ/AC ОКП" [66].
    Parameters:
      `tAddress` - адрес сервера (до 128 байт).
      `port` - порт сервера.
      `timeConn` - таймаут соединения с сервером (в секундах).
      `timeRecv` - таймаут ожидания ответа от сервера (в секундах).
      `timeSend` - таймаут отправки пакета на сервер (в секундах).
      `index` - индекс сервера (смотри `TMCommand.server_types`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDGetInfoUrl

    public int CmdOFDGetInfoUrl()
    Сборка команды "Получение адреса проверки чеков" [6E].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (S127) Адрес ФНС
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOFDSetInfoUrl

    public int CmdOFDSetInfoUrl(String tURL)
    Сборка команды "Установка адреса проверки чеков" [6D].
    Parameters:
      `tURL` - адрес сервера для проверки чеков.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdCertification

    public int CmdCertification(String tSerNum)
    Сборка команды "Сертификация" [92].
    Parameters:
      `tSerNum` - серийный номер КФН (до 10 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdCertification

    public int CmdCertification(String tSerNum, String tCode)
    Сборка команды "Сертификация" [92].
    Parameters:
      `tSerNum` - серийный номер КФН (до 10 байт).
      `tCode` - код активации КФН (16 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdRegistration_1_05

    public int CmdRegistration_1_05(String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace)
    Сборка команды "Регистрация (Перерегистрация)" ФФД1.05 [04].
    Parameters:
      `tFirmName` - наименование организации (до 64 байт).
      `tFirmINN` - ИНН организации (10 или 12 байт).
      `taxTypes` - система налогообложения (смотри `TMCommand.tax_types`).
      `tRegKKT` - регистрационный номер ККТ (16 байт).
      `mode` - режим работы ККТ (смотри `TMCommand.mode_types`).
      `tAutoNum` - номер автомата (10 байт).
      `tOperatorName` - имя оператора, проводящего регистрацию (до 64 байт).
      `tOperatorINN` - ИНН оператора, проводящего регистрацию (12 байт).
      `tAddress` - адрес расчетов (до 255 байт).
      `tOfdINN` - ИНН оператора фискальных данных (10 байт).
      `tRegNum` - номер зарегистрированнрй ККТ [присваивается ФНС] (10 байт).
      `reason` - код причины перерегистрации (смотри `TMCommand.reg_reasons`).
      `specific` - резервированный параметр (всегда 0).
      `agent` - агент (смотри `TMCommand.agent_type`).
      `tOfdName` - наименование ОФД (до 252 байт).
      `tEmail` - адрес электронной почты регистрирующей стороны (до 255 байт).
      `tOfdURL` - сайт ФНС (до 255 байт).
      `tPlace` - место расчетов.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdRegistration_1_05

    public int CmdRegistration_1_05(String tDate, String tTime, String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace)
    Сборка команды "Регистрация (Перерегистрация)" ФФД1.05 [04].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tFirmName` - наименование организации (до 64 байт).
      `tFirmINN` - ИНН организации (10 или 12 байт).
      `taxTypes` - система налогообложения (смотри `TMCommand.tax_types`).
      `tRegKKT` - регистрационный номер ККТ (16 байт).
      `mode` - режим работы ККТ (смотри `TMCommand.mode_types`).
      `tAutoNum` - номер автомата (10 байт).
      `tOperatorName` - имя оператора, проводящего регистрацию (до 64 байт).
      `tOperatorINN` - ИНН оператора, проводящего регистрацию (12 байт).
      `tAddress` - адрес расчетов (до 255 байт).
      `tOfdINN` - ИНН оператора фискальных данных (10 байт).
      `tRegNum` - номер зарегистрированнрй ККТ [присваивается ФНС] (10 байт).
      `reason` - код причины перерегистрации (смотри `TMCommand.reg_reasons`).
      `specific` - резервированный параметр (всегда 0).
      `agent` - агент (смотри `TMCommand.agent_type`).
      `tOfdName` - наименование ОФД (до 252 байт).
      `tEmail` - адрес электронной почты регистрирующей стороны (до 255 байт).
      `tOfdURL` - сайт ФНС (до 255 байт).
      `tPlace` - место расчетов.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdRegistration_1_1

    public int CmdRegistration_1_1(String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code)
    Сборка команды "Регистрация (Перерегистрация)" ФФД1.1 [04].
    Parameters:
      `tFirmName` - наименование организации (до 64 байт).
      `tFirmINN` - ИНН организации (10 или 12 байт).
      `taxTypes` - система налогообложения (смотри `TMCommand.tax_types`).
      `tRegKKT` - регистрационный номер ККТ (16 байт).
      `mode` - режим работы ККТ (смотри `TMCommand.mode_types`).
      `tAutoNum` - номер автомата (10 байт).
      `tOperatorName` - имя оператора, проводящего регистрацию (до 64 байт).
      `tOperatorINN` - ИНН оператора, проводящего регистрацию (12 байт).
      `tAddress` - адрес расчетов (до 255 байт).
      `tOfdINN` - ИНН оператора фискальных данных (10 байт).
      `tRegNum` - номер зарегистрированнрй ККТ [присваивается ФНС] (10 байт).
      `reason` - код причины перерегистрации (смотри `TMCommand.reg_reasons`).
      `specific` - резервированный параметр (всегда 0).
      `agent` - агент (смотри `TMCommand.agent_type`).
      `tOfdName` - наименование ОФД (до 252 байт).
      `tEmail` - адрес электронной почты регистрирующей стороны (до 255 байт).
      `tOfdURL` - сайт ФНС (до 255 байт).
      `tPlace` - место расчетов.
      `code` - код причин изменения сведений о ККТ (смотри `TMCommand.reg_change_flags`)..
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdRegistration_1_1

    public int CmdRegistration_1_1(String tDate, String tTime, String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, short mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code)
    Сборка команды "Регистрация (Перерегистрация)" ФФД1.1 [04].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tFirmName` - наименование организации (до 64 байт).
      `tFirmINN` - ИНН организации (10 или 12 байт).
      `taxTypes` - система налогообложения (смотри `TMCommand.tax_types`).
      `tRegKKT` - регистрационный номер ККТ (16 байт).
      `mode` - режим работы ККТ (смотри `TMCommand.mode_types`).
      `tAutoNum` - номер автомата (10 байт).
      `tOperatorName` - имя оператора, проводящего регистрацию (до 64 байт).
      `tOperatorINN` - ИНН оператора, проводящего регистрацию (12 байт).
      `tAddress` - адрес расчетов (до 255 байт).
      `tOfdINN` - ИНН оператора фискальных данных (10 байт).
      `tRegNum` - номер зарегистрированнрй ККТ [присваивается ФНС] (10 байт).
      `reason` - код причины перерегистрации (смотри `TMCommand.reg_reasons`).
      `specific` - резервированный параметр (всегда 0).
      `agent` - агент (смотри `TMCommand.agent_type`).
      `tOfdName` - наименование ОФД (до 252 байт).
      `tEmail` - адрес электронной почты регистрирующей стороны (до 255 байт).
      `tOfdURL` - сайт ФНС (до 255 байт).
      `tPlace` - место расчетов.
      `code` - код причин изменения сведений о ККТ (смотри `TMCommand.reg_change_flags`)..
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdRegistration_1_2

    public int CmdRegistration_1_2(String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, int mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code, String addReqOR, String addDataOR)
    Сборка команды "Регистрация (Перерегистрация)" ФФД1.2 [04].
    Parameters:
      `tFirmName` - наименование организации (до 64 байт).
      `tFirmINN` - ИНН организации (10 или 12 байт).
      `taxTypes` - система налогообложения (смотри `TMCommand.tax_types`).
      `tRegKKT` - регистрационный номер ККТ (16 байт).
      `mode` - режим работы ККТ (смотри `TMCommand.mode_types`).
      `tAutoNum` - номер автомата (10 байт).
      `tOperatorName` - имя оператора, проводящего регистрацию (до 64 байт).
      `tOperatorINN` - ИНН оператора, проводящего регистрацию (12 байт).
      `tAddress` - адрес расчетов (до 255 байт).
      `tOfdINN` - ИНН оператора фискальных данных (10 байт).
      `tRegNum` - номер зарегистрированнрй ККТ [присваивается ФНС] (10 байт).
      `reason` - код причины перерегистрации (смотри `TMCommand.reg_reasons`).
      `specific` - резервированный параметр (всегда 0).
      `agent` - агент (смотри `TMCommand.agent_type`).
      `tOfdName` - наименование ОФД (до 252 байт).
      `tEmail` - адрес электронной почты регистрирующей стороны (до 255 байт).
      `tOfdURL` - сайт ФНС (до 255 байт).
      `tPlace` - место расчетов.
      `code` - код причин изменения сведений о ККТ (смотри `TMCommand.reg_change_flags`).
      `addReqOR` - дополнительный реквизит ОР (до 32 байт).
      `addDataOR` - дополнительные данные ОР (до 32 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdRegistration_1_2

    public int CmdRegistration_1_2(String tDate, String tTime, String tFirmName, String tFirmINN, byte taxTypes, String tRegKKT, int mode, String tAutoNum, String tOperatorName, String tOperatorINN, String tAddress, String tOfdINN, String tRegNum, byte reason, byte specific, byte agent, String tOfdName, String tEmail, String tOfdURL, String tPlace, int code, String addReqOR, String addDataOR)
    Сборка команды "Регистрация (Перерегистрация)" ФФД1.2 [04].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tFirmName` - наименование организации (до 64 байт).
      `tFirmINN` - ИНН организации (10 или 12 байт).
      `taxTypes` - система налогообложения (смотри `TMCommand.tax_types`).
      `tRegKKT` - регистрационный номер ККТ (16 байт).
      `mode` - режим работы ККТ (смотри `TMCommand.mode_types`).
      `tAutoNum` - номер автомата (10 байт).
      `tOperatorName` - имя оператора, проводящего регистрацию (до 64 байт).
      `tOperatorINN` - ИНН оператора, проводящего регистрацию (12 байт).
      `tAddress` - адрес расчетов (до 255 байт).
      `tOfdINN` - ИНН оператора фискальных данных (10 байт).
      `tRegNum` - номер зарегистрированнрй ККТ [присваивается ФНС] (10 байт).
      `reason` - код причины перерегистрации (смотри `TMCommand.reg_reasons`).
      `specific` - резервированный параметр (всегда 0).
      `agent` - агент (смотри `TMCommand.agent_type`).
      `tOfdName` - наименование ОФД (до 252 байт).
      `tEmail` - адрес электронной почты регистрирующей стороны (до 255 байт).
      `tOfdURL` - сайт ФНС (до 255 байт).
      `tPlace` - место расчетов.
      `code` - код причин изменения сведений о ККТ (смотри `TMCommand.reg_change_flags`).
      `addReqOR` - дополнительный реквизит ОР (до 32 байт).
      `addDataOR` - дополнительные данные ОР (до 32 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetResources

    public int CmdGetResources()
    Сборка команды "Информация о свободных ресурсах" [03].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Осталось перерегистраций ФН
    - Поле 6: (H4) Зарезервировано
    - Поле 7: (H4) Номер последнего отчёта закрытия смены
    - Поле 8: (D6) Дата открытия смены (формат ДДММГГ), "000000" - если смена закрыта
    - Поле 9: (T4) Время открытия смены (формат ЧЧММ), "0000" - если смена закрыта
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetResources

    public int CmdGetResources(String tDate, String tTime)
    Сборка команды "Информация о свободных ресурсах" [03].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Осталось перерегистраций ФН
    - Поле 6: (H4) Зарезервировано
    - Поле 7: (H4) Номер последнего отчёта закрытия смены
    - Поле 8: (D6) Дата открытия смены (формат ДДММГГ), "000000" - если смена закрыта
    - Поле 9: (T4) Время открытия смены (формат ЧЧММ), "0000" - если смена закрыта
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptOpen

    public int CmdReceiptOpen(byte receiptType, String tCashier, String tCashierINN, String tTableNum, String tPlaceNum, byte copies, byte taxMode, String tAccount, String tComment)
    Сборка команды "Начало формирования кассового чека на чековой ленте" [10].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Номер чека в смене
    Добавление дополнительных тегов в чек происходит через параметр комментарий (tComment), строка комментария в этом случае имеет следующий формат:
    "<[номер тега 1]>[данные тега 1]|<[номер тега 2]>[данные тега 2]...|[текст комментария]"
    Например: "<1008>nilstarsoft@mail.ru|Электронный чек для nilstarsoft@mail.ru"
    Parameters:
      `receiptType` - тип чека (смотри `TMCommand.receipt_types`).
      `tCashier` - кассир (до 64 байт).
      `tCashierINN` - ИНН кассира (10 или 12 байт).
      `tTableNum` - номер столика (до 15 байт).
      `tPlaceNum` - номер места (до 15 байт).
      `copies` - количество копий.
      `taxMode` - система налогообложения (смотри `TMCommand.tax_types`).
      `tAccount` - номер счета (до 30 байт).
      `tComment` - комментарий (до 254 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptOpen

    public int CmdReceiptOpen(String tDate, String tTime, byte receiptType, String tCashier, String tCashierINN, String tTableNum, String tPlaceNum, byte copies, byte taxMode, String tAccount, String tComment)
    Сборка команды "Начало формирования кассового чека на чековой ленте" [10].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Номер чека в смене
    Добавление дополнительных тегов в чек происходит через параметр комментарий (tComment), строка комментария в этом случае имеет следующий формат:
    "<[номер тега 1]>[данные тега 1]|<[номер тега 2]>[данные тега 2]...|[текст комментария]"
    Например: "<1008>nilstarsoft@mail.ru|Электронный чек для nilstarsoft@mail.ru"
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `receiptType` - тип чека (смотри `TMCommand.receipt_types`).
      `tCashier` - кассир (до 64 байт).
      `tCashierINN` - ИНН кассира (10 или 12 байт).
      `tTableNum` - номер столика (до 15 байт).
      `tPlaceNum` - номер места (до 15 байт).
      `copies` - количество копий.
      `taxMode` - система налогообложения (смотри `TMCommand.tax_types`).
      `tAccount` - номер счета (до 30 байт).
      `tComment` - комментарий (до 254 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptItem

    public int CmdReceiptItem(String tName, String tCode, String tPrice, String tQty, String tUnit, byte taxIndex, byte calcMethod, byte calcObject, byte agentType, byte depIndex, String tDepName, String tComment)
    Сборка команды "Оформление позиции товара/услуги" [11].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Сумма оформленной позиции
    - Поле 6: (M14) Текущая сумма документа
    Добавление дополнительных тегов в позицию товара происходит через параметр комментарий (tComment), строка комментария в этом случае имеет следующий формат:
    "<[номер тега 1]>[данные тега 1]|<[номер тега 2]>[данные тега 2]...|[текст комментария]"
    Например: "<1162>4508000002C0EED8|Позиция с маркировкой"
    Parameters:
      `tName` - наименование товара (до 128 байт).
      `tCode` - код/артикул товара (до 20 байт).
      `tPrice` - стоимость товара в формате "РУБ.КК" (от "0" до "9999999.99").
      `tQty` - количество товара (от "0" до "199999.9999").
      `tUnit` - единица измерения товара (до 3 байт).
      `taxIndex` - индекс налога (смотри `TMCommand.tax_indexes`).
      `calcMethod` - признак способа расчета (смотри `TMCommand.calc_methods`).
      `calcObject` - признак предмета расчета (смотри `TMCommand.calc_objects`).
      `agentType` - признак агента [0: не используется] (смотри `TMCommand.agent_type`).
      `depIndex` - индекс отдела (от 01 до 32).
      `tDepName` - название отдела (до 20 символов).
      `tComment` - комментарий (до 254 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptTotal

    public int CmdReceiptTotal(String tComment)
    Сборка команды "Итог по чеку" [12].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Текущая сумма документа
    Parameters:
      `tComment` - комментарий.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptTender

    public int CmdReceiptTender(byte payIndex, String tSumma, String tAdd, String tComment)
    Сборка команды "Расчёт" [13].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Доплата
    - Поле 6: (M14) Сдача
    - Поле 7: (H2) Индекс НДС 1
    - Поле 8: (M14) Сумма НДС 1
    - ... возвращается информация обо всех НДС, примененных в чеке (1..n)
    - Поле 7+(n*2): (H2) Индекс НДС n
    - Поле 8+(n*2): (M14) Сумма НДС n
    Parameters:
      `payIndex` - индекс оплаты (смотри `TMCommand.pay_indexes`).
      `tSumma` - сумма, внесённая покупателем (от "0" до "999999999.99").
      `tAdd` - дополнительная информация об расчете (до 40 байт).
      `tComment` - комментарий (до 254 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptClose

    public int CmdReceiptClose()
    Сборка команды "Закрытие документа" [14].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (W8) Номер фискального документа
    - Поле 6: (S200) Строка QR-кода документа
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptComission

    public int CmdReceiptComission(boolean isDiscount, String tPercent, String tSumma, String tName)
    Сборка команды "Скидка/Наценка" [15].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (N5) Процент скидки/наценки ("0.01".."100")
    - Поле 6: (M12) Сумма скидки/наценки
    - Поле 7: (M14) Текущая сумма документа
    Parameters:
      `isDiscount` - false: наценка, true: скидка.
      `tPercent` - процент скидки/наценки.
      `tSumma` - сумма скидки/наценки.
      `tName` - наименование скидки/наценки.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptSubtotal

    public int CmdReceiptSubtotal(String tComment)
    Сборка команды "Подитог" [16].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Текущая сумма документа
    Parameters:
      `tComment` - комментарий.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptCancel

    public int CmdReceiptCancel()
    Сборка команды "Аннулирование" [17].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptBarcode

    public int CmdReceiptBarcode(byte barType, byte barMode, byte barFont, byte height, byte width, String tBarcode)
    Сборка команды "Печать штрих-кода" [1A].
    Parameters:
      `barType` - тип штрихкода (смотри `TMCommand.barcode_types`).
      `barMode` - режим печати символов штрихкода.
      `barFont` - шрифт символов штрихкода.
      `height` - высота штрихкода.
      `width` - ширина штрихкода.
      `tBarcode` - штрихкод.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptTax

    public int CmdReceiptTax(byte taxIndex, String tComment)
    Сборка команды "Налоговая ставка" [1B].
    В ответе на эту команду возращаются следующие поля:
    1. Если команда "Налоговая ставка" выполняется после команды "Оформление позиции товара/услуги" [11]:
    - Поле 5: (M14) Сумма налога по указанному в параметрах индексу по текущей позиции чека
    - Поле 6: (M14) Текущая сумма налога по указанному в параметрах индексу по чеку
    2. Если команда "Налоговая ставка" выполняется после команды "Итог" [12]:
    - Поле 5: (H2) Индекс налоговой ставки 1
    - Поле 6: (M14) Итоговая сумма налога 1 по чеку
    - ... возвращается для всех налоговых ставок, примененных в чеке
    - Поле 5+(n*2): (H2) Индекс налоговой ставки n
    - Поле 6+(n*2): (M14) Итоговая сумма налога n по чеку
    Parameters:
      `taxIndex` - индекс налога (смотри `TMCommand.tax_indexes`).
      `tComment` - комментарий.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptComment

    public int CmdReceiptComment(String tComment)
    Сборка команды "Строка комментария" [1С].
    Parameters:
      `tComment` - комментарий.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptAddTLV

    public int CmdReceiptAddTLV(short TLVId, String tData)
    Сборка команды "Добавление TLV структуры в документ" [6A].
    Parameters:
      `TLVId` - тэг TLV.
      `tData` - строковые данные.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdToCash

    public int CmdToCash(String tSum, String tUserName)
    Сборка команды "Подкрепление" [32].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Сумма наличных до подкрепления
    - Поле 6: (M14) Сумма наличных после подкрепления
    Parameters:
      `tSum` - сумма операции (до 1000000000.00).
      `tUserName` - имя кассира (до 255 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdToCash

    public int CmdToCash(String tDate, String tTime, String tSum, String tUserName)
    Сборка команды "Подкрепление" [32].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Сумма наличных до подкрепления
    - Поле 6: (M14) Сумма наличных после подкрепления
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tSum` - сумма операции (до 1000000000.00).
      `tUserName` - имя кассира (до 255 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFromCash

    public int CmdFromCash(String tSum, String tUserName)
    Сборка команды "Инкассация" [33].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Сумма наличных до инкассации
    - Поле 6: (M14) Сумма наличных после инкассации
    Parameters:
      `tSum` - сумма операции (до 1000000000.00).
      `tUserName` - имя кассира (до 255 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFromCash

    public int CmdFromCash(String tDate, String tTime, String tSum, String tUserName)
    Сборка команды "Инкассация" [33].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Сумма наличных до инкассации
    - Поле 6: (M14) Сумма наличных после инкассации
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `tSum` - сумма операции (до 1000000000.00).
      `tUserName` - имя кассира (до 255 байт).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetMoney

    public int CmdGetMoney()
    Сборка команды "Получить электронный отчёт" [34].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Приход наличные
    - Поле 6: (M14) Возврат прихода наличные
    - Поле 7: (M14) Расход наличные
    - Поле 8: (M14) Возврат расхода наличные
    - Поле 9: (M14) Приход электронные
    - Поле 10: (M14) Возврат прихода электронные
    - Поле 11: (M14) Расход электронные
    - Поле 12: (M14) Возврат расхода электронные
    - Поле 13: (M14) Приход аванс
    - Поле 14: (M14) Возврат прихода аванс
    - Поле 15: (M14) Расход аванс
    - Поле 16: (M14) Возврат расхода аванс
    - Поле 17: (M14) Приход кредит
    - Поле 18: (M14) Возврат прихода кредит
    - Поле 19: (M14) Расход кредит
    - Поле 20: (M14) Возврат расхода кредит
    - Поле 21: (M14) Приход иная форма оплаты
    - Поле 22: (M14) Возврат прихода иная форма оплаты
    - Поле 23: (M14) Расход иная форма оплаты
    - Поле 24: (M14) Возврат расхода иная форма оплаты
    - Поле 25: (M14) Итого приход
    - Поле 26: (M14) Итого возврат
    - Поле 27: (M14) Итого расход
    - Поле 28: (M14) Итого возврат расхода
    - Поле 29: (M14) Подкрепление
    - Поле 30: (M14) Инкассация
    - Поле 31: (M14) Сумма в кассе
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetMoney

    public int CmdGetMoney(String tDate, String tTime)
    Сборка команды "Получить электронный отчёт" [34].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Приход наличные
    - Поле 6: (M14) Возврат прихода наличные
    - Поле 7: (M14) Расход наличные
    - Поле 8: (M14) Возврат расхода наличные
    - Поле 9: (M14) Приход электронные
    - Поле 10: (M14) Возврат прихода электронные
    - Поле 11: (M14) Расход электронные
    - Поле 12: (M14) Возврат расхода электронные
    - Поле 13: (M14) Приход аванс
    - Поле 14: (M14) Возврат прихода аванс
    - Поле 15: (M14) Расход аванс
    - Поле 16: (M14) Возврат расхода аванс
    - Поле 17: (M14) Приход кредит
    - Поле 18: (M14) Возврат прихода кредит
    - Поле 19: (M14) Расход кредит
    - Поле 20: (M14) Возврат расхода кредит
    - Поле 21: (M14) Приход иная форма оплаты
    - Поле 22: (M14) Возврат прихода иная форма оплаты
    - Поле 23: (M14) Расход иная форма оплаты
    - Поле 24: (M14) Возврат расхода иная форма оплаты
    - Поле 25: (M14) Итого приход
    - Поле 26: (M14) Итого возврат
    - Поле 27: (M14) Итого расход
    - Поле 28: (M14) Итого возврат расхода
    - Поле 29: (M14) Подкрепление
    - Поле 30: (M14) Инкассация
    - Поле 31: (M14) Сумма в кассе
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetReportExt

    public int CmdGetReportExt()
    Сборка команды "Получение электронного отчета (расширенного)" [37].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) Итог прихода
    - Поле 6: (M14) Итог возврата прихода
    - Поле 7: (M14) Итог расхода
    - Поле 8: (M14) Итог возврата расхода
    - Поле 9: (M14) Итог коррекции прихода
    - Поле 10: (M14) Итог коррекции расхода
    - Поле 11: (M14) Подкрепление
    - Поле 12: (M14) Инкассация
    - Поле 13: (M14) Сумма в кассе
    - Поле 14: (M14) Нарастающий итог прихода
    - Поле 15: (M14) Нарастающий итог возврата прихода
    - Поле 16: (M14) Нарастающий итог расхода
    - Поле 17: (M14) Нарастающий итог возврата расхода
    - Поле 18: (M14) Нарастающий итог коррекции прихода
    - Поле 19: (M14) Нарастающий итог коррекции расхода
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetReportPayment

    public int CmdGetReportPayment(byte payIndex)
    Сборка команды "Получение отчета по типу оплат" [36].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (M14) "Вид оплаты" приход
    - Поле 6: (M14) "Вид оплаты" возврат. прихода
    - Поле 7: (M14) "Вид оплаты" расход
    - Поле 8: (M14) "Вид оплаты" возврат расхода
    Parameters:
      `payIndex` - индекс оплаты (смотри `TMCommand.pay_indexes`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetCurCounters

    public int CmdGetCurCounters()
    Сборка команды "Получение текущих номеров документов" [35].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Сквозной номер последнего документа
    - Поле 6: (H4) Номер последнего кассового чека
    - Поле 7: (H4) Зарезервировано
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdCorrection

    @Deprecated public int CmdCorrection(byte receiptType, String tUserName, String tUserINN, byte copies, byte taxType, String tTotal, String tCash, String tCard, String tAdvance, String tCredit, String tOncoming, byte corrType, String tDescription, int date, String tNumDoc, byte taxIndex)
    Deprecated.
    Сборка команды "Кассовый чек коррекции" (только для ФФД 1.05) [3C]. Устаревшая функция не поддерживается на прошивках КФН начиная с 0xxx5xx.
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (W8) Порядковый номер документа в ФН
    - Поле 6: (W8) Фискальный признак
    Parameters:
      `receiptType` - тип чека [допустимые типы: 0 – приход, 2 – расход] (смотри `TMCommand.receipt_types`).
      `tUserName` - имя кассира (до 64 байт).
      `tUserINN` - ИНН кассира (12 байт).
      `copies` - количество копий чека.
      `taxType` - система налогообложения (смотри `TMCommand.tax_types`).
      `tTotal` - сумма коррекции итога документа (до 12 байт)
      `tCash` - в т.ч. сумма коррекции наличных средств платежа (до 12 байт).
      `tCard` - в т.ч. сумма коррекции электронных средств платежа (до 12 байт).
      `tAdvance` - в т.ч. сумма коррекции аванса (до 12 байт).
      `tCredit` - в т.ч. сумма коррекции кредита (до 12 байт).
      `tOncoming` - в т.ч. сумма коррекции встречных предоставлений (до 12 байт).
      `corrType` - тип коррекции (смотри `TMCommand.correction_types`).
      `tDescription` - описание коррекции (до 255 байт)
      `date` - дата, за которую производится коррекция (в формате UNIX, в секундах от 1 января 1970г.).
      `tNumDoc` - номер документа, по которому проводится коррекция (до 32 байт).
      `taxIndex` - индекс налоговой ставки (смотри `TMCommand.tax_indexes`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdCorrection

    @Deprecated public int CmdCorrection(String tDate, String tTime, byte receiptType, String tUserName, String tUserINN, byte copies, byte taxType, String tTotal, String tCash, String tCard, String tAdvance, String tCredit, String tOncoming, byte corrType, String tDescription, int date, String tNumDoc, byte taxIndex)
    Deprecated.
    Сборка команды "Кассовый чек коррекции" [3C]. Устаревшая функция не поддерживается на прошивках КФН начиная с 0xxx5xx.
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (W8) Порядковый номер документа в ФН
    - Поле 6: (W8) Фискальный признак
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
      `receiptType` - тип чека [допустимые типы: 0 – приход, 2 – расход] (смотри `TMCommand.receipt_types`).
      `tUserName` - имя кассира (до 64 байт).
      `tUserINN` - ИНН кассира (12 байт).
      `copies` - количество копий чека.
      `taxType` - система налогообложения (смотри `TMCommand.tax_types`).
      `tTotal` - сумма коррекции итога документа (до 12 байт)
      `tCash` - в т.ч. сумма коррекции наличных средств платежа (до 12 байт).
      `tCard` - в т.ч. сумма коррекции электронных средств платежа (до 12 байт).
      `tAdvance` - в т.ч. сумма коррекции аванса (до 12 байт).
      `tCredit` - в т.ч. сумма коррекции кредита (до 12 байт).
      `tOncoming` - в т.ч. сумма коррекции встречных предоставлений (до 12 байт).
      `corrType` - тип коррекции (смотри `TMCommand.correction_types`).
      `tDescription` - описание коррекции (до 255 байт)
      `date` - дата, за которую производится коррекция (в формате UNIX, в секундах от 1 января 1970г.).
      `tNumDoc` - номер документа, по которому проводится коррекция (до 32 байт).
      `taxIndex` - индекс налоговой ставки (смотри `TMCommand.tax_indexes`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetDocCounters

    public int CmdGetDocCounters()
    Сборка команды "Запрос счётчиков документов" [3D].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Количество документов за смену
    - Поле 6: (H4) Количество чеков за смену
    - Поле 7: (H4) Количество аннулированных чеков за смену
    - Поле 8: (H4) Количество п/документов за смену
    - Поле 9: (H4) Количество аннулированных п/документов за смену
    - Поле 10: (H4) Количество отчётных документов за смену
    - Поле 11: (H4) Количество универсальных п/док. за смену
    - Поле 12: (H4) Количество чеков корреций за смену
    - Поле 13: (H4) Количество приходов за смену
    - Поле 14: (H4) Количество возвратов приходов за смену
    - Поле 15: (H4) Количество расходов за смену
    - Поле 16: (H4) Количество возвратов расходов за смену
    - Поле 17: (H4) Количество коррекций прихода
    - Поле 18: (H4) Количество коррекций расхода
    - Поле 19: (H4) Количество подкреплений за смену
    - Поле 20: (H4) Количество инкассаций за смену
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNonFiscalOpen

    public int CmdNonFiscalOpen()
    Сборка команды "Начало формирования отчётного документа на чековой ленте" [50].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNonFiscalOpen

    public int CmdNonFiscalOpen(String tDate, String tTime)
    Сборка команды "Начало формирования отчётного документа на чековой ленте" [50].
    Parameters:
      `tDate` - дата чека ДДММГГ (6 байт).
      `tTime` - время чека ЧЧММ (4 байта).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNonFiscalLine

    public int CmdNonFiscalLine(String t)
    Сборка команды "Печать строки отчёта на чековой ленте" [51].
    Parameters:
      `t` - строка отчета.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNonFiscalLines

    public int CmdNonFiscalLines(String[] t)
    Сборка команды "Печать строк отчёта на чековой ленте" [56].
    Parameters:
      `t` - строки отчета.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNonFiscalClose

    public int CmdNonFiscalClose()
    Сборка команды "Закрытие отчётного документа на чековой ленте" [52].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetParams

    @Deprecated public int CmdSetParams(short param1, short param2, short lineFeed)
    Deprecated.
    Сборка команды "Программирование параметров документов" [4C]. Устаревшая функция, не используется с прошивок ФН 0xxx5xx.
    Parameters:
      `param1` - параметр1.
      `param2` - параметр2.
      `lineFeed` - межстрочный интервал.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetParams

    public int CmdSetParams(short param1, short param2, short lineFeed, short param4)
    Сборка команды "Программирование параметров документов" [4C].
    Parameters:
      `param1` - параметр1.
      `param2` - параметр2.
      `lineFeed` - межстрочный интервал.
      `param4` - параметр4 (дополнительные параметры).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetParams

    public int CmdGetParams()
    Сборка команды "Чтение параметров документа" [4D].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Параметр1
    - Поле 6: (H4) Параметр2
    - Поле 7: (H4) Межстрочный интервал
    - Поле 8: (H4) Параметр4 (дополнительный параметр)
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetHeader

    public int CmdGetHeader()
    Сборка команды "Чтение заголовка документа" [9A].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetHeader

    public int CmdSetHeader(String[] tStrings)
    Сборка команды "Установка заголовка документа" [41] (4 строки по 38 символов).
    Parameters:
      `tStrings` - набор строк заголовка.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetHeaderExt

    public int CmdSetHeaderExt(String[] tStrings)
    Сборка команды "Установка заголовка документа (расширенная)" [4E] (6 строк по 40 символов).
    Parameters:
      `tStrings` - набор строк заголовка.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetTail

    public int CmdGetTail()
    Сборка команды "Чтение окончания документа" [9B].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetTail

    public int CmdSetTail(String[] tStrings)
    Сборка команды "Установка окончания документа" [46]. (4 строки по 40 символов).
    Parameters:
      `tStrings` - набор строк окончания.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetPayment

    public int CmdSetPayment(byte index, String tName, boolean isSecond, boolean isCharge, byte currency, byte mask, String tConvertCurrency)
    Сборка команды "Программирование вида платежа" [4A].
    Parameters:
      `index` - индекс вида платежа 0..15 (смотри `TMCommand.pay_indexes`).
      `tName` - название вида платежа.
      `isSecond` - имеет ли вид платежа вторую строку в названии.
      `isCharge` - нужно ли возвращать величину сдачи.
      `currency` - индекс валюты платежа (0 - базовая).
      `mask` - маска допустимых операций (бит: 0 - приход, 1 - возврат, 2 - расход).
      `tConvertCurrency` - курс пересчёта в базовую валюту.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetPayment

    public int CmdGetPayment(byte index)
    Сборка команды "Получение данных о виде платежа" [4B].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Индекс вида платежа
    - Поле 6: (S19) Название вида платежа
    - Поле 7: (H2) Имеет ли вид платежа вторую строку в названии (0 - нет, 1 - да)
    - Поле 8: (H2) Нужно ли возвращать величину сдачи (0 - нет, 1 - да)
    - Поле 9: (H2) Индекс валюты платежа (0 - базовая)
    - Поле 10: (H2) Маска допустимых операций (Бит: 0 - приход, 1 - возврат, 2 - расход)
    - Поле 11: (M14) Курс пересчёта в базовую валюту
    - Поле 12: (H4) Номер тега платежа
    Parameters:
      `index` - индекс вида платежа 0..15 (смотри `TMCommand.pay_indexes`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetTax

    public int CmdGetTax(byte index)
    Сборка команды "Получение данных о налоговой ставке" [59].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Индекс налоговой ставки
    - Поле 6: (S17) Название налоговой ставки
    - Поле 7: (S5) Значение налоговой ставки
    - Поле 8: (S19) Минимальная сумма налоговой ставки (всегда "0")
    - Поле 9: (H2) Тип налоговой ставки (всегда 0 - включённая в сумму)
    - Поле 10: (H4) Номер тега (1102 – 1107), 0 - для 1115
    Parameters:
      `index` - индекс вида налоговой ставки (смотри `TMCommand.tax_indexes`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdSetDepNames

    public int CmdSetDepNames(Map<Byte,String> deps)
    Сборка команды "Программирование отделов" [60].
    Parameters:
      `deps` - информация об отделах.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdGetDepNames

    public int CmdGetDepNames()
    Сборка команды "Получение данных по отделам" [61].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Индекс отдела 1
    - Поле 6: (S30) Название отдела 1
    - ...
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdOnOffUPD

    public int CmdOnOffUPD(boolean on)
    Сборка команды "Включение/выключение встроенного УПД" [65]. (команда только для контроллеров с УПД).
    Parameters:
      `on` - true: включить УПД, false: отключить УПД.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdStartMonitor

    public int CmdStartMonitor()
    Сборка команды "Переключение контроллера в сервисный режим" [93].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdServiceMode

    public int CmdServiceMode(byte param)
    Сборка команды "Сервисная команда в КФН (аналог команды сервисного монитора)" [9C].
    Parameters:
      `param` - код сервисной команды (смотри `TMCommand.paramServiceMode`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdServiceMode

    public int CmdServiceMode(byte param, String codeAct)
    Сборка команды "Сервисная команда в КФН (аналог команды сервисного монитора)" [9C].
    Parameters:
      `param` - код сервисной команды (смотри `TMCommand.paramServiceMode`).
      `codeAct` - код активации КФН.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJGetParam

    public int CmdEJGetParam()
    Сборка команды "Запрос параметров РПКУ" [49].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (N5) Общее количество страниц
    - Поле 6: (Н4) Число отказавших блоков
    - Поле 7: (Н4) Номер текущей страницы
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJShiftCloseReport

    public int CmdEJShiftCloseReport(short ShiftNo)
    Сборка команды "Печать 'Отчёта закрытия смены' из РПКУ" [7С].
    Parameters:
      `ShiftNo` - номер смены.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJTimeReport

    public int CmdEJTimeReport(String tTimeStart, String tTimeEnd, String tDate)
    Сборка команды "Отчёт из РПКУ по времени" [7D].
    Parameters:
      `tTimeStart` - начальное время области отчётов.
      `tTimeEnd` - конечное время области отчётов.
      `tDate` - дата.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJNoReport

    public int CmdEJNoReport(short DocStart, short DocEnd, byte Over)
    Сборка команды "Отчёт из РПКУ по номерам документов" [7E].
    Parameters:
      `DocStart` - стартовый номер документа.
      `DocEnd` - конечный номер документа.
      `Over` - число переполнения счетчика документов.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJNoDoc

    public int CmdEJNoDoc(short DocNo, byte Over)
    Сборка команды "Документ по номеру из РПКУ" [7F].
    Parameters:
      `DocNo` - сквозной порядковый номер документа.
      `Over` - число переполнения счетчика документов.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJPrint

    public int CmdEJPrint(short ShiftNo)
    Сборка команды "Печать РПКУ" [84].
    Parameters:
      `ShiftNo` - номер смены.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdEJErase

    public int CmdEJErase()
    Сборка команды "Стирание РПКУ" [85].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdFNGroupBx

    public int CmdFNGroupBx(byte CmdFNcode, String hexdump)
    Сборка команды "Работа с командами ФН группы Bx" [98] (для ТС ПИоТ).
    Parameters:
      `CmdFNcode` - команда ФН из группы Bx (смотри `TMCommand.cmdFNgroupBx`)
      `hexdump` - hex-дамп для отправки в ФН.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdServiceUpdateKeys

    public int CmdServiceUpdateKeys(byte addCmd)
    Собрать команду "Сервис обновления ключей проверки в ФН" [9E].
    Parameters:
      `addCmd` - дополнительный код команды (смотри `TMCommand.asokp_cmd`).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdServiceUpdateKeys

    public int CmdServiceUpdateKeys(byte addCmd, String data)
    Собрать команду "Сервис обновления ключей проверки в ФН" [9E].
    Parameters:
      `addCmd` - дополнительный код команды (смотри `TMCommand.asokp_cmd`).
      `data` - cтрока в HEX формате для передачи на сервер.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMGetStatus

    public int CmdKMGetStatus()
    Собрать команду "Запрос статуса КМ" [20].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Состояние по проверке КМ
    - Поле 6: (Н2) Состояние по формированию уведомления
    - Поле 7: (Н2) Флаги разрешения команд работы с КМ
    - Поле 8: (Н2) Количество сохранённых результатов проверки КМ
    - Поле 9: (Н2) Количество КМ, включенных в уведомление о реализации
    - Поле 10: (Н4) Предупреждение о заполнении области хранения уведомлений о реализации маркированного товара
    - Поле 11: (Н4) Количество уведомлений в очереди
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMGetStatus

    public int CmdKMGetStatus(byte dopCode)
    Собрать команду "Запрос статуса КМ" [20] c дополнительным параметром. Команда поддерживается только ФН с версией протокола не ниже 1.2.06
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Разрешение не формировать запрос о коде маркировки
    Parameters:
      `dopCode` - = 0 - запрос состояния разрешения не формировать запрос о коде маркировки.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMTransfer

    public int CmdKMTransfer(short tag, byte[] code, byte IDproduct, byte offsetGS1, byte typeCode, byte plannedStatus, byte processMode, byte status)
    Собрать команду "Передача КМ" [21].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Количество реквизитов КМ, добавленных в тег 1163
    Parameters:
      `tag` - тег маркировочного кода товара (тег 13хх) `TMTag`
      `code` - маркировочный код
      `IDproduct` - длина идентификатора товара в маркировочном коде
      `offsetGS1` - cмещение, с которого начинается идентификатор товара в КМ
      `typeCode` - тип кода маркировки (тег 2100) `TMMarkCode.types`
      `plannedStatus` - планируемый статус товара (тег 2003) `TMCommand.planned_status`
      `processMode` - режим обработки маркировочного кода (тег 2102), устанавливается в 0
      `status` - статус проверки сведений о товаре (тег 2109)
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMSaveResult

    public int CmdKMSaveResult(boolean isSave)
    Собрать команду "Сохранить результаты проверки КМ" [22]
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Возвращаемое значение соответствует реквизиту ФФД 2106, возвращается только в случае сохранения
    Parameters:
      `isSave` - true: сохранять результаты проверки КМ, false: не сохранять.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMClean

    public int CmdKMClean()
    Собрать команду "Очистить КМ из ФН" [23].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMNotifCreate

    public int CmdKMNotifCreate(byte plannedStatus, byte unitId, String sQty, String sLotSize, byte sendOverKKT)
    Собрать команду "Создать уведомление КМ" [24].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H) Запрос для передачи в ОИСМ в формате Hex
    Parameters:
      `plannedStatus` - планируемый статус товара `TMCommand.planned_status`.
      `unitId` - мера количества расчёта `TMCommand.unit_id`.
      `sQty` - количество предметов расчёта.
      `sLotSize` - количество в партии (упаковке).
      `sendOverKKT` - Отправка средствами ККТ. 0 – отправка через ПК, 1 – отправка через ККТ .
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMNotifCreate

    public int CmdKMNotifCreate(byte plannedStatus, byte unitId, String sQty, String sLotSize)
    Собрать команду "Создать уведомление КМ" [24].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H) Запрос для передачи в ОИСМ в формате Hex
    Parameters:
      `plannedStatus` - планируемый статус товара `TMCommand.planned_status`.
      `unitId` - мера количества расчёта `TMCommand.unit_id`.
      `sQty` - количество предметов расчёта.
      `sLotSize` - количество в партии (упаковке).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMOISMResp

    public int CmdKMOISMResp(byte[] resp)
    Собрать команду "Отправить ответ ОИСМ в ФН" [25].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Результат проверки сведений о товаре (тег 2106)
    - Поле 6: (H) Ответ от ФН (TLV List) Hex формат
    - Поле 7: (H2) Режим обработки кода маркировки (тег 2102)
    - Поле 8: (H2) Тип кода маркировки (тег 2100)
    - Поле 9: (H2) Ответ ОИСМ о статусе товара (тег 2109)
    - Поле 10: (H2) Коды обработки запроса (тег 2105)
    - Поле 11: (H2) Результаты обработки запроса (тег 2005)
    - Поле 12: (H8) Дата и время запроса UnixTime
    - Поле 13: (S32) Идентификатор товара (тег 2101)
    Parameters:
      `resp` - данные ответа из ОИСМ.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdKMCheck

    public int CmdKMCheck(byte type, byte[] code, byte offsetGS1_91, byte offsetGS1_92)
    Собрать команду "Передать код маркировки для проверки в ФН" [26].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Результат проверки КМ в ФН (тег 2004)
    - Поле 6: (Н2) Причина того, что КМ не проверен в ФН
    Parameters:
      `type` - тип кода маркировки `TMMarkCode.types`.
      `code` - код маркировки полностью с кодом проверки.
      `offsetGS1_91` - cмещение в байтах от начала КМ до начала тега GS1 «91».
      `offsetGS1_92` - cмещение в байтах от начала КМ до начала тега GS1 «92».
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifGetStatus

    public int CmdNotifGetStatus()
    Собрать команду "Получить число уведомлений КМ" [27].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H2) Состояние по передачи уведомлений
    - Поле 6: (Н4) Количество уведомлений в очереди
    - Поле 7: (Н8) Номер текущего уведомления
    - Поле 8: (S10) Дата и время текущего уведомления
    - Поле 9: (Н2) Процент заполнения области хранения уведомлений
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifReadOpen

    public int CmdNotifReadOpen()
    Собрать команду "Начать чтение уведомления" [28].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Длина текущего уведомления для передачи
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifRead

    public int CmdNotifRead(short offset, short size)
    Собрать команду "Прочитать блок данных уведомления" [2C].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H) Данные для передачи в ОИСМ в формате Hex
    Parameters:
      `offset` - текущее смещение блока данных.
      `size` - размер считываемых данных.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifReadCancel

    public int CmdNotifReadCancel()
    Собрать команду "Отменить чтение уведомления" [2D].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifReadClose

    public int CmdNotifReadClose()
    Собрать команду "Завершить чтение уведомления" [2E].
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifWriteReceipt

    public int CmdNotifWriteReceipt(byte[] data)
    Собрать команду "Передать квитанцию на уведомление (Передать квитанцию из ОИСМ в ФН)" [2F].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H) Ответ из ФН
    - Поле 6: (H2) Результаты обработки уведомления (тег 2106)
    - Поле 7: (H2) Коды обработки уведомления (тег 2111)
    - Поле 8: (H8) Дата и время (тег 1012)
    Parameters:
      `data` - блок данных квитанции на уведомление.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifAutoReadStart

    public int CmdNotifAutoReadStart(byte addCmd)
    Собрать команду "Начать сессию выгрузку уведомлений, или получить состояние текущей сессии (автономный режим)" [80].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Общее количество уведомлений выгрузка которых не подтверждена
    - Поле 6: (H8) Номер первого уведомления выгрузка которого не была подтверждена
    - Поле 7: (H4) Количество уведомлений для выгрузки в этой сессии
    - Поле 8: (H8) Номер текущего уведомления для выгрузки
    Parameters:
      `addCmd` - 0 – выдать текущее состояние сессии выгрузки, 1 – начать сессию выгрузки и выдать текущее состояние выгрузки.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifAutoConfirm

    public int CmdNotifAutoConfirm(byte addCmd, int numReq, short crc)
    Собрать команду "Подтвердить выгрузку уведомления или получить информацию по неподтверждённым уведомлениям (автономный режим)" [87].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Общее количество уведомлений выгрузка которых не подтверждена (возвращается только при получении информации по неподтверждённым уведомлениям)
    - Поле 6: (H8) Номер первого уведомления выгрузка которого не была подтверждена (возвращается только при получении информации по неподтверждённым уведомлениям)
    Parameters:
      `addCmd` - 0 – получить информацию по неподтверждённым уведомлениям, 1 – подтвердить выгрузку уведомления.
      `numReq` - номер подтверждаемого уведомления (используется только при подтверждении выгрузки уведомления, иначе 0).
      `crc` - контрольная сумма выгруженного уведомления (CRC16) (используется только при подтверждении выгрузки уведомления, иначе 0).
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifAutoReadData

    public int CmdNotifAutoReadData(short offset, short size)
    Собрать команду "Прочитать блок данных текущего уведомления (автономный режим)" [89].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H) Данные в формате Hex
    Parameters:
      `offset` - cмещение.
      `size` - длина.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdNotifAutoNext

    public int CmdNotifAutoNext(byte addCmd)
    Собрать команду "Перейти к следующему уведомлению, или получить параметры текущего уведомления (автономный режим)" [8A].
    В ответе на эту команду возращаются следующие поля:
    - Поле 5: (H4) Длина уведомления
    - Поле 6: (H8) Номер уведомления
    Parameters:
      `addCmd` - 0 – получить параметры текущего уведомления, 1 – перейти к выгрузке следующего уведомления и получить его параметры.
    Returns:
      текущая длина сообщения или (<0) код ошибки.

  - ### CmdReceiptFree

    public int CmdReceiptFree(TMCommand.FreeFiscalReceipt receipt)
    Сборка команды "Произвольный фискальный чек" [73].
    Parameters:
      `receipt` - описатель произвольного чека.
    Returns:
      текущая длина сообщения или (<0) код ошибки.