Главная категория > Посцентр (ШТРИХ-М)
Штрих онлайн ( ФФД 1.05) округляет цену до рубля - как убрать?
kkmspb:
Читаю еще раз протокол:
Стандартный нижний уровень
--- Код: ---
При обмене хост и ККТ оперируют сообщениями. Сообщение может содержать
команду (от хоста) или ответ на команду (от ККТ).
Формат сообщения:
Байт 0: признак начала сообщения STX;
Байт 1: длина сообщения (N) – ДВОИЧНОЕ число. В длину сообщения не
включаются байты 0, LRC и этот байт;
Байт 2: код команды или ответа – ДВОИЧНОЕ число;
Байты 3...(N+1): параметры, зависящие от команды (могут отсутствовать);
Байт N+2 – контрольная сумма сообщения – байт LRC – вычисляется
поразрядным сложением (XOR) всех байтов сообщения (кроме байта 0).
--- Конец кода ---
И чуть ниже Альтернативный нижний уровень:
--- Код: ---
[0] {STX} – стартовый символ, обозначает начало пакета. Значение 0x8F.
[1][2] {LEN16} – общая длина полей {NUM16, DATA[]} в байтах. Диапазон значений
LEN16 = 0, 2…65535.
Если LEN16 = 0 (тип I) – пустой пакет без номера; поля: {STX, LEN16, CRC16}; длина пакета 5
байт.
[LEN+3] [LEN+4] {CRC16} – контрольная сумма, которая включает в себя байты полей {LEN16,
NUM16, DATA[]} (если имеются).
Если LEN16 = 2 (тип II) – пустой пакет с номером; поля: {STX, LEN16, NUM16, CRC16}; длина
пакета 7 байт.
[3][4] {NUM16} – номер пакета. Диапазон значений NUM = 0…65535. Начальное значение 1.
Если LEN16 = 3…65535 (тип III) – информационный пакет; поля: {STX, LEN16, NUM16, DATA[],
CRC16}; длина пакета 8…65540 байт.
[5] {DATA[]} – информационное поле (блок) данных пакета. Длина блока данных LEN16 -
2 = 1...65533 байтов
--- Конец кода ---
kkmspb:
--- Цитата: pavel_net от 24/03/2025 16:02:46 ---ну или переходить на кросплатформенный драйвер.
--- Конец цитаты ---
Это о чем?
kkmspb:
Идею подсказали на гитхабе у Штриха - надо заставить в COM объект передавать значение с типом VT_CY = 6 (VARIANT) . А у QT в QVariant такого нет (Qt4 во всяком случае).
pavel_net:
--- Цитата: kkmspb от 24/03/2025 16:57:37 ---Это о чем?
--- Конец цитаты ---
Это который на гитхабе, или там тоже Currency надо передавать ?
DanShi:
--- Цитата: kkmspb от 24/03/2025 15:28:11 ---Регистрация операции (добавляем предмет расчета).
Похоже начинаю догадываться. Посмотрел в чем отличие моих передаваемых байтов (через USB протокол Device monitoring Studio) .
У меня:
02 22 46 1E 00 00 00 01 40 42 0F 00 00 00 C7 00 00 00 00 FF FF FF FF FF FF FF FF FF FF 08 01 04 01 33 33 33 8E
Из драйвера (при нормальном результате):
02 23 FF 46 1E 00 00 00 01 40 42 0F 00 00 00 C7 00 00 00 00 FF FF FF FF FF FF FF FF FF FF 08 01 04 01 33 33 33 70
У меня в поле длина однобайтовая 22, а у драйвера штрих 23 FF (2 байта).
--- Конец цитаты ---
длинна в обоих случаях однобайтная, только через драйвер идет правильная команда FF46 , а у вас просто 46, такой кстати вообще нет.
Навигация
Перейти к полной версии