Страница 1 из 2
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 7:29
				 Игорь Столяров
				Привет всем ! 
Есть непреодолимое желание подключить к программе драйвер оборудования (например АТОЛ ДТО10).
Технологических проблем нет, драйвер поставляется как DLL, легко линкуется к Clarion приложению.
Но возникает непреодолимая дилемма. 
1. Если не добавлять к комплекту программы DLL драйвера, то при запуске программы на компьютере
    пользователя, возникает ожидаемая ошибка из-за отсутствующей DLL.
    (не нужен юзеру вообще этот АТОЛ и его драйвер, у него используется Штрих-М и т.д.)
2. Если добавлять к комплекту программы DLL драйвера, то может (и скорее всего возникнет) разнобой 
    версий между этой DLL и установленном на компьютере драйвере АТОЛ ДТО10, который имеет кучу
    версий и постоянно сам по себе обновляется как отдельное приложение …
И как это разрулить пока не понятно … 
Предлагает ли современная наука какое-то решение этого вопроса (кроме OLE - это отдельная тема) ?
Заранее спасибо за любую идею. 

 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 9:53
				 RaFaeL
				Динамическое подключение dll с динамической линковкой функций... Посмотри как подключаются функции из ClaRunExt.dll. Это если "умное" решение
Есть "тупое" - вынести функцию работы с драйвером в некую отдельную dll, сделать копию этой же dll, где вместо функций вызова драйвера "заглушки" и dll драйвера не подлинкована, соответственно разным клиентам поставлять разные версии этой dll
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 10:09
				 finsoftrz
				Стандартно в кларионе есть вызов процедур из внешней dll. Мне этого хватает. Если нужно передавать параметры и возвращать значения, то подгрузить dll можно через win api, подробно обсуждалось n лет назад, примеры можно поискать в clalist. 
Вопрос больше, конечно, а чем не устраивает работа через ole в данном контексте? С утра в воскресенье? 

 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 10:14
				 Игорь Столяров
				RaFaeL писал(а): 21 Октябрь 2018, 9:53Динамическое подключение dll с динамической линковкой функций
 
Спасибо - посмотрю, но боюсь что это слишком сложное решение для чужой DLL с непредсказуемыми изменениями …
В Clarion есть работа с подгружаемыми DLL, но вызов функций из них - без параметров … не подходит.
RaFaeL писал(а): 21 Октябрь 2018, 9:53
Есть "тупое" - вынести функцию работы с драйвером в некую отдельную dll
 
А, кстати, интересно. Действительно: 
1. DLL-заглушка-пустышка идёт в комплекте с программой и ничего не делает, наличие драйвера не требует.
2. В этом же комплекте идёт рабочая DLL, которая не прилинкована к программе.
3. В меню программы делаем пункт "Подключить АТОЛ". По нему:
   - проверяем наличие установленного драйвера АТОЛ, 
   - перезапускаем программу с удалением "пустышки" и копированием на её место рабочей DLL.
4. В теории - вроде бы всё получается … 

 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 10:18
				 Игорь Столяров
				finsoftrz писал(а): 21 Октябрь 2018, 10:09Вопрос больше, конечно, а чем не устраивает работа через ole в данном контексте? С утра в воскресенье?
 
В данном случае, дело даже не в похмелье … 

1. OLE всё-таки уже очень старая технология и от неё все производители избавляются. Game over ...
2. Есть некоторые проблемы с инициализацией OLE при ограничения прав юзеров в Windows и терминальных сессиях.
 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 10:53
				 RaFaeL
				Игорь Столяров писал(а): 21 Октябрь 2018, 10:14Спасибо - посмотрю, но боюсь что это слишком сложное решение для чужой DLL с непредсказуемыми изменениями …
В Clarion есть работа с подгружаемыми DLL, но вызов функций из них - без параметров … не подходит.
 
Можно и с параметрами, см. пример выше
Если сложно динамически линковать чужую dll, можно написать свою обертку (хоть даже с функциями без параметров) и линковать уже её
 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 21 Октябрь 2018, 17:42
				 finsoftrz
				Игорь Столяров писал(а): 21 Октябрь 2018, 10:18finsoftrz писал(а): 21 Октябрь 2018, 10:09Вопрос больше, конечно, а чем не устраивает работа через ole в данном контексте? С утра в воскресенье?
 
В данном случае, дело даже не в похмелье … 

1. OLE всё-таки уже очень старая технология и от неё все производители избавляются. Game over ...
2. Есть некоторые проблемы с инициализацией OLE при ограничения прав юзеров в Windows и терминальных сессиях.
 
