ReAl 0 February 7, 2010 Posted February 7, 2010 · Report post Ну я замену DlPortWritePortBufferUchar при её отсутствии на цикл с DlPortWritePortUchar всё же сделал. Мало ли что и как будет развиваться в InpOut32.dll, лучше пусть исходная версия тоже работает. Пока выложена тестовая версия. И на InpOut гляну, может лучше просто её поддержать да и всё. Я собираюсь поставить дома для проверок Win7/64 (т.е. работою как-то до сих пор в XP/32, но нераспределённое место на диске есть, доставлю туда). Заодно mingw-w64 попробую, может тогда avreal64 просто появится :-) Да, avreal из dlportio.dll импортирует только DlPortWritePortUchar, DlPortReadPortUchar, DlPortWritePortBufferUchar, так что косяки с long/short действительно не должны влиять. На "родной" dlportio работа через замену DlPortWritePortBufferUchar на цикл с DlPortReadPortUchar садит на моих компьютере и LPT скорость считывания AVR где-то на 5-6% Quote Share this post Link to post Share on other sites More sharing options...
ReAl 0 February 8, 2010 Posted February 8, 2010 · Report post И на InpOut гляну, может лучше просто её поддержать да и всё.Или не вижу, или спать пора... Кажется, тут нет уж собранного драйвера под x64 В binaries only есть инсталлятор драйвера только в папке для win32. С драйвером из этой папки и переименованной в dlportio dll-кой оттуда под XP/32 проверено, работает. Хотя чего морочить себе голову - с Вашей сборкой под win64 работает ведь :-) Т.е. можно просто разместить её уменя на страничке, дать линки на эту тему, на указанный сайт и успокоиться. Что-то будет меняться - тогда и что-то делать. Но самым правильным в эту минуту будет таки лечь спать p.s. раз уж зашёл разговор - опрос общественного мнения (нет, не про выборы :-) ) Вот к примеру делаю я под win поддержку работы не тольrо через dlportio. Эта inpout в оригинльной форме имеет всего лишь другие имена функций, но это тоже нужно как-то указать. giveio требует несколько другого подхода. Как лучше указать в ключах способ доступа? Пусть адрес E800 -pE800 - без указанного метода - dlportio с методом лучше так -pE800@giveio -pE800@inpout или так ;) -p/giveio/E800 -p/inpout/E800 Quote Share this post Link to post Share on other sites More sharing options...
Petka 0 February 8, 2010 Posted February 8, 2010 · Report post p.s. раз уж зашёл разговор - опрос общественного мнения (нет, не про выборы :-) ) Вот к примеру делаю я под win поддержку работы не тольrо через dlportio. Эта inpout в оригинльной форме имеет всего лишь другие имена функций, но это тоже нужно как-то указать. giveio требует несколько другого подхода. Как лучше указать в ключах способ доступа? Давно назрела необходимость отделить мух от котлет. В avreal в одну кучу свалены настройки программатора и параметры прошивки (файл с прошивкой, фузы). Логично в .bat/Makefile указывать ТОЛЬКО параметры а настройки программатора хранить отдельно в конфигурационном файле. т.е. Если на ноутбуке есть только программатор FT2232 а на ББ программатор LPT, то надо при прошивке одного и того же проекта на ноуте и ББ лезть в .bat/Makefile. Логичнее на ноуте использовать один файл настроек программатора а на ББ другой. А в командной строке задавать только Фузы, Файл прошивки, чип. Как это может выглядеть: avreal при старте читает дефолтный конфиг (или иначе конфиг дефолтов) в котором может быть заданы (а могут быть и не заданы) некоторые параметры. Потом читает параметры из командной строки, и если есть пересекающиеся атрибуты, то ругается и/или использует то, что задано в командной строке. Quote Share this post Link to post Share on other sites More sharing options...
ReAl 0 February 8, 2010 Posted February 8, 2010 · Report post Как это может выглядеть: avreal при старте читает дефолтный конфиг (или иначе конфиг дефолтов) в котором может быть заданы (а могут быть и не заданы) некоторые параметры. Потом читает параметры из командной строки, и если есть пересекающиеся атрибуты, то ругается и/или использует то, что задано в командной строке.Это давно в очереди, но далеко не первоочередное у меня лично, уж извините. У меня в переменных окружения дома d:\>set | grep AVREAL AVREAL_ADAPTER=ft2232:enable=~adbus4,~acbus2:reset=acbus1 AVREAL_PORT=d=DENIS_FT2232D A (в работе платка, подаренная мне человеком по имени Денис и когда я отлаживал єти ключи я не долго думал, что прописать в EEPROM ;-) ) На работе что-то в духе AVREAL_ADAPTER=b AVREAL_PORT=/dev/parport0 и в makefile ifndef AVREAL_PORT AVREAL_PORT := 1 endif ifndef AVREAL_ADAPTER AVREAL_ADAPTER = b endif AVREAL := avreal "-a$(AVREAL_ADAPTER)" "-p$(AVREAL_PORT)" +$(MCU) Где я сейчас - просто не думаю :-) И на работе, и дома avreal - это линк на реальную версию, выбранную в данный момент для работы. Quote Share this post Link to post Share on other sites More sharing options...
_pv 100 February 8, 2010 Posted February 8, 2010 · Report post Или не вижу, или спать пора... Кажется, тут нет уж собранного драйвера под x64 В binaries only есть инсталлятор драйвера только в папке для win32. С драйвером из этой папки и переименованной в dlportio dll-кой оттуда под XP/32 проверено, работает. ээ, похоже что на самом деле там его нет. изначально dlportio64 брал с понипроговского форума, ссылка выше. а потом не обнаружив там нужных функций добавлял их в inpout который взял отсюда: http://logix4u.net/Legacy_Ports/Parallel_P..._XP_64_bit.html там есть драйвер. драйвера ставил родным инсталлятором от dlportio, переименовав файлы. а, то что тут хоть и более новая версия вроде и содержит уже функции Dlportiowrite для записи только отдельных символов, но её собрать не удалось. так что для пущей совместимости, наверное, лучше использовать функции Inp32 и Out32. они во всех версиях библиотек для inpout32 должны быть. Ну или действительно оставить как есть раз уж работает :) Quote Share this post Link to post Share on other sites More sharing options...
ReAl 0 February 9, 2010 Posted February 9, 2010 · Report post так что для пущей совместимости, наверное, лучше использовать функции Inp32 и Out32. они во всех версиях библиотек для inpout32 должны быть.Так вот и я об этом думаю - тогда с любой заработает. Ну или действительно оставить как есть раз уж работает :)Я малость приболел, а работа не ждёт, поэтому вернусь к этому вопросу немного позже. Quote Share this post Link to post Share on other sites More sharing options...
ptbnfns 0 February 14, 2010 Posted February 14, 2010 (edited) · Report post Всем доброго времени суток! Вроде я тут уже регистрировался но не помню данных.... Этих "драйверов" развелось как собак... Такое впечатление, что каждый автор или любит изобратать велосипед или желает поупражняться в драйверописании - этакий "Hello World" в DDK И что самое скверное, что разный софт использует разные драйверы ! И для каждого предлагается установить "драйвер" Достало :twak: :maniac: В такой ситуации IMHO делать в приложениях поддержку всех существующих драйверов не разумно. Гораздо логичнее было бы вынести всё это нафиг в отдельную DLL. Тоесть DLL сама занимается поиском имеющегося драйвера и работой с ним в соответствии с принятым для конкретно него протоколом. А приложение умеет работать ТОЛЬКО с этой DLL. В саму DLL можно насовать сколько угодно функций для работы с разными уже имеющимися приложениями без их переделки. Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает". Как вариант - предлагаю odvport.dll Исходнит прилагается (GPL) odvport.zip Edited February 14, 2010 by ptbnfns Quote Share this post Link to post Share on other sites More sharing options...
Xenia 46 February 14, 2010 Posted February 14, 2010 · Report post Как вариант - предлагаю odvport.dll Исходнит прилагается (GPL) Проблемы в основном не с драйвером, а со способом его инсталляции. DLPORTIO тоже был не плох, но поди установи его! Хитрющий install.exe на большем числе компьютеров не работает. А p95nt на новых опереционках тоже перестает работать. Короче говоря, не код драйвера плох, а слишком стали привередливы требования к инсталляции драйверов. Та же проблема часто встречается при инсталляции драйверов под USB. А ваш драйвер в этом смысле совершенно не годится, т.к. никаких средств для его инсталляции не предусмотрено. Quote Share this post Link to post Share on other sites More sharing options...
ptbnfns 0 February 14, 2010 Posted February 14, 2010 (edited) · Report post Да забыл сказать: у меня уже сейчас есть поддержка работы через: giveio.sys dlportio.sys mcdbio.sys porttalk.sys altlpt1 aka Pgdhdlc.sys - драйвер ByteBlaster из MaxPlus и самое вкусное - вообще без драйвера через недокументированные функции из ntdll.dll если кто знает ещё - говорите - добавлю! в ближайшее время по капаю inpout32 и winring0 (просто я прежде о них не слышал - говорю же "как собак...") по поводу установки - на самом деле там всё очень просто (для XP по крайней мере) поражает желание авторов этих драйверов делать всё запутанным и сложным (видимо для сбережения "великого тайного знания о доступе к портам" LOL !!! ) так вот - никакие "установщики" нафиг не нужны! для установки нужно следующее 1)быть "администратором" 2)скопировать файл_драйвера.sys в c:\windows\system32\drivers 3)зарегистрировать драйвер - т.е. добавить службу ядра - это можно сделать двумя способами а)через API service control manager б)добавив раздел в реестр. пример для giveio - делаем файл install.reg REGEDIT4 [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio] "Type"=dword:00000001 "Start"=dword:00000003 "ErrorControl"=dword:00000001 "Group"="Extended Base" и тыкаем в него мышкой оно - спросит добавить? мы - ага ! перезагружаемся - готово обратите внимание на параметр "Start"=dword:00000003 может быть 2 или 3 2-запуск драйвера при старте системы 3-запуск "по требованию" к сожалению не все умеют "потребовать" в частности dlportio.dll - не умеет. так, что для него - только "2" odvport умеет правильно "требовать" так, что с ним драйвер займёт память только при первом обращении. Edited February 14, 2010 by ptbnfns Quote Share this post Link to post Share on other sites More sharing options...
ptbnfns 0 February 14, 2010 Posted February 14, 2010 · Report post Добавил поддержку hwinterface.sys - это драйвер от inpout32 odvport.zip Quote Share this post Link to post Share on other sites More sharing options...
Xenia 46 February 14, 2010 Posted February 14, 2010 · Report post б)добавив раздел в реестр. пример для giveio - делаем файл install.reg REGEDIT4 [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio] "Type"=dword:00000001 "Start"=dword:00000003 "ErrorControl"=dword:00000001 "Group"="Extended Base" и тыкаем в него мышкой оно - спросит добавить? мы - ага ! перезагружаемся - готово обратите внимание на параметр "Start"=dword:00000003 может быть 2 или 3 2-запуск драйвера при старте системы 3-запуск "по требованию" к сожалению не все умеют "потребовать" в частности dlportio.dll - не умеет. так, что для него - только "2" odvport умеет правильно "требовать" так, что с ним драйвер займёт память только при первом обращении. Ну так и добавьте такой reg-файл в свой архив! А то ведь забудется место на форуме, где вы это написали. Quote Share this post Link to post Share on other sites More sharing options...
ptbnfns 0 February 14, 2010 Posted February 14, 2010 · Report post Добавил работу через драйвер WinRing0.sys + куча драйверов в архиве вместе с библиотекой odvport.zip Quote Share this post Link to post Share on other sites More sharing options...
ReAl 0 February 14, 2010 Posted February 14, 2010 · Report post Достало :twak: :maniac:"Так отож!" Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает". Как вариант - предлагаю odvport.dll Исходнит прилагается (GPL) Насколько я понял комментарий у меня на сайте и тутошнее - достаточно переименовать её в dlportio.dll, поставить любой из перечисленных драйверов и avreal должен заработать, не заметив подмены. Альтеровский драйвер, насколько я помню, позволяет пакетировать запросы, что несколько поднимет скорость, но - вроде бы и так не слишком медленно - LPT таки уходит и "тонкие оптимизации" как-то ни к чему. Всё равно по скорости проиграет FT2232 :-) Поэтому Ваша DLL - это отличное универсальное решение. Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".Ну ради такого инструмента не грех и добавить загрузку библиотеки с её "родным" именем. Присоединяюсь к Ксении - было бы удобно иметь reg-файлы для каждого поддерживаемого драйвера. Quote Share this post Link to post Share on other sites More sharing options...
Xenia 46 February 14, 2010 Posted February 14, 2010 · Report post :copy dlportio.dll %SystemRoot%\system32 copy dlportio.sys %SystemRoot%\system32\drivers regedit.exe dlportio_reg.reg А почему первая строка закомментарена? Разве dlportio.dll не нужна? Quote Share this post Link to post Share on other sites More sharing options...
ptbnfns 0 February 17, 2010 Posted February 17, 2010 · Report post Насколько я понял комментарий у меня на сайте и тутошнее - достаточно переименовать её в dlportio.dll, поставить любой из перечисленных драйверов и avreal должен заработать, не заметив подмены. Так точно! Альтеровский драйвер, насколько я помню, позволяет пакетировать запросы, что несколько поднимет скорость, но - вроде бы и так не слишком медленно - LPT таки уходит и "тонкие оптимизации" как-то ни к чему. Всё равно по скорости проиграет FT2232 :-) Да позволяет, но у меня это не реализовано т.к. все эти заморочки с сбором обращений в пакет череваты багами, а тестировать такие вещи долго и муторно, короче лень заморачиваться. Но для совместимости я разворачиваю пакетные обращения в циклы. Присоединяюсь к Ксении - было бы удобно иметь reg-файлы для каждого поддерживаемого драйвера. В архиве из поста №222 они есть. А почему первая строка закомментарена? Разве dlportio.dll не нужна? Эта строка там только для напоминания. Реально он у меня всегда лежал в той же папке, где avreal ибо больше никто не пользуется. Повторюсь - для моей DLL нужен только драйвер. (тот - который *.sys) Quote Share this post Link to post Share on other sites More sharing options...