С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
6 / 6 / 6
Регистрация: 10.03.2011
Сообщений: 88

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

27.11.2021, 13:27. Показов 8714. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru