Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Цифровые сигнальные процессоры Вопросы, связанные с применением цифровых сигнальных процессоров: программирование, отладочные средства, алгоритмы...

 
Опции темы
Непрочитано 25.05.2010, 20:29  
po4emu4ka
Частый гость
 
Регистрация: 14.12.2009
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
po4emu4ka на пути к лучшему
По умолчанию LPT XP... осторожно, ассемблер!

Люди добрые, помогите пожалуйста с программой!
Есть простенькая программа, которая посылает 1 в порт, но поскольку ОС XP, ничего не работает Насколько я понял, нужно использовать либо драйвер, либо библиотеку dll, либо то и то или что-то совсем другое....
Смотрел тут http://www.pcports.ru/Articles.php и тут http://valery-us4leh.narod.ru/main.html (программу скачивал, порт работает там есть драйвер, с помощью которого сие чудо работает), но так и не смог разобраться Нужно на ассемблере, а везде пишут либо на делфи, либо С++, в общем нормального объяснения не нашел...
программа вот:

CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
ORG 100H
BEGIN: JMP MAIN

MAIN PROC
mov dx, 378h
mov al, 1
out dx, al
MAIN ENDP

CODESG ENDS
END BEGIN

Помогите пожалуйста, чтобы это заработало
Реклама:
po4emu4ka вне форума  
Непрочитано 25.05.2010, 21:39  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

Сообщение от po4emu4ka Посмотреть сообщение
нормального объяснения не нашел
В винде обращение к порту происходит не напрямую, а через интерфейс драйвера. И если в 95/98 еще можно было это обойти, то начиная с W2K никак.
Потому и пишут на языках высокого уровня, что можно подключить драйвер (то бишь системную библиотеку) и работать через нее.
А ассемблерный код, приведенный Вами будет работать только под ДОС. И ЭТО не заработает под ХР. Принципиально.
Насколько я помню, это должно откомпилиться в СОМ-файл. А они практически не работали в расширенном режиме памяти, т.е. даже под 3.11 не должно работать. Только чистый ДОС.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 25.05.2010, 22:29  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

Есть куча драйверов под LPT для XP .
http://railab.ru/materials/other/ports/lpt.html
http://www.programmersheaven.com/dow.../download.aspx
http://www.driverlinx.com/DownLoad/DlPortIO.htm

Скачай FASM , литературу на него . В частности писания под винду.
Например уроки ISZELION .
Работу с API.
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 25.05.2010 в 22:32.
dosikus вне форума  
Непрочитано 29.05.2010, 23:03  
raxp
Почётный гражданин KAZUS.RU
 
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
raxp на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

ну, ассемблерный код нужно подрихтовать ...а чтобы его сильно не менять в части обращения к порту, достаточно вызвать из своей программы драйвер giveo.sys ...вот он даст разрешения (через I/O Permission Map) обращаться вашему процессу к портам.
__________________
Белорусский журнал «Радиолюбитель»
Youtube LaboratoryW
UR3QQJ
raxp вне форума  
Непрочитано 23.06.2010, 22:11  
bor1234
Прохожий
 
Регистрация: 23.06.2010
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
bor1234 на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

Нужно открыть LPT как файл
и работать через IOCONtrol
bor1234 вне форума  
Непрочитано 24.06.2010, 20:51  
raxp
Почётный гражданин KAZUS.RU
 
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
raxp на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

...и не иметь при этом возможности дергать пины.
__________________
Белорусский журнал «Радиолюбитель»
Youtube LaboratoryW
UR3QQJ
raxp вне форума  
Непрочитано 24.06.2010, 21:12  
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,727
Сказал спасибо: 2,418
Сказали Спасибо 894 раз(а) в 581 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

А, если в байте, отправляемом в порт, дергать биты, разве пины не будут реагировать?
baiderin вне форума  
Непрочитано 24.06.2010, 21:29  
raxp
Почётный гражданин KAZUS.RU
 
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
raxp на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

будут, но совсем не так как вы хотите, ибо системный драйвер делает это по своему ...раздельного контроля регистрами статуса, контроля и data не будет ...при открытии порта как файл, понятие этих регистров теряет смысл.
__________________
Белорусский журнал «Радиолюбитель»
Youtube LaboratoryW
UR3QQJ

Последний раз редактировалось raxp; 24.06.2010 в 21:33.
raxp вне форума  
Непрочитано 24.06.2010, 21:35  
baiderin
Почётный гражданин KAZUS.RU
 
Аватар для baiderin
 
Регистрация: 10.12.2007
Адрес: Екатеринбург
Сообщений: 2,727
Сказал спасибо: 2,418
Сказали Спасибо 894 раз(а) в 581 сообщении(ях)
baiderin на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

А API,как для СОМ, для параллельного порта нет?
baiderin вне форума  
Непрочитано 27.06.2010, 18:22  
raxp
Почётный гражданин KAZUS.RU
 
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
raxp на пути к лучшему
По умолчанию Re: LPT XP... осторожно, ассемблер!

API есть для всего в 3-м посте за это уже сказали ...управление через DeviceIoControl осуществляется через системный драйвер parclass.sys
Цитата:
Рассмотрим функции драйверов parclass.sys и parport.sys. Parport.sys предназначен для управления самим параллельным портом, т.е железом. Может показаться, что этот драйвер должен обеспечивать доступ через порты ввода/вывода к регистрам параллельного порта – данных, статуса и управляющему и предоставлять этот сервис вам. Как бы не так! В системе Windows NT все не так просто и прямолинейно. Этот драйвер выполняет совсем другие функции – он поддерживает PnP, регулирует доступ к портам, их захват и освобождение, контролирует режим работы каждого из присутствующих портов.

Parclass.sys – это базовый драйвер устройства, подключенного к параллельному порту. Почувствуйте разницу: parport.sys – драйвер самого порта, parclass.sys – драйвер устройства, подключенного к порту. Parclass.sys обеспечивает низкоуровневый доступ (row access) к устройству, подключенному к параллельному порту. Хотя при этом не стоит думать опять же, что этот драйвер позволит напрямую работать с регистрами параллельного порта. Когда вы из приложения вызывает функцию CreateFile("LPT1", … ) – вы работаете с объектом ядра – именованным устройством, созданным именно драйвером parclass.sys. Короче говоря, если вы собираетесь поуправлять неким устройством через параллельный порт из приложения, вы будете взаимодействовать именно с parclass.sys. Изучением интерфейса этого драйвера мы и займемся в дальнейшем. Если вас все же не оставляет мысль напрямую работать с регистрами параллельного порта – вам придется разработать собственный драйвер, другой дороги у вас нет. Но прежде чем заняться этим – подумайте! Я вас уверяю, что в 99% случаев такой необходимости нет.

http://junglewin.narod.ru/lpt.html
...если нужно просто послать данные через API, пожалуйста:
Цитата:
HANDLE hLpt =
CreateFile( "LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
char buf[0x100];
sprintf(buf, "hello printer\ngood bye printer");
BOOL res =
WriteFile(hLpt, &buf, strlen(buf), &ret, NULL);
CloseHandle(hLpt);
но никакого управления дерганьем конкретных заданных пинов, как видите, нет ...лучше процитирую...
Цитата:
Windows рекомендует работать с LPT портом используя вызовы API функций - OpenFile(), WriteFile(), ReadFile(). Приложения, которые используют LPT порт для обмена информацией по парралельному интерфейсу с внешними устройствами (принтер, например) так и делает. У него нет задачи установить на каком-либо бите регистра Data лигическую еденицу. Ему (приложению) нужно просто отправить пакет данных, а кто там будет какие линиии при этом дергать и считывать его не сильно интересует. Эти операции проводит системный драйвер LPT порта. Он подгружается в память при загрузке ОС. Когда мы вызываем функцию OpenFile("LPT1", ....) мы посути дела обращаемся к драйверу порта, который имеет символическое имя LPT1. Драйвер делает кучу всякой работы - запрещает доступ к порту другим процессам, настраивает параметры протокола передачи данных, собственно реализует эту передачу, но в конечном итоге все это сводится к прямому управлению отдельными битами LPT порта на уровне ядра ОС.

...программа которая работает через API вызовы ни чего не заметит - вся низкоуровневая работа делается драйвером, а каким драйвером и куда пойдут пакеты данных - приложению наплевать!
использование драйверов типа inpout32, giveo - позволяет работать через ядро системы, минуя запрет на прямую работу с портом в nt/

p.s.: по теме топик-стартера - ответ дан, вызов giveo из его ассемблерной программы, зарегистрирует ее как приложение, имеющее такой доступ. Это самый простой способ, без изменений в коде ...а по работе с inpout32 вы можете почитать, либо в сети, либо в журнале «ПРОграммист» №3-4
__________________
Белорусский журнал «Радиолюбитель»
Youtube LaboratoryW
UR3QQJ

Последний раз редактировалось raxp; 27.06.2010 в 18:29.
raxp вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление нагрузками с помощью LPT R2911 TTL и CMOS логика 14 11.08.2014 07:54
Осциллограф на базе LPT порта z3 Измерительное оборудование 3 01.03.2010 11:21
LPT b PROTEUS romshe Proteus 0 01.11.2009 18:22
Подключение датчиков температуры ds1621 к LPT компьютера psionrevo Автоматика и аппаратура связи 0 14.01.2008 15:42


Часовой пояс GMT +4, время: 05:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot