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

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

27.11.2021, 13:27. Показов 9118. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru