Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Не получается управлять LPT-портом  (Прочитано 40070 раз)
0 Пользователей и 13 Гостей смотрят эту тему.
NikVE
Интересующийся

ru
Offline Offline

« : 12-01-2009 12:47 » 

Здравствуйте!
Я новенький на вашем форуме!
И полный чайник в программировании!
Хочу научиться программно управлять сигналами на ножках LPT-порта.
На С++ для старенького Пня, на к-ром идет только Win98, написал такую прогу (сразу предупреждаю, она не мной придумана, находится в свободном доступе на просторах Инета):
Код:
#include "iostream.h"
#include "conio.h"
#include "stdlib.h"

void main()
{
   int Address=888;
   cout<<"Test LPT port."<<endl;
   cout<<"Press '1' to activate and '0' to disactivate lightdiod."<<endl;
   cout<<"To exit press 'e'."<<endl;
   cout<<" "<<endl;

   while(1)
   {     
      switch(getch())
      {

         case '0':   cout<<"Disactivate...."<<endl;
                  _outp(Address, 0);
                  break;         
         case '1':    cout<<"Activate...."<<endl;
                  _outp(Address, 1);
                  break;
         case 'e': exit(1);
      }
   }

   getch();
}

Компилируется без ошибок, однако при запуске никакого изменения состояния LPT не присходит (при вкл. компа сразу выставляется высокий уровень на DATA-выводах порта и не меняется больше).
Прошу вашей помощи!
« Последнее редактирование: 12-01-2009 13:16 от Вад » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 12-01-2009 13:17 » 

а точно этот номер порта?
378h - не lpt2?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #2 : 12-01-2009 13:34 » 

Насколько хватает моих познаний в Win, номер порта я смотрел в диспетчере устройств. Там прописано: LPT1, диапазон ввода/вывода 0378/037F
Адрес я указал в строке:
int Address=888;
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-01-2009 13:37 » 

посмотрел - действительно 0x378 lpt1

должно работать, но, возможно, это еще зависит от режима порта.

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 12-01-2009 15:38 » 

NikVE, проверь протокол установленный в биосе. Если это двунаправленный (EPP, ECP), то тебе его надо поддерживать, эмулируя устройство. В противном случае установи SPP.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
NikVE
Интересующийся

ru
Offline Offline

« Ответ #5 : 13-01-2009 09:53 » 

NikVE, проверь протокол установленный в биосе. Если это двунаправленный (EPP, ECP), то тебе его надо поддерживать, эмулируя устройство. В противном случае установи SPP.
Попробовал. Ничего не дает. Там еще другие режимы есть,все их поочередно пробовал - никакого толка! В чем загвоздка?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 13-01-2009 09:56 » 

тут не совсем корректный пример дан
попробуй установить высокий импеданс на всех ножках (255), а не только на первой.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #7 : 13-01-2009 10:01 » 

тут не совсем корректный пример дан
попробуй установить высокий импеданс на всех ножках (255), а не только на первой.
Блин, загрузился маленько...
Как я понял, функция _outp(Address, 0); - это какая-то стандартная фуекция С++ (где бы почитать про нее, желательно на русском). И она выводит 0 (как в данном случае) или 1 на все выводы по адресу 888 (в десятичном виде). Или совсем не так?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 13-01-2009 10:11 » 

у... как все запущено

в таких случаях, если уже играешься, и до сих пор не спалил порт

пробежись бегущей единицей (нулем) по всем ногам


Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #9 : 13-01-2009 10:22 » 

у... как все запущено

в таких случаях, если уже играешься, и до сих пор не спалил порт

пробежись бегущей единицей (нулем) по всем ногам



Ну не все же такие гуру, как вы...
Просто специализировался на другом, в чем великие программисты могут быть весьма посредственными чайниками. А этой проблемкой озадачился, т.к. есть необходимость решить одну задачу, а просить "дядю" не хочу. Если подскажете фрагмент кода, как выставить 1 на все выводы, буду благодарен!
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 13-01-2009 10:36 » new

