6 / 6 / 6
Регистрация: 10.03.2011
Сообщений: 88

Эмуляция ККМ (ШТРИХ-М)

27.11.2021, 13:27. Показов 8783. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я полный нуб в написании драйверов для Win, С++. Но хочется разобраться.
Есть софт, работающий с ККМ ШТРИХ-М через драйвер DrvFR v4.15.0.842. Хочу "обмануть" его - имитировать передачу байт через com0com, чтоб софт не ругался на отсутствие ККМ и дал доступ к своим функциям.
При проверке связи (просто тестом драйвера для штрихов, да и подопытным софтом) получаю с COM порта \x05, пытался изучать исходники, найденные на просторах инета, на сколько я понял, железка должна ответить на это \x15 и тогда софт должен определить, что состояние ККМ в порядке. Смотрел тут https://github.com/koleban/Drv... n.cpp#L413, пытался смотреть примеры, поставляемые с драйвером для штрихов...
Не признаёт подделки софт =) Схожусь к мысли, что нужно кроме \x15 в ответ ещё что то добавлять.
Пока эмулировать пытаюсь на питоне.
Подскажите пожалуйста, где чего почитать на эту тему?

Спасибо!
Миниатюры
Эмуляция ККМ (ШТРИХ-М)  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2021, 13:27
Ответы с готовыми решениями:

Настройка оборудования ККМ штрих-м-фр-к
Установлена 1С 8.3 розница 2.1. По USB через эмулятор com порта подключен ШтрихМФРК. Версия драйвера 4.12.467, через тест драйвера Фр...

Подключение ККМ ШТРИХ-ЛАЙТ-ФР-К к УТ 10.3.2.11
Здравствуйте. Нужно подключить ККМ ШТРИХ-LIGHT-ФР-К к УТ 10.3.2.11. Скачала обработку ShtrihMFiscalPrinters_v2.epf - Обработка...

как подключить ККМ Штрих-М к 1с пл. 8.2. Бух. гос. учреждения ред 1.0
подскажите где взять обработку и описание подключения ФР к ТИС.

4
6 / 6 / 6
Регистрация: 10.03.2011
Сообщений: 88
28.11.2021, 01:23  [ТС]
Нашел вот такую реализацию работы с драйвером на питоне
https://github.com/rosix-ru/sh... kkt.py#L61
По изучав его, дошел до того, что на запросы данных драйвер принимает ответ эмулятора, а вот на проверку связи - нет....



код писал в панике с красными глазами на коленке, не судите строго.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import serial
 
# ASCII
ENQ = b'\x05'  # Enquire. Прошу подтверждения.
STX = b'\x02'  # Start of Text, начало текста.
ACK = b'\x06'  # Acknowledgement. Подтверждаю.
NAK = b'\x15'  # Negative Acknowledgment, не подтверждаю.
 
serialPort = serial.Serial(
    port="COM4",
    baudrate=9600,
    bytesize=8,
    timeout=0.7,
    stopbits=serial.STOPBITS_ONE,
    parity=serial.PARITY_NONE,
)
serialString = b''
 
error = b'\x00'
 
 
# контрольная сумма сообщения – байт LRC
def get_lcr(data: bytes) -> bytes:
    result = 0
    for d in data:
        result ^= d
    return result.to_bytes(1, byteorder='big')
 
 
# ответ на команду 0xFC - идентификация устройства
def answer_xfc(comport):
    serialPort.write(ACK)
    _command_out = b'\x00'
    _dev_type = (1).to_bytes(1, byteorder='big')
    _dev_sub_type = (1).to_bytes(1, byteorder='big')
    _dev_protocol = (0).to_bytes(1, byteorder='big')
    _dev_sub_protocol = (0).to_bytes(1, byteorder='big')
    _dev_model = (1).to_bytes(1, byteorder='big')
    _lang = (0).to_bytes(1, byteorder='big')
    _dev_title = 'ЭМУЛЯТОР'.encode('Windows-1251')
    _data_out = _dev_type + _dev_sub_type + _dev_protocol + _dev_sub_protocol + _dev_model + _lang + _dev_title
    _len_out = len(_command_out + error + _data_out).to_bytes(1, byteorder='big')
    comport.write(STX + _len_out + _command_out + error + _data_out + get_lcr(
        _len_out + _command_out + error + _data_out))
 
 
# ответ на команду 0xFD - проверка состояния устойства
def answer_xfd(comport):
    serialPort.write(ACK)
    _command_out = b'\x00'
    _data_out = (1).to_bytes(1, byteorder='big')
    _len_out = len(_command_out + error + _data_out).to_bytes(1, byteorder='big')
    comport.write(STX + _len_out + _command_out + error + _data_out + get_lcr(
        _len_out + _command_out + error + _data_out))
 
 
# ответ общий
def answer_default(comport):
    serialPort.write(ACK)
    command = b'\x00'
    data = (512).to_bytes(2, byteorder='big')
    _length = len(command + error + data)
    length = (_length).to_bytes(1, byteorder='big')
    lcr = get_lcr(length + command + error + data)
    comport.write(STX + length + command + error + data + lcr)
 
 
while 1:
    if serialPort.in_waiting > 0:
        serialString = serialPort.read(1)
        if serialString in (ENQ, STX):
            # если запрос подтверждения или сообщение
            if serialString == ENQ:
                # поищем команду в следующем байте
                result = serialPort.read(1)
            else:
                # пришло сообщение
                result = STX
            if result == b'':
                serialPort.write(NAK)
            elif result == STX:
                _inc_len = serialPort.read(1)
                _command = serialPort.read(1)
                if _command == b'':
                    serialPort.write(NAK)
                elif _command == b'\xfc':
                    answer_xfc(serialPort)
                elif _command == b'\xfd':
                    answer_xfd(serialPort)
                else:
                    answer_default(serialPort)
 
        elif serialString == b'\xfc':
            answer_xfc(serialPort)
        elif serialString == b'\xfd':
            answer_xfd(serialPort)
        else:
            answer_default(serialPort)
        serialPort.write(NAK)
Миниатюры
Эмуляция ККМ (ШТРИХ-М)   Эмуляция ККМ (ШТРИХ-М)  
0
6 / 6 / 6
Регистрация: 10.03.2011
Сообщений: 88
19.12.2021, 19:33  [ТС]
Лучший ответ Сообщение было отмечено iSmokeJC как решение

Решение

В настройках самого драйвера можно выбрать режим эмуляции ФР. Тему можно закрывать.
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 5
03.01.2024, 01:41
Цитата Сообщение от Symba Посмотреть сообщение
В настройках самого драйвера можно выбрать режим эмуляции ФР. Тему можно закрывать.
а где это настраивается в драйвере? Не нашел
0
6 / 6 / 6
Регистрация: 10.03.2011
Сообщений: 88
09.01.2024, 13:09  [ТС]
Цитата Сообщение от GrigoriyFomin Посмотреть сообщение
а где это настраивается в драйвере? Не нашел

в версии 4.15.0.842 есть в настройках драйвера...



в 5.17.982 х64 уже тоже не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2024, 13:09
Помогаю со студенческими работами здесь

ККМ Штрих online печать "БЕЗ НДС" в чеке
Добрый день уважаемые форумчане !!! Прошу помощи у гуру !!! Контора работает на УСН ... в чеке не печаталась строка что они...

Помогите найти шрифт штрих-код, который штрих-сканеры читают
Здравствуйте, сорри знаю не по теме так как не нашел решил писать здесь. Мне надо печатать по принтеру штрих код. Я нашел не мало...

Задана таблица товаров и их штрих-кодов. Вывести данные при использовании сканера штрих-кода
Привет. Есть таблица с данными: штрих-код был отсканирован сканером, а все остальные данные введены вручную соответственно. При...

Эмуляция нажатия клавиш для неактивных WPF приложений или эмуляция глобальных горячих клавиш
Столкнулся с тем, что следующий код (нажатия опредлённых клавиш) не работает для такой программы как Snagit, и даже не похоже, что фокус...

АСПД штрих-м Light 200 И Штрих-м слим 200
Друзья. Имеется ноут с win7, на нем стоит 1с 7.7. АСПД light 200 с денежным ящиком и весы Slim 200 подключил и соединил посредством...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru