Взять кассу
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Фик знает, не моя тема. Я тут такой же юзер. Если пойдет развитие проекта в эту сторону, расскажу, что узнаю...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7387
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Взять кассу
Да, я уже понял. Тут скорее уже спор тупоконечников c остроконечниками (С) Гуливер.finsoftrz писал(а): ↑20 Июнь 2018, 13:53Фик знает, не моя тема. Я тут такой же юзер.
Надо ли для каждой железки делать прямой обмен через порт, или всё-таки в 2018 г. уже есть смысл
работать через некий универсальный интерфейс драйвера, хотя и не бесплатный. Наверно - по обстановке.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Я не про это. Управление через com-порт - это стандарт для различных девайсов. А вот как работает какая-то конкретная библиотека ("драйвер" атола, например), надо смотреть. Вы же говорите, что управление происходит по другому стандарту. Если я правильно понял. Чтобы с этим разобраться, надо более глубоко вникнуть в вопрос. Все зависит не только от библиотеки, но и от конкретного девайса.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Убил сегодня немало времени на pirit (оно же vici). В общем, ситуация такая.
Поскольку подключение по usb, вначале ставится эмулятор usb-com. Его можно взять на сайте Дримкаса (который сейчас активно продвигает vici). Для настройки и проверки используется программка Fito (аналог теста драйвера в Штрихе и Атоле). Это, в общем, стандартно для pirit.
Дальше интереснее. Кристалл-Сервис, который производит данные девайсы, раздает и свой OPOS драйвер. Это библиотечка для доступа через ole. OPOS - это старый стандарт, введенный MS со товарищами еще в 1994 году и поддерживаемый, в том числе, Штрихом и Атолом. Однако, как я понял, у Кристалл-Сервис это все в заброшенном виде, версия 1.0, при установке вывалилась ошибка. Вроде драйвер установился, но не заработал. Решил посмотреть у Атола. В старых бесплатных драйверах от 2008 года поддержки pirit нет. Она есть уже в платных драйверах от 2013 года. Причем, еще под старую модель. Попробовал, вроде x-отчет напечатал, с большими тормозами, наверно из-за триальности.
Дальше решил почитать, что обсуждается на форумах разработчиков. В основном, по последним моделям vici, так как стандартно драйвера сделали только для 1С. Оказалось, что другие используют прямую работу через com-порт. Например, известная контора BuhSoft и еще 2-3 разработчика отметились.
В общем, дальше начал смотреть доку по работе через com-порт. Некоторые вещи надо осмыслить, в конце концов запустил прогон бумаги и x-отчет. На самом деле, это много. Самое сложное понять, как сформировать отправляемые команды. Надеюсь, дальше будет легче. Для примера, как выглядит печать x-отчета в приложении.
PiritDrv.init(5) !девайс на 5 com-порту
if PiritDrv.ErrorCode>0
FsMessagePr(clip(PiritDrv.ErrorDisc))
exit
.
PiritDrv.PrintReportX
PiritDrv.kill
А внутри класса так:
!===================================================================================
!
! Вывести x-отчет
!
FsKKMPirit.PrintReportX PROCEDURE
CODE
if SELF.Active = 0
return
end
if SELF.ClearOut()=0
return
end
SELF.BufOut=chr(02h) & clip(SELF.Pswd) & chr(27h) & '20' & all(chr(1Ch),16) & chr(03h)
SELF.SumCRC=SELF.GetCRC(SELF.BufOut)
SELF.BufOut=clip(SELF.BufOut) & SELF.SumCRC
if SELF.ComRef.Write(SELF.BufOut,len(SELF.BufOut)+1)=0
SELF.SetError(0,'Вывод X-отчета')
end
Поскольку подключение по usb, вначале ставится эмулятор usb-com. Его можно взять на сайте Дримкаса (который сейчас активно продвигает vici). Для настройки и проверки используется программка Fito (аналог теста драйвера в Штрихе и Атоле). Это, в общем, стандартно для pirit.
Дальше интереснее. Кристалл-Сервис, который производит данные девайсы, раздает и свой OPOS драйвер. Это библиотечка для доступа через ole. OPOS - это старый стандарт, введенный MS со товарищами еще в 1994 году и поддерживаемый, в том числе, Штрихом и Атолом. Однако, как я понял, у Кристалл-Сервис это все в заброшенном виде, версия 1.0, при установке вывалилась ошибка. Вроде драйвер установился, но не заработал. Решил посмотреть у Атола. В старых бесплатных драйверах от 2008 года поддержки pirit нет. Она есть уже в платных драйверах от 2013 года. Причем, еще под старую модель. Попробовал, вроде x-отчет напечатал, с большими тормозами, наверно из-за триальности.
Дальше решил почитать, что обсуждается на форумах разработчиков. В основном, по последним моделям vici, так как стандартно драйвера сделали только для 1С. Оказалось, что другие используют прямую работу через com-порт. Например, известная контора BuhSoft и еще 2-3 разработчика отметились.
В общем, дальше начал смотреть доку по работе через com-порт. Некоторые вещи надо осмыслить, в конце концов запустил прогон бумаги и x-отчет. На самом деле, это много. Самое сложное понять, как сформировать отправляемые команды. Надеюсь, дальше будет легче. Для примера, как выглядит печать x-отчета в приложении.
PiritDrv.init(5) !девайс на 5 com-порту
if PiritDrv.ErrorCode>0
FsMessagePr(clip(PiritDrv.ErrorDisc))
exit
.
PiritDrv.PrintReportX
PiritDrv.kill
А внутри класса так:
!===================================================================================
!
! Вывести x-отчет
!
FsKKMPirit.PrintReportX PROCEDURE
CODE
if SELF.Active = 0
return
end
if SELF.ClearOut()=0
return
end
SELF.BufOut=chr(02h) & clip(SELF.Pswd) & chr(27h) & '20' & all(chr(1Ch),16) & chr(03h)
SELF.SumCRC=SELF.GetCRC(SELF.BufOut)
SELF.BufOut=clip(SELF.BufOut) & SELF.SumCRC
if SELF.ComRef.Write(SELF.BufOut,len(SELF.BufOut)+1)=0
SELF.SetError(0,'Вывод X-отчета')
end
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7387
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Взять кассу
Для теста можно попробовать гиперсовременную версию АТОЛ ДТО 8.16 от 2017/18 г.finsoftrz писал(а): ↑21 Июнь 2018, 21:10В старых бесплатных драйверах от 2008 года поддержки pirit нет. Она есть уже в платных драйверах от 2013 года.
По крайне мере в режиме чекового принтера всё работает точно с VICI.
А вот так кодами обмениваться через порт - жесть. Это же ещё потом как-то поддерживать придётся.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Игорь, полистайте ради интереса описание команд для работы через com-порт с pirit, я его прикреплял в одном из сообщений. Там надо понять принцип оформления команды и как считается crc (не совсем очевидно, как сделать в кларионе). Программа Fito позволяет вводить команды в своем интерфейсе и пишет в лог, что посылает на девайс. У меня сложилось впечатление, что работать через com-порт ничуть не сложнее, чем через ole. Все достаточно разумно сделано и хорошо описано. И работает на порядок быстрее, чем через ole-надстройку.
И еще один важный момент. Я стал смотреть, какие фискальники стоят в магазинах продуктовой сети. Доля pirit достаточно приличная. Самый крупный из магазинов - пириты. Сегодня запускали новый магазин - пириты. И новые модели vici очень активно двигают на рынок. Они дешевые, надежные, быстрые. Очень большой вопрос, как на это будет реагировать Атол. Он же зарабатывает на девайсах, а не на софте. Дальше, думаю, понятно. Вообще, это разумно пользоваться тем софтом, который предоставляет производитель девайсов, а не его конкурент...
И еще один важный момент. Я стал смотреть, какие фискальники стоят в магазинах продуктовой сети. Доля pirit достаточно приличная. Самый крупный из магазинов - пириты. Сегодня запускали новый магазин - пириты. И новые модели vici очень активно двигают на рынок. Они дешевые, надежные, быстрые. Очень большой вопрос, как на это будет реагировать Атол. Он же зарабатывает на девайсах, а не на софте. Дальше, думаю, понятно. Вообще, это разумно пользоваться тем софтом, который предоставляет производитель девайсов, а не его конкурент...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7387
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Взять кассу
Ну не знаю. Я тоже уже много лет внимательно смотрю за этой темой …
Магнит - штрихи, Ашан - штрихи, Пятёра - атол, OK - атол, Леруа - штрихи и т.д.
У нас в регионе не видел я Пирит / VICI в крупных сетях. И вообще их не видел.
То, что они дешёвые - это ни о чём. Важна стоимость обслуживания, надёжность, расходники, поддержка производителя.
Единственно в чём с Вами согласен - это то, что на сайте VICI ископаемый софт и не рабочие ссылки, я это и сам видел.
Был бы у них нормальный драйвер, как у Штрих-М или АТОЛ - ни кто бы и не пытался хоть как-то прикрутить чужой.
Магнит - штрихи, Ашан - штрихи, Пятёра - атол, OK - атол, Леруа - штрихи и т.д.
У нас в регионе не видел я Пирит / VICI в крупных сетях. И вообще их не видел.
То, что они дешёвые - это ни о чём. Важна стоимость обслуживания, надёжность, расходники, поддержка производителя.
Единственно в чём с Вами согласен - это то, что на сайте VICI ископаемый софт и не рабочие ссылки, я это и сам видел.
Был бы у них нормальный драйвер, как у Штрих-М или АТОЛ - ни кто бы и не пытался хоть как-то прикрутить чужой.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Я и сам был удивлен. Думал, есть у меня поддержка работы со Штрихами и Атолом, ничего больше и не надо. А тут какие-то пириты всплыли, с которыми непонятно как работать. И так всплыли, что мимо не обойти... Я думаю, тут дело в том, что пириты больше распространяются в одиночных магазинах и небольших сетях. У крупных сетей важна унификация и у них много денег. Кредитных... У нас ситуация несколько иная. Сеть небольшая по сравнению с упомянутыми, развивается за счет поглощения одиночных магазинов. Те отдают имеющуюся технику по бросовой цене. Совсем бросовой... А на счет "нормального драйвера", просто выглядит поначалу непривычно. Зато четко понимаешь, что делаешь. В конечном итоге, в прикладном решении будет совсем без разницы, с чем работаешь. Код один и тот-же, что для Штрихов, что для Атолов, что для Пиритов. Все уберется внутрь класса. Там много и не надо, вся настройка в системном ПО от производителя.
PS. Сейчас рынок фискальников очень интересен. Проводимая сверху автоматизация розничной торговли сильно всколыхнуло отрасль их производства. Думаю, нас ждет еще немало сюрпризов. Вот, к примеру, даже МТС начала их продавать под своим брэндом. Казалось бы, какое отношение МТС имеет к фискальникам. А тоже хотят свой кусок пирога отхватить...
PS. Сейчас рынок фискальников очень интересен. Проводимая сверху автоматизация розничной торговли сильно всколыхнуло отрасль их производства. Думаю, нас ждет еще немало сюрпризов. Вот, к примеру, даже МТС начала их продавать под своим брэндом. Казалось бы, какое отношение МТС имеет к фискальникам. А тоже хотят свой кусок пирога отхватить...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7387
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Взять кассу
Я читал интервью представителя ФНС (всё делить на два), так там утверждалось, что уже 3-й раз отложенный переход всея Руси на ФФД 1.10 как раз связан с недостатком производственных мощностей фискальной техники. У нас в продаже есть любые модели … но из Москвы, конечно видней.finsoftrz писал(а): ↑21 Июнь 2018, 23:50Проводимая сверху автоматизация розничной торговли сильно всколыхнуло отрасль их производства.
Если Вы обратили внимание, то после лоббирования ФЗ-54, стоимость среднего ФР просто выросла в 3 раза. Была 6тр, стала 18 тр (именно эту сумму "компенсирует" государство бизнесу). У всех кто разбирал ФР в душе родился крик. Чекопечатающий блок (SEIKO только в дорогих Штрихах и АТОЛАХ), блок питания, плата размером с пачку сигарет, 300 грамм пластмассы, 1.5 метра кабеля - в Китае это стоит $30, В России - $70. Наверно предполагается, что остальная себестоимость - это программное обеспечение (прошивка, драйвер) … Стоимость фискального накопителя (обычной карты памяти) в 10 тр - это просто бред. Т.е. цена явно перегрета.
Поэтому, как и везде есть лидеры рынка (Штрих и АТОЛ), дискаунтеры (VICI), Сбер вложился и реанимировал забытый богом и людьми Уральский Электромеханический завод (ЭВОТОР) и т.д. Вот только что из этого всего останется, когда закончится взрывной рост рынка благодаря ФЗ-54 … Поэтому упомянутые Вами крупные торговые сети, которые вкладывают крупные средства в автоматизацию предпочитают покупать пусть и дороже, но понадёжней.
Кстати ещё вспомнил ДНС и М-Video - Штрих, они громче всех вопили, когда в декабре вырубились все штрихи из-за корявой прошивки.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Когда и чем это все закончится, никто сейчас не знает. Пока только началось. Главное веселье отодвинуто до 2021 года.Игорь Столяров писал(а): ↑22 Июнь 2018, 6:58Вот только что из этого всего останется, когда закончится взрывной рост рынка благодаря ФЗ-54 … Поэтому упомянутые Вами крупные торговые сети, которые вкладывают крупные средства в автоматизацию предпочитают покупать пусть и дороже, но понадёжней.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7387
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Взять кассу
Что бы не случилось, аппетит спасёт бизнес. Ашан, Магнит, Диксик, ОK, Карусель и т.д. - не пропадут.finsoftrz писал(а): ↑22 Июнь 2018, 12:55Главное веселье отодвинуто до 2021 года.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Сделал все нужные функции для работы с pirit (vici) через com-порт. Тестировал пока печать сервисного документа (вывод строк и qr-кода) и набор служебных функций (промотка ленты, отрез, x-отчет). Не нашел функции "Продолжение печати", в Штриховском драйвере полезная вещь на случай замятия бумаги, например. Ну и, как писали, нет встроенной отправки sms/почты, надо самостоятельно реализовывать.
Вообще говоря, довольно много писанины получилось. Если нет задачи использовать в специализированных POS-системах, то проще все-же подключить ATOL. Для истории заголовок классика.
Вообще говоря, довольно много писанины получилось. Если нет задачи использовать в специализированных POS-системах, то проще все-же подключить ATOL. Для истории заголовок классика.
Код: Выделить всё
FsKKMPirit CLASS,TYPE,MODULE('FsKKMPirit.CLW'),LINK('FsKKMPirit.CLW')
Active BYTE, PRIVATE !флаг активности
ComPort LONG !номер com-порта
Pswd STRING(10) !пароль
NameSotr STRING(20) !имя оператора
BufOut CSTRING(1024) !выходной буфер
BufIn CSTRING(1024) !входной буфер
ParamIn STRING(1280) !полученные параметры 16х80
PocketID BYTE !идентификатор отправленного пакета
OperCode BYTE !код выполняемой операции
SumCRC STRING(2) !контрольная сумма
ComRef &FsCom !класс работы с com-портом
ErrorCode LONG !код ошибки
ErrorDisc STRING(128) !описание ошибки
KKM_NumCheck STRING(20) !номер фискального документа (чека)
KKM_OperCount STRING(20) !операционный счетчик
KKM_FlagFisc STRING(20) !фискальны признак признак
KKM_CashBoxStatus BYTE !статус денежного ящика (0-закрыт, 1-открыт)
Init PROCEDURE (LONG pComPort, STRING pNameSotr) !инициализация класса
Kill PROCEDURE !отключение класса
Destruct PROCEDURE !деструктор
Connect FUNCTION (), BYTE !начало работы
TestConnect FUNCTION (), BYTE !проверка связи
FeedDocument PROCEDURE (LONG pRows) !прогон ленты
ReportBreak PROCEDURE !прерывание вывода отчета
OperCutCheck PROCEDURE !отрез ленты
Beep PROCEDURE !звуковой сигнал
OpenCashBox PROCEDURE !открыть денежный ящик
GetStatusCashBox PROCEDURE !получить статус денежного ящика
PrintReportX PROCEDURE !Вывести x-отчет
PrintReportZ PROCEDURE !Вывести z-отчет
OpenShift FUNCTION (), BYTE !открыть смену
OpenDoc PROCEDURE (BYTE pType) !открыть документ
CloseDoc PROCEDURE !закрыть документ
CancelDoc PROCEDURE !аннулировать документ
PrintString PROCEDURE (STRING pStr, BYTE pAlign, BYTE pHight2, BYTE pWidth2) !печатать строку
PrintBarCodeQR PROCEDURE (STRING pStr) !печать qr-кода
PrintSale PROCEDURE (STRING pTovarName, REAL pKol, REAL pCena, BYTE pNalog) !печать товарной позиции
PrintPay PROCEDURE (REAL pSum, BYTE pType) !печать оплаты
CashInOutCome PROCEDURE (REAL pSum, STRING pName) !внесение или изъятие суммы (с наименованием купюры)
SendOrder FUNCTION (), BYTE !послать команду
ReadAnswer FUNCTION (BYTE pTimes), BYTE !получить ответ
ClearOut FUNCTION (), BYTE !Очистить исходящие сообщения
SetError PROCEDURE (BYTE pReg, STRING pName) !Фиксировать ошибку
GetPocketID PROCEDURE !получить идентификатор пакета
GetCRC FUNCTION (*CSTRING pBuf), STRING !Расчет контрольной суммы
DateFormat FUNCTION (LONG pDate), STRING !форматирование даты
DateDeFormat FUNCTION (STRING pDate), LONG !деформатирование даты
TimeFormat FUNCTION (LONG pTime), STRING !форматирование времени
TimeDeFormat FUNCTION (STRING pTime), LONG !деформатирование времени
SaveParamIn PROCEDURE !сохранить входящие параметры
GetParamIn FUNCTION (BYTE pNum), STRING !получить входящий параметр
GetErrorRet FUNCTION (STRING pCode), STRING !получить ошибку выполнения команды
GetOperName FUNCTION (BYTE pCode), STRING !получить наименование операции
END
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Тестовый пример выглядит примерно так.
Код: Выделить всё
PiritDrv.init(5,'Слава')
if PiritDrv.ErrorCode>0
FsMessagePr(clip(PiritDrv.ErrorDisc))
exit
.
PiritDrv.OpenDoc(1)
PiritDrv.FeedDocument(1)
PiritDrv.PrintBarCodeQR('09001785400000118984310PX8051522100000476712617218613594213116182124151')
PiritDrv.FeedDocument(1)
PiritDrv.PrintString('Здравствуй, Мир!',1,0,0)
PiritDrv.FeedDocument(2)
PiritDrv.CloseDoc
PiritDrv.kill
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7387
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Взять кассу
Так а самый интересный вопрос: VICI электронный чек (SMS / email) через ОФД умеет отправлять ?
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Я вроде написал выше, что нет. Такие реквизиты в ОФД не передаются, надо организовывать самостоятельно из своей программы. Возможно, в будущих реализациях появится.
C6/C11, ШВС, tps/btrieve.