Форум: "Система";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизРабота с LPT портом. Найти похожие ветки
← →
VEG (2002-07-20 19:15) [0]Мне требуеться программно узнать, имееться ли напряжение в данный момент на определенном штырьке (напряжение от моего устройства). Я еще не определился с его номером, но точно могу сказать, что его номер не может быть равен 2,3,4,5,9,11,15,18,19,20,21,22,23,24,25. Скорее всего будет использован один из штырьков: 10,12.13.
← →
Методист-технолог (2002-07-20 19:29) [1]Вольтметр вам нужен, батенька! И перчатки диэлектрические.
← →
VEG (2002-07-20 21:21) [2]>Методист-технолог
Мда...:-) ПРОГРАММНО!
← →
Методист-технолог (2002-07-21 00:38) [3]Вольтметр надобно взять не стрелочный а с автовыбором предела по программе!
← →
VolvoUser (2002-07-21 04:49) [4]А прочитать порт 0x378 не судьба? ТОлько сначала в SPP Control Port установи бит чтения из порта.
← →
VEG (2002-07-21 12:51) [5]>Методист-технолог
:-)
>VolvoUser
Так вот как это сделать меня и интересует. Работа с портами сводиться к встроенному ассемблеру, в котором я еще ничего не понимаю.
← →
Anatoly Podgoretsky (2002-07-21 13:10) [6]Работа с портами сводится только к двум фкнциям на ассемблере, коих опубликована туча, включая и этот сайт, не затруднись посмотреть в FAQ
← →
МИФИст (2002-07-21 15:19) [7]Хотел бы я посмотреть на эту ассемблерную вставку, которая будет идти под [D6, Win95/98, WinME, NT4, Win2k, WinXP ], я думаю за это можно даже денег дать =)
← →
Слесарь-технолог (2002-07-21 16:55) [8]Правильно, голым asm-ом не полутчится.
Пишитте драйверокк :)
← →
saten (2002-07-22 09:54) [9]есть масса готовых компанентов, для прямого доступа к LPT.
Делфа, Билдер, С++, даже для VB...
----------------------------------------------------------
TDLPortIO - http://diskdude.cjb.net/
SmallPort - где лежит непомню у меня есть
ZLPortIO - http://www.specosoft.com
TVicPort, TVicHW32 - http://www.entechatiwan.com/tools.htm
Instrument Interface VCL Delphi Component - www.instrument-science.com (правда, только для определенной аппаратуры)
----------------------------------------------------------
← →
VEG (2002-07-22 12:12) [10]>Anatoly Podgoretsky
Я в ассемблере ничего не понимаю, поэтому и этих двух функций не знаю.
На этом сайте в FAQ нет ни одного раздела, посвященного системе. Этим поиск затруднителен. Скорее всего здесь нет такой темы вообще.
Недавно в форуме нашел ветвь, частично связянную с этой темой. Там разговор шел об функции:
function PortReadByte(Addr:Word) : Byte; assembler; register;
asm
MOV DX,AX
IN AL,DX
end;
Этот код мне мало чего говорит. Так же еще у меня есть функция:
Function FromPort(adr:Word):Word;
var
Rez:Word;
begin
asm
mov dx,adr
in ax, dx
mov rez,ax
end;
fromport:=lo(Rez);
end;
Я примерно знаю, что делает эта функция, но не понимаю, как она работает. Да еще эта функция не работает в системах семейства NT, для которых и делаеться моя программа.
В этих двух функциях я вижу те две ассемблерные функции, об которых ты мне говорил. Это mov и in. Я не знаю значения этих ассемблерных функций.
Если можешь, то, пожалуйста, разъясни мне, что к чему, или дай ссылку по этой теме.
>Слесарь-технолог
Мне нужно все это реализовать программно в моей программе.
>saten
Сейчас я погляжу, что это за компоненты. У меня есть один компонент для работы с портами, но он без исходного кода, для третьей Delphi. Да с этим компонентом еще три файла таскать нужно (*.sys, *.dll,*.vxd).
>All
Так же меня интересует, как можно реализовать эту проблему в DOS-е, т.е. в PASCAL-е.
Огромное спасибо всем тем, кто не игнорирует эту ветвь!!! Огромное спасибо всем тем, кто помогает мне!!!
-<>-<>-<<<Фраза>>>-<>-<>-
Зверь, самый лютый, жалости не чужд.
Я чужд. Значит я не зверь.
← →
VEG (2002-07-22 12:33) [11]>All
Понравился компонент ZLPortIO. Сейчас буду в нем разбираться. Если будут проблемы, то я напишу, а сейча всем огромное спасибо!
-<>-<>-<<<Фраза>>>-<>-<>-
Зверь, самый лютый, жалости не чужд.
Я чужд. Значит я не зверь.
← →
Слесарь-технолог (2002-07-22 13:50) [12]VEG, если всё в одной твоей программе, то она будет работать ТОЛЬКО под Windows 9X.
Если нужно под W2K и иже с ним, без драйвера НЕ ОБОЙТИСЬ.
Впрочем, это не так сложно, как многие думают...
← →
DC-AC (2002-07-22 14:55) [13]Готовый драйвер (dll,vxd,sys) можно автоматически засунуть в System/System32 любым интсаллятором, хотя бы тем же InnoSetup ( http://www.jrsoftware.org , http://www.jordanr.cjb.net).
← →
December24 (2002-07-22 21:04) [14]Под ДОСом всё ещё проще.
mov - пересылка данных из одного места в другое.
mov dx,378H пересылает код порта в место, где он должен лежать
in - ввод значения из порта
in al,dx принимает информацию о состоянии порта.
out - выводит значение в порт.
out dx,al выводит данные al в порт.
Кстати, логические и физические уровни там часто не совпадают.
Таким образом под ДОС можешь использовать проц-ру, о которой уже писали:
Function FromPort(adr:Word):Word;
var
Rez:Word;
begin
asm
mov dx,adr
in ax, dx
mov rez,ax
end;
fromport:=lo(Rez);
end;
← →
Vorobyev S (2002-07-23 07:42) [15]Посмотри
http://www.kuban.ru/forum_new/forum2/files/7170.html
← →
pasha676 (2002-07-23 13:41) [16]December24 - да и под Виндами в Дельфи все также. Пишешь вставку на асме. Ассемблер он и в Африке ассемблер. Конечно могут возникнуть траблы под NT и Co, но могут и не возникнуть. Это надо пробывать.
Veg - тебе надо почитать две вещи. Первое - основы ассемблера для ПС и работа ЛПТ порта. Особенно с точки зрения программера. Какие регистры по какому адресу и т.д.
← →
dr.keshman (2002-07-24 18:08) [17]Раньше люди читали руководства по работе с периферией,
с примерами на asm и С, там всё было написано и про порты,
и про регистры, и про девайс драйверы (это для ДОС)...
а теперь некоторым лень читать наверно.
Ну правильно! Для этого есть WinAPI и системные драйверы, только механизм работы подобных устройств все равно нужно знать. Он не в ОС определяется, а в стандарте PC.
← →
Altano (2002-07-24 22:14) [18]Проще всего на Pascal под ДОС оспользовать встроенный массив PORT[$xxxx] для чтения/записи побайтно или PORTW[$xxxx] по словам (загляни в хелп)
← →
Неотеничный педоморф (2002-07-24 23:07) [19]Ох!
← →
VEG (2002-07-27 11:35) [20]Вы, наверное меня не так поняли! Я не знаю принципа работы LPT порта! Вот скачал компонент ZLPortIO ( http://www.specosoft.com ). Поработав с демкой я сообразил то, что вся информация в LPT храниться в виде одного, двух или трех байтов. Но если так, то как мне можно работать с этим портом?
Задача немного изменилась. Мне требуеться в нужный мне момент "включить" мое устройство, подав +5V постоянного тока на штырек №9 (Data 7 - Выход) LPT порта. Далее нужно, чтобы моя программа "подождала" ответ от моего устройства в виде сигнала тех самых +5V постоянного тока на штырек №12 (Paper Out - Вход). Далее пограмма выполняет различные операции, и по их завершению требуеться убрать эти 5V со штырька №9 (Data 7 - Выход), тем самым выключив устройство.
Подскажите, пожалуйста, как это реализовать при помощи компонента ZLPortIO ( http://www.specosoft.com ).
>December24
Спасибо за подробности, но я к сожалению не знаю принципа работы самого порта...
>dr.keshman >pasha676
В интернете я подобной информации не видел (хотя, скорее свего таковая где-то имееться).
>Altano
Как работает этот механизм? У меня TP 7 без HELP-а.
>Неотеничный педоморф
Ах!!!
-<>-<>-<<<Фраза>>>-<>-<>-
Зверь, самый лютый, жалости не чужд.
Я чужд. Значит я не зверь.
← →
int64 (2002-07-27 12:21) [21]VEG © (27.07.02 11:35)
Посмотри TDLPortIO.
Туда входит компонент TDLPrinterPortIO.
У него есть свойство Pin. Вот подробнее:
// Index valid is in the range 1-25 only (other values return false)
// Reading the pin returns true when it is 5V, or false when it at 0V.
// Writing true sets the pin to 5V, or 0V when false.
property Pin[Index : TPinNumber] : Boolean read GetPin write SetPin;
Замечание1. Чтобы отозваться на приём данных (когда зажётся штырёк), твоя прога должна в отдельном потоке постоянно считывать этот штырёк, т.к. компонент не реализует прерывания. И не забывай в цикле считывания ставить Sleep(0).
Замечание2. Если посмотришь на устройство свойства Pin, то поймёшь, что реализовать всё можно было и с ZLPortIO. Просто надо было переваривать принятый байт. Типа девятый пин был бы:
(PortByte and $80)<>0; разумеется, логического типа.
Замечание3. Самое главное. Смотри, чтобы штырьки для режима твоего порта могли работать на приём (посылку). В зависимости от того, как ты их выберешь. Я просто не помню, где какие.
Дерзай.
← →
VEG (2002-07-27 12:36) [22]>int64
ОГРОМНОЕ СПАСИБО!!!
Сейчас буду разбираться!
← →
Anatoly Podgoretsky (2002-07-27 12:56) [23]>Anatoly Podgoretsky
Там разговор шел об функции:
function PortReadByte(Addr:Word) : Byte; assembler; register;
asm
MOV DX,AX
IN AL,DX
end;
Этот код мне мало чего говорит. Так же еще у меня есть функция:
Данный код читает байт из порта с номером Addr
Вторую функцию можно не рассматривать, она просто не оптимальная, к тому же возвращает не байт.
Я примерно знаю, что делает эта функция, но не понимаю, как она работает. Да еще эта функция не работает в системах семейства NT, для которых и делаеться моя программа.
Работает, если выполняется в кольце 0, к тому же надо оговаривать в вопросе, а ты указал все ОС
В этих двух функциях я вижу те две ассемблерные функции, об которых ты мне говорил. Это mov и in. Я не знаю значения этих ассемблерных функций.
Тебе знать не обязательно, можешь использовать AS IS
Ты же используешь VCL не зная что там внутри.
Если можешь, то, пожалуйста, разъясни мне, что к чему, или дай ссылку по этой теме.
Тебе надо на Intel и брать руководства по процессору, там есть и структура и система команд, но зачем, просто используй как есть.
Основная твоя проблема будет не эта, а знание как работают LPT порты, как прорваться на уровень 0 (драйвер) при том в разных ОС.
Плюс работа в защищенном режиме процессора.
Плюнь на все и возьми готовый драйвер.
← →
BiAlix (2002-07-29 12:14) [24]VEG!
Такого чайника я ыв жизни еще не встречал - я говорит порт не знаю и знать не хочу! Нормальный ход! Да чему вас всех программистов только учат, хоть бы раз прошлись по основам радиотехники! Не знаешь ничего про аппаратные средства РС, ну так и не лезь туда! "+5В постоянного тока" - цитата из твоего письма! Какой бред! +5В - это напряжение, ток измеряется в амперах! Купи себе книгу М.Гука "Аппартаные средства IBM PC" или на худой конец того же автора "Интерфейсы ПК" и проштудируй хорошенько!
Радиотехник (+программист) со стажем.
← →
Anatoly Podgoretsky (2002-07-29 12:19) [25]BiAlix (29.07.02 12:14)
Зря налетаешь, это устояшиеся выражение, 220 вольт переменного тока.
← →
VEG (2002-07-29 12:51) [26]Мля! Я уже радиотехникой 4 года не занимаюсь. Когда занимался, мне было всего 10 лет! Сейчас требуеться стряпать одно устройство! Устройство готово, а прога НЕТ! Можешь считать, что я имелл ввиду "+5V напряжения".
>"..Такого чайника я ыв жизни еще не встречал..." Если ты об программировании, то ты ошибаешься, а если об радиотехнике, то ты ГЛУБОКО ошибаешься! В радиотехнике чайники почти все программисты. А как тебе вопросы, типа "Как попасть в SystemTray?" или "Как убрать мою прогу из Ctrl+Alt+Del?"? Может для тебя эти вопросы очень трудные, тогда, извините, кто из нас чайник?
>"...хоть бы раз прошлись по основам радиотехники..." Нафиг она нормальному программисту? Уверен, что есть программисты-проффесионалы которым нафиг сдалась твоя радиотехника.
>"Не знаешь ничего про аппаратные средства РС, ну так и не лезь туда!" Когда-то я не знал ничего об Delphi. Теперь много чего знаю!
>"...Купи себе книгу М.Гука "Аппартаные средства IBM PC" или на худой конец того же автора "Интерфейсы ПК" и проштудируй хорошенько!..." Покупать и изучать целую книгу из-за одной простой задачи?
>"...(+программист) со стажем..." Ну ты вообще загнул! Почему же ты, такой крутой, не можешь помочь человеку? Складываеться впечатление того, что ты просто решил повыпендриваться!
Понимаешь, если я сделал ошибку в одном слове, это не значит, что я вообще полный DOWN в этой области! Все меня сдесь прекрасно поняли, а это мне и требовалось!
Из вышесказанного можно сделать вывод, что ты САМОЕ СЛАБОЕ ЗВЕНО!
Еж - птица гордая. Не пнешь - не полетит...
← →
VEG (2002-07-29 13:01) [27]>Anatoly Podgoretsky
Хм... Вообще-то ты прав:-) Спасибо за поддержку!
>BiAlix
Раз ты ЭТОГО не знаешь, то ты точно САМОЕ СЛАБОЕ ЗВЕНО, и тебе суждено уйти ни с чем!
ЗЫ Почему ты не зарегистрирован? Может ты какой-нибудь там "vopros"? (vopros, извини, если обидел! Мне же нужно кого-нибудь привести в пример!)
← →
VEG (2002-07-29 13:01) [28]>Anatoly Podgoretsky
Хм... Вообще-то ты прав:-) Спасибо за поддержку!
>BiAlix
Раз ты ЭТОГО не знаешь, то ты точно САМОЕ СЛАБОЕ ЗВЕНО, и тебе суждено уйти ни с чем!
ЗЫ Почему ты не зарегистрирован? Может ты какой-нибудь там "vopros"? (vopros, извини, если обидел! Мне же нужно кого-нибудь привести в пример!)
← →
JumPer (2002-07-30 15:57) [29]Если хочешь универсальную программу забудь про асм. NT тебе ничего не даст копать самому. >saten< написал тебе все правильно. Возьми любой из них. Если хочешь ZLPortIO бери. Я ковырялся с каждым из них. Если не разберешься как, что и куда, то пиши.
← →
JumPer (2002-07-30 16:23) [30]Хотя извини обшибся. Instrument Interface VCL Delphi Component - с этим не работал.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.008 c