Страница 1 из 1
					
				Дисплей покупателя
				Добавлено: 15 Июнь 2018, 21:23
				 finsoftrz
				Проверяю работу с дисплеем покупателя. Когда-то делал класс-обертку для драйвера Штриха, с которым из приложения работа осуществляется через ole контрол. Насколько знаю, драйвер Штриха должен быть совместим с большинством моделей, которые все вешаются на com-порт и управляются esc последовательностями символов. Но возник вопрос, может лучше напрямую работать с com-портом, никто не делал у себя такое? С одной стороны, не надо ставить дополнительный драйвер (хоть и бесплатный), с другой стороны у него есть стандартная программа для проверки работы, что упрощает наше приложение, в котором остается только вызов методов отображения информации о продаже и бегущей строки на период между продажами. 
Если кому интересно, прикрепил класс работы с драйвером Штриха, там просто разобраться.
			 
			
					
				Дисплей покупателя
				Добавлено: 16 Июнь 2018, 7:42
				 Игорь Столяров
				Спасибо ! Прикольно. Вот бы ещё примерчик, демонстрирующий возможности класса … 

 
			 
			
					
				Дисплей покупателя
				Добавлено: 16 Июнь 2018, 9:15
				 finsoftrz
				Объявляем локальный экземпляр класса.
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).
			 
			
					
				Дисплей покупателя
				Добавлено: 16 Июнь 2018, 9:24
				 Игорь Столяров
				Спасибо ! Так то не просто … Попробую разобраться. 
