Проверяю работу с дисплеем покупателя. Когда-то делал класс-обертку для драйвера Штриха, с которым из приложения работа осуществляется через ole контрол. Насколько знаю, драйвер Штриха должен быть совместим с большинством моделей, которые все вешаются на com-порт и управляются esc последовательностями символов. Но возник вопрос, может лучше напрямую работать с com-портом, никто не делал у себя такое? С одной стороны, не надо ставить дополнительный драйвер (хоть и бесплатный), с другой стороны у него есть стандартная программа для проверки работы, что упрощает наше приложение, в котором остается только вызов методов отображения информации о продаже и бегущей строки на период между продажами.
Если кому интересно, прикрепил класс работы с драйвером Штриха, там просто разобраться.
Дисплей покупателя
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Дисплей покупателя
Спасибо ! Прикольно. Вот бы ещё примерчик, демонстрирующий возможности класса … ![Wink ;)](./images/smilies/icon_wink.gif)
![Wink ;)](./images/smilies/icon_wink.gif)
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Дисплей покупателя
Объявляем локальный экземпляр класса.
FsDispl FsDisplCust
На окне создаем ole контрол. В событии OpenWindow пишем:
if PAR:DevDisplCust=1 !если в параметрах программы подключен дисплей покупателя
FsDispl.Init (?Ole, 0)
FsDispl.Enable
do displCust_r
.
Перед закрытием окна пишем:
if PAR:DevDisplCust=1
FsDispl.StopStr(1)
FsDispl.StopStr(2)
sleep(500)
FsDispl.ClearDispl
FsDispl.EnterStr('Программа выключена!',1)
FsDispl.kill
.
Рутинка вывода информации, вызов вставляем в места после изменения списка продаваемых товаров.
displCust_r routine
if PAR:DevDisplCust=1
if records(Loc:Queue)=0
FsDispl.ClearDispl()
FsDispl.SalePause('Здравствуйте!','Желаем удачной покупки!')
else
get(Loc:Queue,records(Loc:Queue))
clear(tov:record)
tov:id=Loc:IDTovar
get(Tovar,Tov:keyID)
if records(Loc:Queue)=1
FsDispl.SaleDispl(Loc:Sum,Loc:SumIt,tov:name,1)
else
FsDispl.SaleDispl(Loc:Sum,Loc:SumIt,tov:name,0)
.
.
.
В примере список сканируемых товаров имеет вид:
Loc:Queue QUEUE,PRE()
Loc:Name STRING(150)
Loc:Kod LONG
Loc:Ed STRING(10)
Loc:Kol REAL
Loc:CenaNoSk REAL
Loc:Cena REAL
Loc:Sum REAL
Loc:IDTovar LONG
END
Loc:SumIt REAL
Loc:IDTovar - идентификатор найденного по штрих-коду товара
Loc:Sum - сумма по строке
Loc:SumIt - итоговая сумма по чеку
Еще, в классе может понадобиться увеличить паузу после останова бегущей строки на sleep(500).
FsDispl FsDisplCust
На окне создаем ole контрол. В событии OpenWindow пишем:
if PAR:DevDisplCust=1 !если в параметрах программы подключен дисплей покупателя
FsDispl.Init (?Ole, 0)
FsDispl.Enable
do displCust_r
.
Перед закрытием окна пишем:
if PAR:DevDisplCust=1
FsDispl.StopStr(1)
FsDispl.StopStr(2)
sleep(500)
FsDispl.ClearDispl
FsDispl.EnterStr('Программа выключена!',1)
FsDispl.kill
.
Рутинка вывода информации, вызов вставляем в места после изменения списка продаваемых товаров.
displCust_r routine
if PAR:DevDisplCust=1
if records(Loc:Queue)=0
FsDispl.ClearDispl()
FsDispl.SalePause('Здравствуйте!','Желаем удачной покупки!')
else
get(Loc:Queue,records(Loc:Queue))
clear(tov:record)
tov:id=Loc:IDTovar
get(Tovar,Tov:keyID)
if records(Loc:Queue)=1
FsDispl.SaleDispl(Loc:Sum,Loc:SumIt,tov:name,1)
else
FsDispl.SaleDispl(Loc:Sum,Loc:SumIt,tov:name,0)
.
.
.
В примере список сканируемых товаров имеет вид:
Loc:Queue QUEUE,PRE()
Loc:Name STRING(150)
Loc:Kod LONG
Loc:Ed STRING(10)
Loc:Kol REAL
Loc:CenaNoSk REAL
Loc:Cena REAL
Loc:Sum REAL
Loc:IDTovar LONG
END
Loc:SumIt REAL
Loc:IDTovar - идентификатор найденного по штрих-коду товара
Loc:Sum - сумма по строке
Loc:SumIt - итоговая сумма по чеку
Еще, в классе может понадобиться увеличить паузу после останова бегущей строки на sleep(500).
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7374
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Дисплей покупателя
Спасибо ! Так то не просто … Попробую разобраться. ![Smile :)](./images/smilies/icon_smile.gif)
![Smile :)](./images/smilies/icon_smile.gif)
За теми кто отстал - не возвращаться. (С) Кодекс