Код:
switch(getch())
      {

         case '0':   cout<<"Disactivate...."<<endl;
//начало цикла бегущего 0
//i=254;
                  _outp(Address, i);
//задержка
//i=i/2;
//конец цикла
//
                  break;
где-то так
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #11 : 13-01-2009 10:36 » 

Я вот тут задался вопросом. А как это всё под виндой (пусть и 98ой) работает? Код-то ведь ДОСовский. Но без дров... Даже виртуальных...

NikVE, попробуй в ДОС перезапустись и там запусти прожку. Если честно, то я уже точно не помню ДОСовские детали, но на первый взгляд выглядит нормально. За исключением конечно условия, что порт должен быть сначала проинициаллизирован для приёма-передачи. Но если мне не изменяет память, то пинами можно управлять напрямую.
Хотя и не уверен на все 100%.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
NikVE
Интересующийся

ru
Offline Offline

« Ответ #12 : 13-01-2009 10:56 » 

Я вот тут задался вопросом. А как это всё под виндой (пусть и 98ой) работает? Код-то ведь ДОСовский. Но без дров... Даже виртуальных...

NikVE, попробуй в ДОС перезапустись и там запусти прожку. Если честно, то я уже точно не помню ДОСовские детали, но на первый взгляд выглядит нормально. За исключением конечно условия, что порт должен быть сначала проинициаллизирован для приёма-передачи. Но если мне не изменяет память, то пинами можно управлять напрямую.
Хотя и не уверен на все 100%.
Спасибо всем за ответы!
Да, я действительно чайник, и все запущено. Не скрываю этого... Программу взял отсюда: http://www.pcports.ru/articles/1.php
Прошу не считать это рекламой. Автор утверждает, что все должно работать, хотя в гостевой книге на его сайте есть отзывы, что его программы не работают. На контакт он идет, только утверждает, что все нормально и помочь ничем не может. Я понимаю, что сейчас рынок и "за просто так" никто ничего не выдаст. Хотя хотелось бы верить в хорошее.
Автору Sla большое спасибо, буду кумекать и пробовать. Хотя это займет некоторое время.
А пока хотел бы спосить, может что-нибудь в Win держать эти сообщения к порту и не пущать их почему-то?
Если будет возможность, сходите на этот адрес, зацените своим мастерским взглядом, стоит ли еше пробовать программы, приведенные там, или все это пустышки и ловушки времени?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 13-01-2009 11:04 » 

а скажи пожалуйста, ты схемку из светодиодов собрал?
а на какой ноге проверяешь?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #14 : 13-01-2009 11:14 » 

а скажи пожалуйста, ты схемку из светодиодов собрал?
а на какой ноге проверяешь?

Да я застрял на самых первых двух прогах: для 98-го и с первой библиотекой Inpout32. Ничерта не работает! Такая досада! Вот и думаю, что кидалово все это, наверное...
Ноги порта такие: + на выводе №2; земля - на 25 ноге. Подключал светодиод чрез резистор 1 кОм последовательно, чтобы, "играясь" с портом (будучи полным чайником), не спалить его (резистор ограничит ток, и если чего не так, то порт не крякнет (по крайней мере, я на это надеюсь)).
Насчет сбора схемки из кучи светодиодов, то могу попробовать, причем паять ничего не надо. У меня есть классная макетная плата, на ней и соберу всю схемку. Вот только думаю, если с самых первых прог ничего не работает, стоит ли тратить время?!
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 13-01-2009 11:19 » 

Ну... теперь все понятно
http://hardware.zp.ua/docs/lpt.htm
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 13-01-2009 11:22 » 

NikVE, та не кидалово - должно работать
, интересно а принтер работает?
вот попробуй
сделай так
copy lpt1: <какой нибудь файл>,
но принтер не подключай,
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #17 : 13-01-2009 11:26 » 

может что-нибудь в Win держать эти сообщения к порту и не пущать их почему-то?

Поэтому я и говорю - перезапусти винду в ДОС. Я уже не помню точно как это делалось, попробуй F8 при старте и выбери только консоль. Потом запусти свою  прогу.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #18 : 13-01-2009 11:32 » 

А вобще-то если хочешь серьёзно заниматься с LPT, то вот тебе пожалуй самый полный ресурс по портам вобще и по LPT в частности:
http://www.lvr.com/parport.htm

Вот тут все необходимые тебе детали:
http://www.lvr.com/files/ibmlpt.txt

А вот тут и программирование с кодом:
http://electrosofts.com/parallel/index.html
« Последнее редактирование: 13-01-2009 11:41 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
NikVE
Интересующийся

ru
Offline Offline

« Ответ #19 : 13-01-2009 12:00 » 

NikVE, та не кидалово - должно работать
, интересно а принтер работает?
вот попробуй
сделай так
copy lpt1: <какой нибудь файл>,
но принтер не подключай,
Может, тоже попробуете проверить вторую программу с библиотекой Inpout32? Много времени это занять не должно... И сравнить смоим результатом.
« Последнее редактирование: 13-01-2009 12:01 от NikVE » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 13-01-2009 12:08 » 

NikVE, та не
1. не начем
2. не зачем - наигрался в свое время
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #21 : 13-01-2009 12:10 » 

NikVE, та не кидалово - должно работать
, интересно а принтер работает?
вот попробуй
сделай так
copy lpt1: <какой нибудь файл>,
но принтер не подключай,
Принтер работает. Вывел на печать страницу, распечатал...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 13-01-2009 12:19 » 

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

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #23 : 13-01-2009 12:27 » 

я вот думаю, а хватит ли мощности  сигнала зажечь светодиод, через килоомный резистор?
что там товарисч говорит?
Товарищ тот говорит, что напрямую втыкай в порт. Но я через резистор включил, он светится, хотя и тускло. И почему сразу после нажатия кнопки включения компа сразу на data-выводах выставляются 1? Так и должно быть?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #24 : 13-01-2009 12:45 » 

1. Вобще-то так включать светодиоды не рекомендуется. Их надо включать через доп. источник питания +5 В (подаётся на анод СД) а катод через резистор 47 Ом подключается к выходу микросхемы, ибо нулевой ток у ТТЛ микросхем больше.

2. NikVE, я конечно твою просьбу где-то понимаю, но дело это не такое простое как кажется. Виной всему элементарное отсутствие Win98.

3. По умолчанию на неподключеных выходах микросхем устанавливаются уровни логических единиц.

ps а если не секрет, чем ты занимался ДО того, как решил стать программером?
« Последнее редактирование: 13-01-2009 12:46 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #25 : 13-01-2009 12:48 » 

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

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
NikVE
Интересующийся

ru
Offline Offline

« Ответ #26 : 13-01-2009 13:26 » 

зы зы НАстаиваю таки на просьбочке запустить прогу в консольном режиме, дабы исключить действие неких дров возможно блокирующих порт.
Буду пробовать. Debug из ДОС заведется?
Пока программером становиться не планирую. Причины на мои потуги следующие:
1) просто интересно;
2) решение одной задачи в конторе, где мантулю. Контрора бюджетная, $ на развитие не выделяется, а развиваться заставляют, иначе нах-нах! А работу сейчас найти не просто... Поэтому нанять професионального программера не получается.
3) и не в тему: по работе специализируюсь по железнодорожной технике: силовая электротехника и немного силовая электроника. Программирование - на уровне церковно-приходской школы. Ну и в довершение всех неудач: в школе изучал немецкий, так что и здесь проблемы: чтение английской документации - ОЧЕНЬ большая проблема.
Что скажете: лучше сразу застрелиться и не мучить ни себя, ни "реальных пацанов" (то бишь продвинутых гуру- программеров)?!
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #27 : 13-01-2009 13:29 » 

