gifts2017

VGA-эмулятор дисплея покупателя

Опубликовал Евгений Баинов (bainov) в раздел Программирование - Внешние компоненты

COM-объект предназначен для эмуляции дисплея покупателя на дополнительном экране компьютера.
Совместима с  "1С:Управление торговлей 10.3", "1C:Розница 1.0", "1C:Комплексная автоматизация 1.1".

Версия 1.1.4

COM-объект предоставляет возможность эмулировать дисплей покупателя на втором мониторе компьютера.

 

Возможности:

  • Отображение текущего времени и даты.
  • Показ слайд-шоу из указанного в настройках каталога с изображениями в формате JPG. По умолчанию показываются пейзажи озера Байкал.
  • Показ произвольного изображения из файла.

Плюсы: 

  • Нет необходимости покупать специализированный дисплей покупателя, если есть возможность подключить к компьютеру второй дисплей.
  • По стоимости это может оказаться дешевле, при этом выглядеть намного презентабельнее.
  • Можно отображать рекламу в режиме слайд-шоу. Это может повысить вероятность спонтанных покупок в прикассовой зоне.
  • Можно подключить к УТ 10 безо всяких доработок конфигурации.
  • Разработчик может организовать в своем решении возможность демонстрации на втором дисплее произвольных изображений.
  • Например, в нашем решении для общепита мы демонстрируем изображение блюда во время подбора блюд в заказ.

Порядок установки:

  1. Скачать файл RBSDisplayFree.dll
  2. Запустить командную строку от имени администратора, используя команду regsvr32, зарегистрировать файл RBSDisplayFree.dll
    Например: regsvr32  "путь к компоненте"\RBSDisplayFree.dll 
  3. Используя обработку обслуживания подключить компоненту к типовой конфигурации.

 

Пример использования 1:

Драйвер.SetDisplay(2); //Устанавливаем дисплей для управления. 1- основной дисплей , 2- второй дисплей и т.д. Номер дисплея как в настройках Windows
Драйвер.SetHeader("Торговый дом ""Комплексный""");//Заголовок с названием организации
Драйвер.SetPicturePath("C:\Pictures");//Каталог с картинками JPG для слайдшоу. Желательно предварительно подготовить для уменьшения искажения при растягивании.
//Картинки отображаются в нижней части дисплея и подгоняются под размер области отображения.
Драйвер.SetDelay(10);//ставим период обновления картинки в слайд-шоу. в данном случае 10 секунд.
Драйвер.Initialize();//Применяем настройки инициализации

//Выводим строки на дисплей
Сообщение = Новый Соответствие;
Сообщение.Вставить("Строка1","Вафли 450гр. 45-00р.");
Сообщение.Вставить("Строка2","Сумма       125-00р.");
Результат = Драйвер.ShowPage("",Сообщение);


Пример использования 2:

Драйвер.SetDisplay(2); //Устанавливаем дисплей для управления. 1- основной дисплей , 2- второй дисплей и т.д. Номер дисплея как в настройках Windows
Драйвер.SetHeader("Торговый дом ""Комплексный""");//Заголовок с названием организации
Драйвер.SetPicturePath("C:\Pictures");//Каталог с картинками JPG для слайдшоу. Желательно предварительно подготовить для уменьшения искажения при растягивании.
//Картинки отображаются в нижней части дисплея и подгоняются под размер области отображения.
Драйвер.SetDelay(10);//ставим период обновления картинки в слайд-шоу. в данном случае 10 секунд.
Драйвер.Initialize();//Применяем настройки инициализации

//Выводим строки на дисплей

Результат = Драйвер.ShowLines("Вафли 450гр. 45-00р.","Сумма       125-00р.");


Скачать файлы

Наименование Файл Версия Размер
RBSDisplayFree.dll 33
.dll 4,72Mb
02.07.15
33
.dll 1.1.4 4,72Mb Скачать
Обработка обслуживания для Компексной автоматизации 1.1, Розница 1.0, Управление торговлей 10.3 31
.epf 20,89Kb
22.05.15
31
.epf 1.0.1 20,89Kb Скачать
Краткое руководство пользователя 24
.pdf 159,03Kb
02.07.15
24
.pdf 1.1.3 159,03Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

2. Евгений Баинов (bainov) 09.03.15 09:42
Документация.


ShowImage(imageDestination);
Функция вывода изображения на дисплей
Входные параметры:
imageDestination - строка (BSTR), путь к изображению, включая имя и расширения файла
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

Close();
Функция освобождения захваченного дисплея
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

SetTheme(themePath);
Функция установки пути к файлу темы
Входные параметры:
themePath - строка (BSTR), путь к файлу темы
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

SetDisplay(displayNumber);
Функция установки номера захватываемого дисплея.
Входные параметры:
displayNumber - число (LONG), номер дисплея (отсчет начинается с единицы)
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

