Jump to content
    

Ну я замену 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%

Share this post


Link to post
Share on other sites

И на InpOut гляну, может лучше просто её поддержать да и всё.
Или не вижу, или спать пора...

Кажется, тут нет уж собранного драйвера под x64

В binaries only есть инсталлятор драйвера только в папке для win32. С драйвером из этой папки и переименованной в dlportio dll-кой оттуда под XP/32 проверено, работает.

 

Хотя чего морочить себе голову - с Вашей сборкой под win64 работает ведь :-)

Т.е. можно просто разместить её уменя на страничке, дать линки на эту тему, на указанный сайт и успокоиться.

Что-то будет меняться - тогда и что-то делать.

 

Но самым правильным в эту минуту будет таки лечь спать

 

p.s. раз уж зашёл разговор - опрос общественного мнения (нет, не про выборы :-) )

Вот к примеру делаю я под win поддержку работы не тольrо через dlportio.

Эта inpout в оригинльной форме имеет всего лишь другие имена функций, но это тоже нужно как-то указать.

giveio требует несколько другого подхода.

Как лучше указать в ключах способ доступа?

Пусть адрес E800

-pE800 - без указанного метода - dlportio

с методом лучше так

[email protected]
[email protected]

или так ;)

-p/giveio/E800
-p/inpout/E800

Share this post


Link to post
Share on other sites

p.s. раз уж зашёл разговор - опрос общественного мнения (нет, не про выборы :-) )

Вот к примеру делаю я под win поддержку работы не тольrо через dlportio.

Эта inpout в оригинльной форме имеет всего лишь другие имена функций, но это тоже нужно как-то указать.

giveio требует несколько другого подхода.

Как лучше указать в ключах способ доступа?

Давно назрела необходимость отделить мух от котлет.

В avreal в одну кучу свалены настройки программатора и параметры прошивки (файл с прошивкой, фузы).

Логично в .bat/Makefile указывать ТОЛЬКО параметры а настройки программатора хранить отдельно в конфигурационном файле.

т.е. Если на ноутбуке есть только программатор FT2232 а на ББ программатор LPT, то надо при прошивке одного и того же проекта на ноуте и ББ лезть в .bat/Makefile. Логичнее на ноуте использовать один файл настроек программатора а на ББ другой. А в командной строке задавать только Фузы, Файл прошивки, чип.

 

Как это может выглядеть: avreal при старте читает дефолтный конфиг (или иначе конфиг дефолтов) в котором может быть заданы (а могут быть и не заданы) некоторые параметры. Потом читает параметры из командной строки, и если есть пересекающиеся атрибуты, то ругается и/или использует то, что задано в командной строке.

Share this post


Link to post
Share on other sites

Как это может выглядеть: 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 - это линк на реальную версию, выбранную в данный момент для работы.

Share this post


Link to post
Share on other sites

Или не вижу, или спать пора...

Кажется, тут нет уж собранного драйвера под 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 должны быть.

Ну или действительно оставить как есть раз уж работает :)

Share this post


Link to post
Share on other sites

так что для пущей совместимости, наверное, лучше использовать функции Inp32 и Out32. они во всех версиях библиотек для inpout32 должны быть.
Так вот и я об этом думаю - тогда с любой заработает.

 

Ну или действительно оставить как есть раз уж работает :)
Я малость приболел, а работа не ждёт, поэтому вернусь к этому вопросу немного позже.

Share this post


Link to post
Share on other sites

Всем доброго времени суток!

Вроде я тут уже регистрировался но не помню данных....

 

Этих "драйверов" развелось как собак...

Такое впечатление, что каждый автор или любит изобратать велосипед или желает поупражняться в драйверописании - этакий "Hello World" в DDK :wacko:

 

И что самое скверное, что разный софт использует разные драйверы !

И для каждого предлагается установить "драйвер"

Достало :twak: :maniac:

 

В такой ситуации IMHO делать в приложениях поддержку всех существующих драйверов не разумно.

