![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с LPT портом. [D6, Win95/98, WinME, NT4, Win2k, WinXP]
VEG © (2002-07-20 19:15:00)Мне требуеться программно узнать, имееться ли напряжение в данный момент на определенном штырьке (напряжение от моего устройства). Я еще не определился с его номером, но точно могу сказать, что его номер не может быть равен 2,3,4,5,9,11,15,18,19,20,21,22,23,24,25. Скорее всего будет использован один из штырьков: 10,12.13.
JumPer (2002-07-30 16:23:00) [1]Хотя извини обшибся. Instrument Interface VCL Delphi Component- с этим не работал.
JumPer (2002-07-30 15:57:00) [2]Если хочешь универсальную программу забудь про асм. NT тебе ничего не даст копать самому. >saten< написал тебе все правильно. Возьми любой из них. Если хочешь ZLPortIO бери. Я ковырялся с каждым из них. Если не разберешься как, что и куда, то пиши.
VEG (2002-07-29 13:01:00) [3]>Anatoly Podgoretsky
Хм... Вообще-то ты прав:-) Спасибо за поддержку!
>BiAlix
Раз ты ЭТОГОне знаешь, то ты точно САМОЕ СЛАБОЕ ЗВЕНО, и тебе суждено уйти ни с чем!
ЗЫ Почему ты не зарегистрирован? Может ты какой-нибудь там "vopros"? (vopros, извини, если обидел! Мне же нужно кого-нибудь привести в пример!)
VEG (2002-07-29 13:01:00) [4]>Anatoly Podgoretsky
Хм... Вообще-то ты прав:-) Спасибо за поддержку!
>BiAlix
Раз ты ЭТОГО не знаешь, то ты точно САМОЕ СЛАБОЕ ЗВЕНО, и тебе суждено уйти ни с чем!
ЗЫ Почему ты не зарегистрирован? Может ты какой-нибудь там "vopros"? (vopros, извини, если обидел! Мне же нужно кого-нибудь привести в пример!)
VEG (2002-07-29 12:51:00) [5]Мля! Я уже радиотехникой 4года не занимаюсь. Когда занимался, мне было всего 10лет! Сейчас требуеться стряпать одноустройство! Устройство готово, а прога НЕТ! Можешь считать, что я имелл ввиду "+5V напряжения".
>"..Такого чайника я ыв жизни еще не встречал..." Если ты об программировании, то ты ошибаешься, а если об радиотехнике, то ты ГЛУБОКОошибаешься! В радиотехнике чайники почти всепрограммисты. А как тебе вопросы, типа "Как попасть в SystemTray?" или "Как убрать мою прогу из Ctrl+Alt+Del?"? Может для тебя эти вопросы очень трудные, тогда, извините, кто из нас чайник?
>"...хоть бы раз прошлись по основам радиотехники..." Нафиг она нормальному программисту? Уверен, что есть программисты-проффесионалы которым нафиг сдалась твоя радиотехника.
>"Не знаешь ничего про аппаратные средства РС, ну так и не лезь туда!" Когда-то я не знал ничего об Delphi. Теперь много чего знаю!
>"...Купи себе книгу М.Гука "Аппартаные средства IBM PC" или на худой конец того же автора "Интерфейсы ПК" и проштудируй хорошенько!..." Покупать и изучать целую книгу из-за одной простойзадачи?
>"...(+программист) со стажем..." Ну ты вообще загнул! Почему же ты, такой крутой, не можешьпомочь человеку? Складываеться впечатление того, что ты просто решил повыпендриваться!
Понимаешь, если я сделал ошибку в одномслове, это не значит, что я вообще полный DOWN в этой области! Все меня сдесь прекраснопоняли, а это мне и требовалось!
Из вышесказанного можно сделать вывод, что ты САМОЕ СЛАБОЕ ЗВЕНО!
Еж - птица гордая. Не пнешь - не полетит...
Anatoly Podgoretsky (2002-07-29 12:19:00) [6]BiAlix (29.07.02 12:14)
Зря налетаешь, это устояшиеся выражение, 220 вольт переменного тока.
BiAlix (2002-07-29 12:14:00) [7]VEG!
Такого чайника я ыв жизни еще не встречал - я говорит порт не знаю и знать не хочу! Нормальный ход! Да чему вас всех программистов только учат, хоть бы раз прошлись по основам радиотехники! Не знаешь ничего про аппаратные средства РС, ну так и не лезь туда! "+5В постоянного тока" - цитата из твоего письма! Какой бред! +5В - это напряжение, ток измеряется в амперах! Купи себе книгу М.Гука "Аппартаные средства IBM PC" или на худой конец того же автора "Интерфейсы ПК" и проштудируй хорошенько!
Радиотехник (+программист) со стажем.
Anatoly Podgoretsky (2002-07-27 12:56:00) [8]>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 (драйвер) при том в разных ОС.
Плюс работа в защищенном режиме процессора.
Плюнь на все и возьми готовый драйвер.
VEG (2002-07-27 12:36:00) [9]>int64
ОГРОМНОЕ СПАСИБО!!!
Сейчас буду разбираться!
int64 (2002-07-27 12:21:00) [10]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 11:35:00) [11]Вы, наверное меня не так поняли! Я не знаю принципа работы 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-а.
>Неотеничный педоморф
Ах!!!
-<>-<>-<<<Фраза>>>-<>-<>-
Зверь, самый лютый, жалости не чужд.
Я чужд. Значит я не зверь.
Неотеничный педоморф (2002-07-24 23:07:00) [12]Ох!
Altano (2002-07-24 22:14:00) [13]Проще всего на Pascal под ДОС оспользовать встроенный массив PORT[$xxxx] для чтения/записи побайтно или PORTW[$xxxx] по словам (загляни в хелп)
dr.keshman (2002-07-24 18:08:00) [14]Раньше люди читали руководства по работе с периферией,
с примерами на asm и С, там всё было написано и про порты,
и про регистры, и про девайс драйверы (это для ДОС)...
а теперь некоторым лень читать наверно.
Ну правильно! Для этого есть WinAPI и системные драйверы, только механизм работы подобных устройств все равно нужно знать. Он не в ОС определяется, а в стандарте PC.
pasha676 (2002-07-23 13:41:00) [15]December24 - да и под Виндами в Дельфи все также. Пишешь вставку на асме. Ассемблер он и в Африке ассемблер. Конечно могут возникнуть траблы под NT и Co, но могут и не возникнуть. Это надо пробывать.
Veg - тебе надо почитать две вещи. Первое - основы ассемблера для ПС и работа ЛПТ порта. Особенно с точки зрения программера. Какие регистры по какому адресу и т.д.
Vorobyev S (2002-07-23 07:42:00) [16]Посмотри
http://www.kuban.ru/forum_new/forum2/files/7170.html
December24 (2002-07-22 21:04:00) [17]Под ДОСом всё ещё проще.
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;
DC-AC (2002-07-22 14:55:00) [18]Готовый драйвер (dll,vxd,sys) можно автоматически засунуть в System/System32 любым интсаллятором, хотя бы тем же InnoSetup ( http://www.jrsoftware.org, http://www.jordanr.cjb.net).
Слесарь-технолог (2002-07-22 13:50:00) [19]VEG, если всё в одной твоей программе, то она будет работать ТОЛЬКО под Windows 9X.
Если нужно под W2K и иже с ним, без драйвера НЕ ОБОЙТИСЬ.
Впрочем, это не так сложно, как многие думают...
VEG (2002-07-22 12:33:00) [20]>All
Понравился компонент ZLPortIO. Сейчас буду в нем разбираться. Если будут проблемы, то я напишу, а сейча всем огромное спасибо!
-<>-<>-<<<Фраза>>>-<>-<>-
Зверь, самый лютый, жалости не чужд.
Я чужд. Значит я не зверь.