ATOL драйвер 10.x

Сканеры, кассы, ККТ и т.д.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

Admin писал(а): 13 Сентябрь 2019, 8:13т.е. создаем для себя внутреннюю таблицу вариантов.
Ха ! Это конечно классно - когда делаешь прикладную программу под конкретную модель ККТ и ширину ленты.
А если не знаешь какую модель использует пользователь ?
И насколько я понимаю в кроликах, параметр "Количество символов в строке" - программно не устанавливается. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

ATOL драйвер 10.x

Сообщение SergioRaguzini »

Игорь Столяров писал(а): 13 Сентябрь 2019, 8:37Это конечно классно - когда делаешь прикладную программу под конкретную модель ККТ и ширину ленты
Привет Всем!
На мой взгляд не самый плохой вариант. Я именно так лет 15-ть назад это сделал и работает по сей день. Создал фиксированный список моделей (который расширяю с новой версией) и там уже есть количество символов печатающего устройства , которое по-умолчанию в новом ФР, для каждой модели (если пользователь купил что-то новое, то всегда есть похожее на первое время) + таблицы раньше иногда различались для моделей и программа их правила
+ Различных значений ширины карретки не так уж и много. Да, конечно, приходится при выводе на печать чего-то своего всегда анализировать такую ширину, зато красиво
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

ATOL драйвер 10.x

Сообщение SergioRaguzini »

Привет всем!

Прошу, подсказки. В замечательном примере Driver10.zip , который сделал наш коллега, и который я (как наверно и многие) используют для подготовки к переходу на ДТО10 есть обращение к fptr10.dll
Но когда я установил ДТО10, то обратил внимание, что пока я не скопировал fptr10.dll в программную папку вышеуказанного примера (Driver10.zip), программа atol.exe не видела fptr10.dll (получается, что программа установки драйвера АТОЛ не прописывает путь к DLL в PATH операционной системы) - как выход - необходимо либо самому искать путь куда установился драйвер и добавлять его в PATH , либо искать по компьютеру fptr10.dll и копировать его в главную папку своей программы. Вроде бы мелочь, но хочется цивильности, ведь может получиться, что пользователь вначале установит прикладную программу, а потом у него (пользователя) "руки дойдут" до драйвера и он ведь его может еще установить и в иную, не по-умолчанию папку. Кто как считает лучше (м.б. есть иной рациональный вариант)?

+ Вопрос к автору, Driver10.zip: Admin, хочу попросить поделиться, если появился, обновленным вариантом этого примера?

Спасибо
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

ATOL драйвер 10.x

Сообщение finsoftrz »

А просто запросить ширину ленты из ккт не получается? В Атолах, Штрихах, СП, Пиритах все это можно прочитать. Про разные шрифты не смотрел, надобности не было пока.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

finsoftrz писал(а): 13 Сентябрь 2019, 20:31А просто запросить ширину ленты из ккт не получается
Конечно получается. Причём получается одна и та же цифра для "Шрифт 1", вне зависимости от установленного размера шрифта. :)
Она и в окне драйвера АТОЛ ДККТ 10 показана.

Я вот думаю, что там есть ещё размер строки в пикселях и в принципе, наверно можно пересчитать кол-во символов
в строке от номера шрифта - только с алгоритмом пока не разбирался.
А с рукодельными таблицами размеров - это конечно хорошо, но только когда программист как истина. Всегда где-то рядом. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

ATOL драйвер 10.x

Сообщение Admin »

SergioRaguzini писал(а): 13 Сентябрь 2019, 20:29хочу попросить поделиться
пока ничего нового не делал.
SergioRaguzini писал(а): 13 Сентябрь 2019, 20:29программа atol.exe не видела fptr10.dll
комп перегружал после установки?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

А вот другой вопрос по экологии из регионов … :)
Можно ли при печати наименований товаров как-то вырубить перенос строк в фискальном чеке ?
Т.е. печатать наименование товара всегда одной строкой, независимо от длины. Заранее спасибо.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 13 Сентябрь 2019, 20:29может получиться, что пользователь вначале установит прикладную программу
Обе идеи не бест.

1. Копирование DLL драйвера в папку программы со 100% гарантией приведёт к тому, что при обновлении версии драйвера
про неё забудут и возникнет разнобой версий и как следствие проблемы.

2. Поиск DLL по диску может найти непредсказуемые вещи - например какую-то резервную копию или совсем другую
одноимённую DLL …

Решение простое.

1. Не выделываемся и устанавливаем драйвер в папку по умолчанию, где программа его легко найдёт.
2. "Продвинутые" установщики драйвера - могут прописать его место в PATH Windows.
3. Или просим указать вручную папку с расположением драйвера и запоминаем её в настройках.
4. Можно порыться в реестре - наверняка драйвер АТОЛ ДККТ10 там прописывает свои настройки.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

SergioRaguzini писал(а): 13 Сентябрь 2019, 20:29а потом у него (пользователя) "руки дойдут" до драйвера
А не получится так. В примере загрузка драйвера прописана в CONSTRUCT метода ATOL и при запуске программы
сразу будет сообщение об ошибке загрузки драйвера … Я перенёс загрузку в метод INIT.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

И если можно немного пожаловаться - то конечно нужно переименовать класс CSTR.
Потому, что существует одноимённый класс в штатном svcom.inc и как следствие проблемы при сборке приложения. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4559
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

ATOL драйвер 10.x

Сообщение finsoftrz »

Игорь Столяров писал(а): 14 Сентябрь 2019, 6:35А вот другой вопрос по экологии из регионов … :)
Можно ли при печати наименований товаров как-то вырубить перенос строк в фискальном чеке ?
Т.е. печатать наименование товара всегда одной строкой, независимо от длины. Заранее спасибо.
Наверно, надо в настройках глянуть. У атолов строки чека зашиты жестко, переопределить на произвольный вариант нельзя. Но можно управлять параметрически. Например, отключить вывод предмета и способа расчетов.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

finsoftrz писал(а): 14 Сентябрь 2019, 13:16Наверно, надо в настройках глянуть.
Хотелось бы конечно программно …
Кстати, выяснилось, что максимальная длина наименования товара в ДККТ 10 = 128 символов (по крайне мере для АТОЛ 30Ф).
И опять - негде отжать эту цифирь через драйвер … А посылаешь на печать строку длинней - получаешь ошибку. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

ATOL драйвер 10.x

Сообщение SergioRaguzini »

Можно порыться в реестре - наверняка драйвер АТОЛ ДККТ10 там прописывает свои настройки
Да, наверное, оптимальный вариант, Спасибо!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

ATOL драйвер 10.x

Сообщение Игорь Столяров »

Алгоритм определения кол-ва символов в строке печати оказался проще детской игры в крысу. :)

Каждый номер шрифта АТОЛ (устанавливается по номеру от 1 до 7) имеет заданную ширину символа (CharSizePixel = 12, 10, 9 пикселей).
А значит получив из драйвера ширину строки произвольной ленты в пискселях (LineSizePixel), можем получить ширину печати
этим номером шрифта в символах: CountCharLine = Int(LineSizePixel / CharSizePixel)

Например для АТОЛ 30Ф драйвер возвращает ширину ленты = 384 пикселя.
Расчитываем размер строки печати в символах по номеру устанавливаемого шрифта:

Шрифт 1-5 (12 пикселей) = Int(384 / 12) = 32 символа / строке
Шрифт 6 (10 пикселей = Int(384 / 10) = 38 символов / строке
Шрифт 7 (9 пикселей) = Int(384 / 9) = 42 символа / строке
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
SergioRaguzini
Старожил
Сообщения: 234
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край
Благодарил (а): 6 раз

ATOL драйвер 10.x

Сообщение SergioRaguzini »

Игорь Столяров писал(а): 14 Сентябрь 2019, 6:49 ....
3. Или просим указать вручную папку с расположением драйвера и запоминаем её в настройках.
...
Привет Всем!

При реализации вышеуказанного варианта, столкнулся со следующей проблемой:
для этого способа, в программе необходимо сделать настройку с явным указанием папки нахождения библиотеки fptr10.dll
у меня, например, это C:\Program Files\ATOL\Drivers10\KKT\bin\fptr10.dll
Меня смутило то, что в MODULE применяется константа:

MODULE(sourcefile)
где sourcefile - A string constant which contains the filename....

Однако, нам заранее не известно, куда пользователь может установить драйвер, конечно, в 99% случаев, при установке драйвера будет все по умолчанию, но малая вероятность иного расположения все же остается (опять же, в зависимости от битности OC)...

Получается, что этот вариант неприемлем, или все-таки есть решение?

Спасибо

p.s. признаюсь, за много лет, первый раз полез в Help читать о синтаксисе MODULE - и увидел, что там именно константа, а не переменная как мне думалось ранее...
Ответить