Гораздо логичнее было бы вынести всё это нафиг в отдельную DLL.

 

Тоесть DLL сама занимается поиском имеющегося драйвера и работой с ним в соответствии с принятым для конкретно него протоколом.

А приложение умеет работать ТОЛЬКО с этой DLL.

В саму DLL можно насовать сколько угодно функций для работы с разными уже имеющимися приложениями без их переделки.

Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".

 

Как вариант - предлагаю odvport.dll

Исходнит прилагается (GPL)

odvport.zip

Edited by ptbnfns

Share this post


Link to post
Share on other sites

Как вариант - предлагаю odvport.dll

Исходнит прилагается (GPL)

Проблемы в основном не с драйвером, а со способом его инсталляции. DLPORTIO тоже был не плох, но поди установи его! Хитрющий install.exe на большем числе компьютеров не работает. А p95nt на новых опереционках тоже перестает работать. Короче говоря, не код драйвера плох, а слишком стали привередливы требования к инсталляции драйверов. Та же проблема часто встречается при инсталляции драйверов под USB.

А ваш драйвер в этом смысле совершенно не годится, т.к. никаких средств для его инсталляции не предусмотрено.

Share this post


Link to post
Share on other sites

Да забыл сказать:

у меня уже сейчас есть поддержка работы через:

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 by ptbnfns

Share this post


Link to post
Share on other sites

б)добавив раздел в реестр. пример для 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-файл в свой архив! А то ведь забудется место на форуме, где вы это написали.

Share this post


Link to post
Share on other sites

Достало :twak: :maniac:
"Так отож!"

 

Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".

Как вариант - предлагаю odvport.dll

Исходнит прилагается (GPL)

Насколько я понял комментарий у меня на сайте и тутошнее - достаточно переименовать её в dlportio.dll, поставить любой из перечисленных драйверов и avreal должен заработать, не заметив подмены.

 

Альтеровский драйвер, насколько я помню, позволяет пакетировать запросы, что несколько поднимет скорость, но

- вроде бы и так не слишком медленно

- LPT таки уходит и "тонкие оптимизации" как-то ни к чему. Всё равно по скорости проиграет FT2232 :-)

 

Поэтому Ваша DLL - это отличное универсальное решение.

 

Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".
Ну ради такого инструмента не грех и добавить загрузку библиотеки с её "родным" именем.

 

Присоединяюсь к Ксении - было бы удобно иметь reg-файлы для каждого поддерживаемого драйвера.

Share this post


Link to post
Share on other sites

:copy dlportio.dll %SystemRoot%\system32
copy dlportio.sys %SystemRoot%\system32\drivers
regedit.exe dlportio_reg.reg

А почему первая строка закомментарена? Разве dlportio.dll не нужна?

Share this post


Link to post
Share on other sites

Насколько я понял комментарий у меня на сайте и тутошнее - достаточно переименовать её в dlportio.dll, поставить любой из перечисленных драйверов и avreal должен заработать, не заметив подмены.

Так точно!

 

Альтеровский драйвер, насколько я помню, позволяет пакетировать запросы, что несколько поднимет скорость, но

- вроде бы и так не слишком медленно

- LPT таки уходит и "тонкие оптимизации" как-то ни к чему. Всё равно по скорости проиграет FT2232 :-)

Да позволяет, но у меня это не реализовано т.к. все эти заморочки с сбором обращений в пакет череваты багами, а тестировать такие вещи долго и муторно, короче лень заморачиваться.

Но для совместимости я разворачиваю пакетные обращения в циклы.

 

Присоединяюсь к Ксении - было бы удобно иметь reg-файлы для каждого поддерживаемого драйвера.

В архиве из поста №222 они есть.

 

А почему первая строка закомментарена? Разве dlportio.dll не нужна?

Эта строка там только для напоминания. Реально он у меня всегда лежал в той же папке, где avreal ибо больше никто не пользуется.

Повторюсь - для моей DLL нужен только драйвер. (тот - который *.sys)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...