Ну, тогда все понятно... 

 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 23 Октябрь 2018, 20:19
				 Игорь Столяров
				finsoftrz писал(а): 21 Октябрь 2018, 17:42Ну, тогда все понятно...
 
Вам-то с Пиритами & COM портами проще … а вот с АТОЛ & OLE есть одна интересность … 
Драйвер АТОЛ ДТО8 поддерживается до конца 2018 г., а современный АТОЛ ДТО10 не имеет OLE интерфейса.
И что с этим делать, лично мне - пока не понятно. 
Кто-нибудь пробовал юзать драйвер АТОЛ ДТО10 из Clarion ?
 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 2:55
				 Admin
				Игорь Столяров писал(а): 23 Октябрь 2018, 20:19Драйвер АТОЛ ДТО8 поддерживается до конца 2018 г.
 
Не совсем так. Судя по информации на этой 
странице, драйвер будет поддерживаться до 28.12.2019. В конце же 2018 прекращается доработка/обновление  драйвера.
Игорь Столяров писал(а): 23 Октябрь 2018, 20:19а современный АТОЛ ДТО10 не имеет OLE интерфейса.
 
На форуме обещали какой то OLE враппер для пользователей старых версий. Но это вилами на воде.
Игорь Столяров писал(а): 23 Октябрь 2018, 20:19Кто-нибудь пробовал юзать драйвер АТОЛ ДТО10 из Clarion ?
 
Я для себя решил пока не спешить и заняться следующим летом.
 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 6:51
				 Игорь Столяров
				Спасибо за информацию ! В справке-то к ДТО10 они написали, что у них реализован интерфейс OLE …
Но у них смешались люди и кони, т.к. на самом деле реализован COM интерфейс. По крайне мере - сейчас.
С другой стороны, как я понял, 1С-никам всё равно, т.к. у них реализован общий механизм интеграции для OLE / COM.
А вот нам надо идти к Деду Пахому. У него есть инструмент дивный, нам не ведомый. 
Который делает обёртку к DLL с COM интерфейсом для подключения из Clarion … Других путей я пока не вижу. 

 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 14:40
				 finsoftrz
				Ну, еще через vbscript решение напрашивается... Как правило, для него дают образцы кода. Это если быстро надо вопрос закрыть. Но, вообще говоря, я бы тоже пока не стал дергаться. Через ole много софта работает, могут атоловцев прогнуть.
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 15:04
				 Игорь Столяров
				finsoftrz писал(а): 24 Октябрь 2018, 14:40могут атоловцев прогнуть
 
Мне кажется АТОЛ - пофиг, чего им париться-то особо в стране победившей 1С ? 

Тут ещё нужно учитывать, что Microsoft тоже считает OLE рудиментом и грозит её прикрыть. Развивать - уж точно не будет.
 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 15:06
				 finsoftrz
				На самом деле, у каждого производителя существует протокол обмена с оборудованием - строки, формируемые по определенным правилам, которые отправляются в ккм и получаются в ответ. Далее, есть транспортная система. Насколько я знаю, это либо обмен по com порту (физическому или виртуальному), либо сокеты. Дальше уже идет надстройка в виде библиотек для упрощения работы. Например, упоминаемый драйвер АТОЛ. 
То есть технически мы можем работать с ккм от атола или штриха напрямую, без их драйверов. Как с пиритами или сп-ками. Другой вопрос, нужно ли это...
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 15:10
				 Игорь Столяров
				От SV интеграцию с COM тоже ждать не приходится, там более важные дела сейчас идут по перекраске шаблонов.
Короче, куда ни глянь - везде попа. И чем дальше - тем она больше. 

 
			 
			
					
				Дилемма с подключением драйвера
				Добавлено: 24 Октябрь 2018, 15:12
				 finsoftrz
				Игорь Столяров писал(а): 24 Октябрь 2018, 15:04finsoftrz писал(а): 24 Октябрь 2018, 14:40могут атоловцев прогнуть
 
Мне кажется АТОЛ - пофиг, чего им париться-то особо в стране победившей 1С ? 

Тут ещё нужно учитывать, что Microsoft тоже считает OLE рудиментом и грозит её прикрыть. Развивать - уж точно не будет.
 
На самом деле, кроме 1с есть куча разного другого софта. К примеру, в сетевом ритейле 1с, скажем так, не очень популярна. А в специализированных pos системах, как правило, несколько другой софт. К примеру, распространенная связка бэка на 1с и фронтола в отдельных магазинах и небольших сетях.