GetVersion();
Функция возвращает версию компоненты
Возвращаемое значение: строка (BSTR), версия компоненты

Настройка стандартной темы:
SetFont1(fontName);
Функция установки шрифта для первой строки
Входные параметры:
fontName - строка (BSTR), имя шрифта
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

SetFont2(fontName);
Функция установки шрифта для второй строки
Входные параметры:
fontName - строка (BSTR), имя шрифта
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

SetHeader(headerLine);
Функция установки заголовка страницы
Входные параметры:
headerLine - строка (BSTR), заголовок страницы
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

SetPicturePath(directoryPath);
Функция установки пути к каталогу с изображениями для слайд-шоу. Загружаются десять первых файлов в формате *.jpg
Входные параметры:
directoryPath - строка (BSTR), путь каталога с изображениями
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки

SetDelay(interval);
Функция установки интервала смены изображений слайд шоу.
Входные параметры:
interval - число (LONG), время в секундах
Возвращаемое значение: TRUE (ИСТИНА) при успешном выполнении функции и FALSE (ЛОЖЬ) при возникновении ошибки
3. Arshat Amirzhan (Amirzhan) 16.03.15 20:45
4. Бесёнок Инфостарта (Бесёнок Инфостарта) 16.03.15 21:49
5. Николай Борисов (omenfarsh) 10.04.15 08:54
У меня драйвер в УТ почему-то не видит?
6. Евгений Баинов (bainov) 14.04.15 20:54
(5) omenfarsh, COM-объект создается? Если dll по какой то причине не зарегистрировался - то надо будет руками зарегистрировать.
7. Сергей Дуганов (rounder) 26.04.15 21:56
А в терминале будет работать?
8. Евгений Баинов (bainov) 28.04.15 17:42
(7) rounder, Должно работать. Только управлять будет дисплеем, подключенном к серверу.
9. Николай Борисов (omenfarsh) 28.04.15 20:59
Получилось подключить обработку, всё супер! Никаких дописок и сложных настроек! Полная эмуляция стандартного дисплея покупателя)
Прикрепленные файлы:
10. Sergey Bryuhanov (Bryuhanov) 06.05.15 16:31
Попробовал, классная вещь!!!
11. Евгений Баинов (bainov) 09.05.15 03:40
(10) Bryuhanov,
Глюки могли быть из-за несоответствия версий обработки и компоненты.
12. Sergey Bryuhanov (Bryuhanov) 09.05.15 18:53
(11) bainov,
Так, в том то и дело, что регистрировал именно dll из архива с обработкой.
Хотя, может действительно при установке свежей либы старая dll, скачанная из вашей публикации не была удалена.
Dll при установке только в Program Files распаковывается?
Или баг из-за того возник, что дисплей я к Рознице, а не к УТ цеплял, но там различий по работе с ТО, никаких вроде-бы не должно быть?
15. Евгений Баинов (bainov) 28.05.15 04:47
Убрали с публикации инсталятор.
Опубликовали новую версию dll и обработку.
16. Сергей Лунин (prolan) 05.06.15 19:21
Отображение, как я понял, идет на весь экран. А если нужно в отдельном окне?
17. Евгений Баинов (bainov) 08.06.15 06:40
(16) В следующей версии будет добавлена возможность настройки стиля окна.
также запланирована обратная связь с 1С. Можно будет получать в 1С события от объектов, когда по ним кликают мышкой.
18. Александр М (buka99999) 10.06.15 22:28
bainov А есть версия библиотеки которая будет работать в 1С77. Здесь команда посылается через соответствие, а семерка не знает что это такое.
19. Евгений Баинов (bainov) 11.06.15 06:44
(18) Не думали что на 77 понадобится. :)
Добавим в ближайшее время функцию.
20. Александр М (buka99999) 11.06.15 10:05
bainov Былобы неплохо, т.к. на семерке еще много народу работает.
21. mishaPH (mishaPH) 17.06.15 12:07
22. Евгений Баинов (bainov) 17.06.15 19:58
(21)(20)
Добавили функцию вывода строк, совместимую с 1С 7.7.
Применение:
//Выводим строки на дисплей
Результат = Драйвер.ShowLines("Вафли 450гр. 45-00р.","Сумма       125-00р.");
23. Константин (Fisherru) 24.06.15 08:39
Вопрос. А можно вывести только 2 строки?
И еще, может кто знает сеть "Красное и Белое"? мы уже почти по всей России...
Нами уже несколько лет назад реализован подобный монитор покупателя для 7.7.
Зайдите посмотрите ;-)
Там на мониторе организовано 3 зоны :
с левой стороны отображается прайс на сигареты (можно обновлять в реальном времени).
на правой стороне экрана - сверху реклама (можно как статику так и видео показывать),
а в нижней части отображается накладная - товары приобретаемые на кассе.
Список товаров автоматически прокручивается с выделением цветом товаров без скидки,
там же присутствует сведения о дисконтной карте и сумма накладной меняющаяся с каждым новым товаром
пробитым по кассе...
Да, когда покупок нет какое-то время на весь экран выводится реклама (можно как статику так и видео показывать)
Как только новая накладная - возвращаемся на экран с продажами
Всё самописное :-)
Пример прикреплен.
База чисто рабочая тренировочная так что цены могут быть не корректны и в названиях сигарет - ляпы...
Сигаретная часть серая согласно закона. Раньше была красиво расцвечена также с выделением цветом
различных акционных товаров
Прикрепленные файлы:
24. Константин (Fisherru) 24.06.15 08:41
Да, и еще, пропорции зон можно менять программно ;-)
25. Евгений Баинов (bainov) 30.06.15 12:30
Бесплатная версия эмулирует работу двухстрочного дисплея покупателя. Полнофункциональная версия может отображать произвольную информацию (таблицы, картинки, графики, анимация). Поддерживается темизация, т.е. пользователь может произвольно настроить внешний вид на свое усмотрение.
Например страницы из тем наших клиентов:
Прикрепленные файлы:
26. Евгений Баинов (bainov) 01.07.15 06:07
Пример работы с компонентой в C#:

public partial class Form1 : Form //Описание класса формы
    {
        dynamic component; //создание глобальной переменной без проверки типа
        public Form1() //конструктор формы
        {
            InitializeComponent(); //создание интерфейса формы
            Type display = Type.GetTypeFromProgID("Rbsoft.RBSDisplay2"); //получение типа по заданному ProgId
            component= Activator.CreateInstance(display); //создание экземпляра заданного типа
            component.setDisplay(2); //вызов метода компоненты - установка номера дисплея
            component.Initialize(); //вызов метода компоненты - инициализация параметров
            component.SetPicturePath(@"C:\Users\user\Pictures\Cafe\Ad"); //вызов метода компоненты - установка пути хранения изображений
            component.ShowLines("Вафли 450гр. 45-00р.","Сумма       125-00р."); //вызов метода компоненты - отобразить строки на экране
        }
    }
...Показать Скрыть
27. Евгений Баинов (bainov) 02.07.15 08:50
Пример работы компоненты в C++

CoInitialize(NULL); // инициализация СОМ библиотеки
	CLSID clsid;
	HRESULT hr = CLSIDFromProgID(L"Rbsoft.RBSDisplay2", &clsid); // получаем CLSID по известному ProgID

	if (SUCCEEDED(hr)) //если выполнено успешно
	{
		IDispatch * pdisp = (IDispatch *)NULL; //создание указатель на интерфейс СОМ объекта

		hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IDispatch, (void **)(&pdisp)); // создание объекта по полученному ранее CLSID

		CComPtr<IDispatch> var = pdisp; //умный указатель для управления СОМ интерфейсом
		CComVariant varResult; //создаем класс-обертку VARIANT для хранения результата выполнения методов

		var.Invoke1(L"SetDisplay", &variant_t(2), &varResult); //вызываем метод SetDisplay с помощью метода Invoke класса IDispatch
		var.Invoke0(L"Initialize", &varResult); //вызываем метод SetDisplay с помощью метода Invoke класса IDispatch

		system("pause");

		var.Invoke1(L"SetPicturePath",&variant_t("C:\Users\vasya\Pictures\Wallpapers\SomeTest"), &varResult); //вызываем метод SetPicturePath
		var.Invoke2(L"ShowLines", &variant_t(L"Вафли 450гр. 45-00р."),&variant_t(L"Сумма       125-00р."),&varResult); //вызываем метод ShowLines

		system("pause");
	}
	CoUninitialize(); //закрываем СОМ библиотеку
...Показать Скрыть
28. Tigran Musayelyan (Tigra_N86) 09.03.16 11:22
Добрый день.
Я не программирую в 1с, поэтому у меня возникли трудности с подключением вашего драйвера к 1С.
Можете выложить какую-нибудь инструкцию использования внешней обработки с Розница 2.1 или Управление Торговлей 11 ДЛЯ ЧАЙНИКОВ.
Спасибо
29. Евгений Баинов (bainov) 09.03.16 12:27
(28) Для Розница 2.1 и УТ 11 надо писать модуль для подключения. Указанного в описании примера достаточно для этого.
Если Вам требуется готовый модуль - то это платная работа.
30. Вася пупкин (vacony) 31.03.16 13:52
Добрый день
Подскажите стоимость платной версии , т.к. нужно выводить весь чек на доп. монитор , и варианты приобретения ?
Заранее спасибо
31. Евгений Баинов (bainov) 31.03.16 18:20
(30) vacony, 5000р. на каждый компьютер
32. V. L. (Vladal) 20.04.16 16:41
На скриншоте что за единица измерения "гр"?
33. Евгений Баинов (bainov) 21.04.16 03:31
(32) Vladal, гр=грамм
Пример с товарами из типовой УТ
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа