usb to lpt

sleep
nikol:

ТНК правильный совет даёт , я сам по началу столкнулся с этой проблемой (роверовский PCMCI>LPT), хотел сначало выкинуть , но в матче выставил адрес как было написано выше и всё заработало. На других прогах ещё не тестил.

На выходных попробую обязательно. Спасибочки!
Мне тут посоветовали, но чет я сомневаюсь…- зайти в винду в защищеном режиме и поменять адреса на 0378 - 037F и 0778 - 077B. Или изменить это в реестре.

nikol
sleep:

Мне тут посоветовали, но чет я сомневаюсь…- зайти в винду в защищеном режиме и поменять адреса на 0378 - 037F и 0778 - 077B. Или изменить это в реестре.

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

THK
sleep:

Спасибо, обнадежили!
А в других программах пробовали?
В спецификации на PCMCI>LPT (Роверовский) написано:
• Чип – Oxford
• 16 байт FIFO
• совместим с операционными системами MS Windows 98SE/ME/2000/XP; DOS (с версии 2, декабрь 2006г.)

Незачто!
Менять адреса, как советуют другие ораторы, безсмысленно и безполезно, да и скорее всего не получится.
Дело в том, что стандартные порты находятся в адресном пространстве портов ввода-вывода ISA, а у адаптеров PCI виртуальные адреса…
Программы в которых используются библьотеки для доступа к портам:
DLPortIO
InpOut32
LPTVampir
TVicLPT
работать с PCI -> LPT НЕ БУДУТ.
Спецификация на адаптор, в данном случае, не при делах.😃😃😃
И в реестр я лазить не советую.

toxa
THK:

Дело в том, что стандартные порты находятся в адресном пространстве портов ввода-вывода ISA, а у адаптеров PCI виртуальные адреса…

Если стандартные порты не заняты другими устройствами, то фокус может получиться. Но у этого pci-устройства должен быть нормальный драйвер, а это бывает не всегда.

THK
toxa:

Если стандартные порты не заняты другими устройствами, то фокус может получиться. Но у этого pci-устройства должен быть нормальный драйвер, а это бывает не всегда.

Очень сильно сомневаюсь…
С точки зрения асемблера для доступа к портам IO и к адресному пространству используются разные команды…
Вот такой OFF-топик!

По теме:
Кто-нибудь знает тип, марку, название и еще не знаю что, переходника USB->LPT или USB->COM на чипе FTDI (можно определить по драйверам).
В маче есть драйвера для битового доступа к чипам FTDI, есть идея использовать переходник как макет.
Паять с нуля лень! А поэксперементировать хочется.
И еще вопрос: Мачу есть разница каким чипом FTDI управлять? В доке на мач ничего по этому поводу не нашел.

Dominga
THK:

По теме:
Кто-нибудь знает тип, марку, название и еще не знаю что, переходника USB->LPT или USB->COM на чипе FTDI (можно определить по драйверам).
В маче есть драйвера для битового доступа к чипам FTDI, есть идея использовать переходник как макет.
Паять с нуля лень! А поэксперементировать хочется.
И еще вопрос: Мачу есть разница каким чипом FTDI управлять? В доке на мач ничего по этому поводу не нашел.

А ты в inf файле к драйверам посмотри. Не все их(FTDI) чипы поддерживают битовае моды.

по PID можно определить примерно, что за чип. Плюс на сайте FTDI есть программка для програмирования eeprom на этих чипах.
кроме всего в ней можно узнать симмейство чипа.

spike
THK:


Дело в том, что стандартные порты находятся в адресном пространстве портов ввода-вывода ISA, а у адаптеров PCI виртуальные адреса…
Программы в которых используются библьотеки для доступа к портам:
DLPortIO
InpOut32
LPTVampir
TVicLPT
работать с PCI -> LPT НЕ БУДУТ.

ИМХО слишком категорично, а вот эта например?

mura
spike:

ИМХО слишком категорично, а вот эта например?

да нет, работать то оно будет, но тока в ноут не влезет 😦

THK
spike:

ИМХО слишком категорично, а вот эта например?

Библиотеки (драйвера), которые я указал, легко работают со стандартными портами и не работают с PCI.
По ссылке:

  • Возможность использования стандартного адресного пространства для I/O в DOS и Win9x (например, 378, 278, … для LPT порта);
    Это для DOS и Win9x, а я имею в виду Win2k (надо было мне сразу написать, чтобы избежать путаници)

ЗЫ У меня NetMos PCI ECP Paralel Port 😃😃😃 как по Вашей ссылке 😃

spike
THK:

Библиотеки (драйвера), которые я указал, легко работают со стандартными портами и не работают с PCI.
По ссылке:

  • Возможность использования стандартного адресного пространства для I/O в DOS и Win9x (например, 378, 278, … для LPT порта);
    Это для DOS и Win9x, а я имею в виду Win2k (надо было мне сразу написать, чтобы избежать путаници)

ЗЫ У меня NetMos PCI ECP Paralel Port 😃😃😃 как по Вашей ссылке 😃

Нашел подтверждение Вашим словам:
Что не поддерживает InpOut32
А почему? в двух словах, если не затруднит 😃

Плохо!!! 😦
Оффтоп конечно, однако, как!? Вы наверное уже собаку съели 😃 , может подскажете есть ли библиотеки, которые работают с PCI-адаптерами под NT?
PCMCI - это “ноутбучный” аналог PCI?

toxa
THK:

Очень сильно сомневаюсь… С точки зрения асемблера для доступа к портам IO и к адресному пространству используются разные команды…

можете мне поверить. что в случае с pci-платой, что в случае с isa речь идет об адресах портов. в виндах все эти адреса портов виртуальные. драйвер перехватывает обращение к портам и дальше уже его дело, как этим распорядиться.

THK
spike:

Нашел подтверждение Вашим словам:
Что не поддерживает InpOut32
А почему? в двух словах, если не затруднит 😃

Плохо!!! 😦
Оффтоп конечно, однако, как!? Вы наверное уже собаку съели 😃 , может подскажете есть ли библиотеки, которые работают с PCI-адаптерами под NT?
PCMCI - это “ноутбучный” аналог PCI?

Было у меня несколько задач,где требовалась работа с лпт, сначала использовал DLPortIO, но когда потребовалась работа с PCI->LPT пришлось искать новый драйвер для прямого доступа к железу…
Нашел TVicHW32 платная, но очень крутая штука! Позволяет обращатся по любым адресам и обрабатывать аппаратные прерывания.
Мач умеет обращаться к PCI->LPT, так-что не заморачивайтесь…

2 toxa
В том-то и фокус, что задача стоит не байт передать, а ногой порта дернуть! И о использовании стандартного драйвера не может быть и речи. Надо писать по “железным” адресам, в обход всех буферов, непосредственно в порт.

ЗЫ Если есть вопросы по офтопику, пишите в личку или лучше завести отдельную тему…

Dominga
THK:

В том-то и фокус, что задача стоит не байт передать, а ногой порта дернуть! И о использовании стандартного драйвера не может быть и речи. Надо писать по “железным” адресам, в обход всех буферов, непосредственно в порт.

Открою страшную тайну, ни один порт в PC не имеет битового доступа. Запись и чтение идет байтами (или 16- или 32 битными словами) 😃
Т.е. принципиально нет разницы куда слать байт 😉

Разница есть в самой программе, какой механизм доступа она использует.

можете мне поверить. что в случае с pci-платой, что в случае с isa речь идет об адресах портов. в виндах все эти адреса портов виртуальные. драйвер перехватывает обращение к портам и дальше уже его дело, как этим распорядиться.

Это опять же неправильно. Все адреса портов реальны, но надо понимать, что в x86 архитектуре существуют IO адреса и Memory адреса.
ДОступ к ним осуществляется разными механизмами. Где и какой адрес используется зависит от конкретной реализации контроллера и т.п.

toxa

знатоки собрались системного программирования. когда вы в программе на ассемблере пишете “out dx,al” и при этом это пользовательская программа в виндах, то это “прямое” обращение может перехватываться соответствующим драйвером виртуального устройства. при этом перехватываться могут одни порты, а вывод осуществляться вообще через другие механизмы, пример - “прямой” доступ к виртуальному com-порту из vdm.

Dominga:

Все адреса портов реальны, но надо понимать, что в x86 архитектуре существуют IO адреса и Memory адреса.

надо так же понимать, что есть железо с его реальными портами и адресами, и есть windows с его hal. когда мы говорим о программах под управлением windows, то им ичего неизвестно о том, с реальным устройством они общаются или нет, тем более, прямого доступа к аппаратным средствам у них либо нет совсем, либо доступ крайне ограничен.

THK
Dominga:

Открою страшную тайну, ни один порт в PC не имеет битового доступа. Запись и чтение идет байтами (или 16- или 32 битными словами) 😃
Т.е. принципиально нет разницы куда слать байт 😉

Согласен, но можно записать байт, изменить бит в байте и повторить запись.

toxa;763290

знатоки собрались системного программирования. когда вы в программе на ассемблере пишете “out dx,al” и при этом это пользовательская программа в виндах, то это “прямое” обращение может перехватываться соответствующим драйвером виртуального устройства. при этом перехватываться могут одни порты, а вывод осуществляться вообще через другие механизмы, пример - “прямой” доступ к виртуальному com-порту из vdm.

Себя к таковым не причисляю и пользуюсь чужими наработками типа DLPortIO, TvicHW32. Это драйвера виртуального устройства, которые работают на уровне ядра, а там можно практически все, а в пользовательских программах все происходит так как описали Вы.
В подтверждение слов: после установки мача в диспечере устройств появляется Mach1 Pulseing Engine - это и есть примочка, которой пользуется мач для прямого ногодрыгства 😃😃😃
С ком-портом все намного проще. Можно обойтись виндузовыми драйверами.

toxa
THK:

В подтверждение слов: после установки мача в диспечере устройств появляется Mach1 Pulseing Engine - это и есть примочка, которой пользуется мач для прямого ногодрыгства 😃😃😃

Это немного не то. Это устройство предназначено, прежде всего, для генерации импульсов с четко заданными временными характеристиками, насколько это вообще возможно в виндах. Это для тех, кто уже научился “дрыгать ногами”, но пока еще не добился приемлемой плавности перемещения, разгона и торможения.

Dominga

С ком-портом все намного проще. Можно обойтись виндузовыми драйверами.

Там тоже не все радостно, ногами дрыгать можно, но не быстро. С каждой новой операционкой скорость падает.
Причем использование TvicHW32 толком ускорят не дает.
Но это все оффтопик.
А по существу получается, что если программа не умеет работать со сторонними приблудами типа TvicHW32, или какими либо конвертерами USB/Ethernet->LPT то тут ничего не сделаешь.
Вроде где-то пробегало, что Mach знает про MODBUS. Протокол довольно простой. На мой взгляд самый правильный вариант это собрать контроллер движков с поддержкой MODBUS или MODBUS\TCP.

Andrey12
Dominga:

А по существу получается, что если программа не умеет работать со сторонними приблудами типа TvicHW32, или какими либо конвертерами USB/Ethernet->LPT то тут ничего не сделаешь.
Вроде где-то пробегало, что Mach знает про MODBUS. Протокол довольно простой. На мой взгляд самый правильный вариант это собрать контроллер движков с поддержкой MODBUS или MODBUS\TCP.

Все что ниже - ИМХО.

Для того что бы понять что можно, а что нельзя, надо прочесть SDK. Можно даже написать свой драйвер 😃
Я могу ошибаться, но “стандартный” драйвер имеет три подпрограммы опроса/ввода-вывода : дергание портов (до 75 кГц причем он просто расчитывает когда где какие пины изменять - это не частота импульсов на выходе порта), вторая 10 раз в секунду и третья 40 раз в секунду, эти две последние для обратной связи (опрос входов). Поэтому после аварии мач не знает точно на каком шаге произошла остановка.
Да поддержка MODBUS есть, но она на так называемом 1 (а не 0 порту) и поэтому не может быть использована для Pulse Engine.
Только для медленного вывода или опроса (polling) - 20 раз в секунду.

Подробности имеет смысл искать на странице www.machsupport.com/artsoft/plugin.htm
Есть например SmoothStepper, который все это уже делает.

SIvan
THK:

Было у меня несколько задач,где требовалась работа с лпт, сначала использовал DLPortIO, но когда потребовалась работа с PCI->LPT пришлось искать новый драйвер для прямого доступа к железу…

Если пишете на Delphi, попробуйте это. На PCI-LPT нет возможности попробвать - нет его просто. Но по крайней мере до PCI модема пускает.

sanych68

www.usbcnc.com может быть кому пригодится.

THK

Случайно натолкнулся:
kpv.nnov.ru/texas.html
files.kpv.nnov.ru/sm510pci_r0.zip
Смотрел по диагонали. Вроде реализован LPT порт на шине PCI с возможностью установки стандартных адресов. Вообще замута интересная…
Буду рад, если кто-нибудь сможет использовать это для управления станком!

ЗЫ По предыдущим постам: Все мы были в чем-то правы и не правы…