debug заведется,
но зачем тебе дебаг?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
NikVE
Интересующийся

ru
Offline Offline

« Ответ #28 : 13-01-2009 13:34 » 

debug заведется,
но зачем тебе дебаг?
Ну я следую указаниям из тго сайта: в VisualС++ компилируем, появляется папка Debug, в к-рой ехе лежит. Его и запускаем.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #29 : 13-01-2009 14:16 » 

уй... действительно всё запущено. Не в обиду. Просто скажем так, мягко говоря, ты схватился за сложную тему где-то в середине. А начинать надо с нуля. У тебя пересекаются сразу несколько самих по себе сложных тем: 1. Программирование 2. Программирование под конкретной IDE 3. Программирование под виндой. 4. Программирование железа под виндой. и наконец 5. Программирование LPT.

Каждая из этих тем в лучшем случае - нехилая книженция. Поэтому-то так всё сложно.

Посему, мой тебе совет. Винду - нах. Прожка твоя в консоле (под ДОС) должна работать без проблем. Если очень хочется дебажить и тп, то лучше поставить ДОС версию С++ от Борланда. Код от этого не изменится и тебе для начала "для поиграться" будет достаточно. А заморочек меньше.
2. Лучше всего иметь второй комп со специальным кабелем. Ща уже детали не помню, но в своё время находил в инете распайку, для завязывания двух компов по LPT, думаю и сейчас это не проблема. Это гораздо лучше и ИМХО проще, чем LED-индикаторы. На втором можно отслеживать, опять же с помощью прожки (я постараюсь её найти) - монитора LPT, все сигналы. А ещё лучше сделать свлою - для опрашивания портов LPT.

Что скажете: лучше сразу застрелиться и не мучить ни себя, ни "реальных пацанов" (то бишь продвинутых гуру- программеров)?!

Не ну если ты в самом деле думаешь, что продвинутыми гуру рождаются или впитывают эти знания с молоком матери, а не долгим и упорным трудом, то тогда альтернативы я не вижу. Ага

Не боись, миллионы людей освоили это дело. И ты справишься. Было бы желание.

Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines