![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Представте себе некоторый станок, которыцй пиляет. скажем доски. Припустим, что все механизмы работают и управляются релейной системой. Также есть система контроллеров. Всё управляется электричеством.
Припустим. что разработана вся логика устройства, все детали надёжно пропаяны и необходимый "туда-сюда" сигнал со стандартными параметрами для какого-нибуть порта(LTP, илиUSB) есть! Разработать логику работы программы нетрудно, зная. что она должна делать... проблема в том. что я понятия зелёного не имею, как пишутся драйвера и вообще, какие термины применяются для такого типа програмирования, с чего вообще начать, чтобы можно было постепенно научиться подключать к компу разные девайсы собственного производства... Одним словом. как подключить лампочку в гостиннойк компу?, для начала?))) |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Через LPT порт. Я бы так зделал: 1. Ношол бы инфу по эл. интерфейса LPT, гденить.. 2. И с помощью функций CreaceFile, WriteFile и т.д. в си написал бы прогу. Кадат делал такое.. --------------------
Инагда пишу звуками. |
|||
|
||||
G24_tec |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 3.9.2007 Репутация: нет Всего: нет |
На счет USB может тут посмотреть
http://forum.vingrad.ru/index.php?showtopi...t&p=1400493 примеры к плате есть на сайте фирмы G24-tec. |
|||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Спасибо, КОНЕЧНО, всем, но всё это для меня поэзия научно-фантастической мысли...пока!
А где можно посмотреть схемы чипов. контроллеров? Эта информация доступна, или, компании-производители скрывают...? Как увидеть сигнал? - можно сделать осцилограф из компьютера? true =это сколько вольт? ![]() Абстрагируясь от всех заумностей языков, думаю так - кажый датчик говорит да - нет Пошаговый искатель, -пусть даже электромеханический ![]() Значит , 1 надо к одной ножке LTP припаять сигнал от пошагового искателя[индекс датчика] 2 с другой ножки подаём управление на переключатель датчиков (в нашем случае, это будет катушка реле))))) - это же и будет индекс датчика ,тоесть тактовый генератор 3 подать сигнал на исполняющее реле1 с третьей ножки 4 подать сигнал на исполняющее реле2 с четвёртой ножки 5 и так дальше? а сколько там ножек можно задействовать, по которым идёт сигнал?? Можно тем же индексом датчика - тактовый генератор - переключать тем же искателем ,сигнал на управление реле. Тоесть, обобщая этот "псевдопсевдокод" подключить к LTP три сигнала и матушку землю. Если бы программа опрашива датчики кажду секунду, она вполне бы могла контролировать контролировать не очень быстрые технические и не только процессы(рост цветов, брожение вина)) а если употребить такое чудо техники, как КТ155ЛА3...то возможности для фантазии просто безграничны...потом мне, конечно, может и будет проще покупать готовые контроллеры, но сейчас я был бы просто счастлив, если бы я поместил на форму кнопу, над собой лампочку. и включал-выключал её кнопкой... ![]() Как усстановить сигнал на каком то выводе true? С чего начать учиться. чтобы это понять? Это сообщение отредактировал(а) new_web - 3.2.2008, 07:09 |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Нигде. Эта информация тебе не нужна. Тебе нужно знать как пользоваться контроллером. Ты же не видел чертежей коробки передач в твоей машине, а пользуешься без проблем... Осцилографом (и на худой конец вольтметром). Можно, но это не проще и не дешевле чем приобрести осцилограф. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Я видел чертежи, только ничего не понял. а коробку разбирал-собирал. Встану рано утром. возьму кусок железа, приварю к нему другой, прикреплю пару двигателей, цилиндров, и т д - и будут они туда-сюда что-то делать - это я умею уже. плотно пообедав можно попробовать всё это поподключать вечером. усердно помолившись. ударив в бубен начать писать код. Мне всё интересно самому попробовать ![]() И конечно, что Вы правы. что быстрее выгодней и надёжней будет пользовать готовым чипом, програмируемым, и так дальше! Но изучение електротехники начинают с лампочки, а вдруг я захочу контроллеры делать? |
|||
|
||||
Gordon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 9.7.2006 Репутация: 1 Всего: 6 |
new_web, посмотри тут
Может найдешь что нужно... И есили нетрудно, отпишись (я тоже хочу просмотреть это параллельно). -------------------- |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Как хобби не получится! Если захочешь, то настраивайся на 5 лет универа. И то получишь только начальные знания, которые на практике еще применить надо. Да и "контроллер делать" имеет смысл в кол-ве от 10000 штук (а то и гораздо больше). Остальное невыгодно и врятли сможет с чем-то конкурировать... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Простейшая задача! Для этого нужно: 1. Оптопара (например MOC3051 в гугле найти легко, стоит до 50р. точно нипомню) 2. LPT - шнут (до 80р.) 3. LPT - порт на кампе. 4. Среда программирования (например MS VC++, C++Builder или типа). 5. Описание электрическое LPT (полно, если ненайдёш то подключай ко второму выводу порта). 6. Книжку скачать по основам электроники (главное чтоб тонкая была страниц до 200, меньше вобы будет) 7. Инструмент всякий, типо нож, отвёртка, маток изоленты и тд (догадаешся). 8. Светильник с лампочкой ват на 25 (как в советском холодильнике) Прога строк в 60 получится. Пользы мало зато опыт. Или самый простой вариант купить 8 светодиодов, вставить в LPT и поигратся с ними.. --------------------
Инагда пишу звуками. |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Самый классный пример, который мне попадался в сети это вот этот
http://www.myrobot.ru/stepbystep/mc_first_project.php Все ясно и понятно! ![]() Потом уже добавишь кнопку и все такое... ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Gordon, огромное спасибо за дельную ссылку! - я прочитал только пару страниц. и понял, что это то. что искал! Даже формулировка вопроса, о лампочке совпала!
Сегодня влом уже. а завтра побегу светодиод искать....у меня и оптопары имеются где-то. и тиристоры к ним, реле... так что я теперь одной кнопкой буду включать свет...другой вентилятор, отопление, угол наклона кровати... Ещё раз спасибо! cardinal Спасибо! Контроллеры будут моим следующим этапом. Только я бы никому не советовал делать так, как на рисунке http://www.myrobot.ru/stepbystep/images/mc_first2.gif провода запутаются, ножки отвалятся - для этих целей надо запастись гнездом специальным, в которую микросхема и втыкается. Я когда-то радиотехнике учился.... Это сообщение отредактировал(а) new_web - 4.2.2008, 03:02 |
|||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Побывал на
http://www.pcports.ru/articles/2.php Там, правда пример для среды VC++ 6., а я на Билдере - может, из-за этого глюк? Вроде всё понятно, и скачал что надо, только компилятор тревожится, недостижимый код у него, а при запуске выдаёт такое [Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\НОВАЯ ПАПКА\INPOUT32.LIB' contains invalid OMF record, type 0x21 (possibly COFF) |
|||
|
||||
Gordon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 9.7.2006 Репутация: 1 Всего: 6 |
Пожалуйста!!! ![]()
Да, на VC++ 6 работает (сам пробовал), а вот Билдер ![]()
-------------------- |
||||
|
|||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Ну конечно это будет на соплях, но зато картинка наглядная... ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
У VS и BCB разные форматы файлов библиотек. Возьми утилиту implib из BCB она сделает тебе библиотеку из .dll |
|||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
И что тогда делать? у меня есть VC5, но он устарел, да и ключа нет...
Но, ведь как-то же должно работать в билдере, ведь как-то приложения, созданные в билдере обращаются к портам, пусть даже через виндовс как-то... А нет нигде такого компонента для билдера. чтобы вставил в форму. в инспекторе прописал адрес там, чтобы реагировал на изменения сигнала, и так дальше? Может, стоит написать такой компонент? Мне это не под силу. но, Вы, господа опытные програмисты. и програмисты эксперты могли бы что-то придумать, наверное, вам делов то, что два пальца... cardinal, а как я контроллер подключу к компу, если ХР не позволяет напрямую обратиться к портам, с контроллером идёт драйвер какой-то, или, там совсем иной принцип какой-то? А кто-то пробовал на windows 98 такое попробовать? у меня есть старенький компик, но, вряд-ли он билдер потянет, а создать ехе не получается - линкер еррор! ![]() Что делать? Есть же выход из ситуации? |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
RS-232: сдандартное решение в VB USB: взяв FT232RL и драйвер, который можно скачать на сайте производителя ты превратишь USB в RS-232, то есть программа на компе даже не изменится, хотя ты будешь пользоваться USB шнуром... ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
xvr |
|
||||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Я же уже писал - напустить implib из Borland'а на inpout32.dll из комплекта, она сделает INPOUT32.LIB для Bulder'а
![]()
![]()
![]() |
||||||||||||||
|
|||||||||||||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Из WinXP к LPT обращался обычно используя функции CreaceFile, WriteFile. (в билдере)
Писал тут, непроверял. Это под билдер. Должно быть 2 эдита Edit1 и Edit2. И кнопка по событию от которой FF передать в порт. Светодиодом проверять на втором выводе ЛПТ. (или на 3, 4, ... 9.) В Edit1 записать имя порта LPT. Если порт найден и откроется в Edit2 будет какоето значение, если неоткроется то -1. Значит порта нет в системе (смотри диспечер устройств) или ни правильно написано имя порта. Добавлено @ 23:16 Результат напиши. Интересно что получица. ![]() Это сообщение отредактировал(а) Den64 - 4.2.2008, 23:18 --------------------
Инагда пишу звуками. |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Не будет работать ![]() |
||||
|
|||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
--------------------
Инагда пишу звуками. |
|||
|
||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
В 14 строчке перед буфер забыл поставить &. Без неё некомпилит.
Начал проверять, LPT1 открывает нормально. Затем на функции WriteFile виснет. Когдато делел такую хрень в институте на научную работу ![]() Можно спросить на ветке форума системное программирование в чём проблема.. --------------------
Инагда пишу звуками. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Проблема именно в этом - нет ответа от принтера. Можно сэмулировать принтер - замкнуть пару выводов (каких именно и как сейчас не скажу), выводить в D0-D7 будет, вводить - нет, и дополнительные выходы тоже использовать не удастся - нет в WriteFile такой функциональности ![]() |
|||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Господа. был в офлайн. много пропустил.
Простите. нк увидел в первый раз. Можете подсказать, как конктретно делать это? Я ведь новичёк всё-таки. Даже не думал, что мой вопрос вызовет такой интерес. Спасибо за детальные ответы! Но вопрос остался нерешённым, или как? получилось у кого-то? Счас попробую сам понять. скомпилировать, дай-бог - запустить.... Не обязательно, тогда. наверное LPT мучать, может USB будет попроще. хотя. о чём я разсуждаю, мне. по всей вероятности. надо ещё подучиться. чтобы понимать ответы на свои вопросы. Ещё раз спасибо. что приняли активное участие в обсуждении этого топика! Но. вопрос. я так понял. пока не решён! |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
1) Открываешь консоль (Пуск->Программы->Стандартные->Коммандная строка) 2) Идешь в директорию, где у тебя лежит inpout32.dll (комманда cd путь...) 3) Набираешь implib inpout32.lib inpout32.dll
Кстати, если делать самому, то лучше брать FT245 - из нее получится LPT порт, а у него ног для зажигания лампочек больше, чем у RS232 ![]() |
|||
|
||||
new_web |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Сделал. Изменил. Скомпилировал. В предвкушении праздника запускаю и [Linker Error] Unresolved external '__stdcall Out32(short, short)' referenced from E:\CPLUSPLUS\CONTROLS\UNIT1.OBJ что тут не так?
В этом коде я убрал while(1)// компилятор предупреждал о недостижимом коде. а пример брал с http://www.pcports.ru/articles/2.php он. для VC++ 6 Подкиньте работающий код на билдере плиз. Ведь так мало до мечты осталось! ![]()
Наверное. я где-то в самом начале слишком много внимания акцентировал на лампочке, имея ввиду лишь получить выход на порте. увидеть это с помощью светодиода. я знаю, как потом с помощью оптопары подключить лампочку, 10 лампочек, 100 лампочек. Паяльник работает, у меня программа не работает. Компилируется, но не запускается, чувствую, что тут разницав диалектах билдера и VC++ 6 или...? |
||||||
|
|||||||
Den64 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 6.4.2006 Где: Курск Репутация: 1 Всего: 2 |
Поищи на ветке системное программирование, наверняка подобная задача решена..
--------------------
Инагда пишу звуками. |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Замени в программе #include "h.h" на
|
||||||
|
|||||||
new_web |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Не работает, к сожалению - компилируется но, всё таже ошибка! [Linker Error] Unresolved external 'Out32' referenced from E:\CPLUSPLUS\CONTROLS\UNIT1.OBJ Пробовал переставлять в разные места, не получается, не знаю. что делать, наверное действительно надо будет обратиться в системное програмироание. я просматривал топики. пока что не нашёл ничего похожего. Это сообщение отредактировал(а) new_web - 6.2.2008, 23:08 |
||||
|
|||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Это уже другая ошибка. Позови implib с ключем -a: implib -a inpout32.lib inpout32.dll |
||||
|
|||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
||||
|
||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Помню, когда-то, я с помощью нескольких транзисторов, резонатора мог получить любой сигнал, а цифровой - так и подавно!
Я не понимал тогда, почему так трудно из компьютера, в котором миллиарды транзисторов, извлечь один простой сигнал, чтобы светодиод засветился! ![]() ![]() ![]() ![]() не понимаю и сейчас... Есть простое решение - удалить старые фильмы - скопировать диск С на D by Acronis, format C fat32... windows 98 install Builder6 install Осуществить мечту, а если нет, то значит. проблема в железе! Но! это проще на другом компике попробовать, могу на трёх, где билдер стоит! Но не сейчас, ибо застрял далеко дома - насморк и работа несовместимы! Но, может, проблема в железе? В настройках BIOS? Кому-то удалось засветить светодиод на LTP с помощью Builder6 в ХР? ![]() ![]() ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Кому то удалось ![]() Присоединённый файл ( Кол-во скачиваний: 40 ) ![]() |
|||
|
||||
Gordon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 9.7.2006 Репутация: 1 Всего: 6 |
new_web, посмотри тут, правда не inpout32, но светодиод зажигает...
![]() Присоединённый файл ( Кол-во скачиваний: 64 ) ![]() -------------------- |
|||
|
||||
new_web |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
![]() ![]() ![]()
Работает! Огромное спасибо! Для тех. кому интересно выложу код,(и он работает) участника Gordon, - который мне помог!
Теперь, только фантазия может ограничить меня, как я могу это использовать! Если кому интересно. для чего мне это - пишите в личку! Спасибо всем, я многое узнал, многому научился, также узнал. что мне ещё учиться и учиться! Очень интересный и нужный форум, и его подраздел Программирование контроллеров. Так-или иначе у меня будет много вопросов на эту тему, а пока - пока - ибо ВОПРОС РЕШЁН |
||||
|
|||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Сделал ДЕМО програмку. которая устанавливает по-клику напряжение на любом выводе порта Data, Control, а также читает состояние всех портов. ведёт лог изменений состояний портов, с возможностью сохранения и печати.
Вот скрин: ![]() а вот и сама ссылка на программу, вместе с исходниками http://new-web.ucoz.ua/ltp_demo.rar Обновлён 20.02.08 При её разработке пользовался знаниями, которые подчерпнул здесь, в этой теме, а также в других темах этого форума. Вопрос! А как записать значение в порт Data извне? Пробовал подавать "+" на выводы, пробовал "землю" ничего не меняется! Даже, если Control замкнуть на "землю ", то значение на нём поменяется. А ещё странный "каприз" - если переключать старший регистр Data, то на выводах Control напряжение инвертируется. На самом деле, состояние Control при изменении любого регистра Data обнуляется(отредактировано мной позже) А если замкнуть Status на землю (там всегда 1 на выводах) то вообще все порты бесятся, мигают. - это драйвер виндовс думает, что ему всунули что-то, потом успокаивается. Но, надо спросить. а где действие этого драйвера заканчивается, на что он влияет.,и как его можно деактивировать? Буду рад видеть ваши отклики! Теперь осталось только железо подсоеденить, да и програмно описать мудрую мысль... ![]() Склонен считать своё первоё знакомство с контроллерами удачным! ![]() Это сообщение отредактировал(а) new_web - 20.2.2008, 06:39 |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Стандартный LPT не поддерживает ввод данных через Data ![]() ![]() ![]()
Действительно странный - такого быть не должно
![]() |
||||||
|
|||||||
new_web |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
в 5 бит? тоесть надо писать значение в тот бит, который недоступен на выводе? их там 4 всего, но ещё 4 без выводов, старшие... И как оно тогда должно записаться в Data? если на выводах ноль, и подам плюс, то на том выводе будет один, по-идее. а если там 1, то надо ноль подать, чтобы изменить? Где можно почитать доку, разный хелп по этой теме?
Помедленней. пожалуйста. я записываю ![]() Если серьёзно. то как это понимать? Что это значит? Это сообщение отредактировал(а) new_web - 19.2.2008, 12:53 |
||||
|
|||||
xvr |
|
||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Да, именно так
![]() http://www.thaiio.com/parallelportinfo.html
Ищи в google IEEE 1284 - получишь МОРЕ ссылок |
||||||||||||
|
|||||||||||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
ДА, действительно, ссылок море, правда, подавляющее большинство всё на английском, его я читаю куда медленней...
Есть где-нибуть толковая спецификация на русском? И пока я не нашёл примера, как оно будет записываться в Data порт, нужно мне ещё много прочитать ,чтобы понять, разобраться... Я пробовал Control 5 бит. и 4 бит, перепробовал вс комбинацию... ни разу подача напряжения на Data не срабатывала, чтобы там сигнал изменился... а ещё получается. что в Control можно записать не больше 63, тоесть 2 старших бита недоступны А ещё я ошибся выше
состояние Control при изменении любого регистра Data обнуляется - я немного обновил програмку. теперь она корректней работает, но я чувствую. что там ещё есть баги. посмотрел бы кто???))) Было бы проще на каком нибуть конкретном примере увидеть работу, пощупать светодиодом... ![]() Это сообщение отредактировал(а) new_web - 20.2.2008, 05:04 |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
У тебя в программе запись в control ограничена 5ю битами
Посмотрел, в методах ResetDataValueLtp и ResetControlValueLtp написан полный бред ![]() |
||||||
|
|||||||
new_web |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Ну, я согласен, что идею, реализованную в вышеприведённых методах можно было оформить лучшим образом. Теперь. собственно, что он делает: Он, метод, принимает клик от соответствующего Shape, изменяет состояние соответствующего вывода порта. Если Shape светит, и на нём кликнуть, то он потухнет, и наоборот, в зависимости. от значения порта
Смею уверить. это не бред ,пусть вся прога бредовая, но, именно эта часть кода
есть моя маленькая гордость, жаль, что Вы не увидели красоты в ней, жаль, что я, не могу доступными словами донести её действие. А делает она всего лишь то, что изменяет значения порта так, чтобы изменилось состояние конкретного бита, в нашем случае, это Tag, не изменяя состояния других битов Вы можете покликать на кружочках Shape, чтобы всё понять... Весьма поверхостные знания битовых операторов я подчерпнул из книги Р.Дэвиса "С++ для чайников", ст 52 Глава 4 "Зачем придуманы эти глупые операторы". Поскольку программа притерпела изменения, благодаря знаниям из http://forum.vingrad.ru/forum/topic-196064...y1417670/0.html то методы ResetDataValueLtp и ResetControlValueLtp стало возможным объеденить в один, но это уже из серии "Для НУБОВ - Теория постороения классов" - поскольку у меня своих классов, созданных, за душой несколько голодных сирот, то я имею радость от надежды, что мои классы, со временем, станут похожи на классы. ![]() Верю, но никак не могу найти где... ![]() Не подскажете? ![]() Это сообщение отредактировал(а) new_web - 20.2.2008, 13:21 |
||||||
|
|||||||
xvr |
|
||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Пардон, не заметил, что цикл пустой. Конечно, этим кодом можно гордится, но я бы не стал ![]()
И вообще рекомендую ГЛУБОКО ознакомится с битовыми операциями, мир стане проще ![]()
Я немного не прав - не запись, а инициализация массива (это ошибка, но на работу с control регистром влиять не должна) UnitImageLPT.cpp 55: for(int i=0;i<[B]4;i++)bControlIndicator[i]=false;[/B] Кстати, ЧИТАТЬ control регистр дело совершенно бесполезное - он не обязан возвращать то, что в него было записано ![]() |
||||||||||||
|
|||||||||||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
![]() ![]() Действительно, очень красиво! Очевидно, мне стоило быть более сдержанным в оценке своих достижений, но как говорится,- "что написано топором..." да, но это всего лишь конструктор, в котором они обнуляются при загрузке програмы. А дальше они(индикаторы) должны реагировать, по логике работы програмы, если значение Control будет > 63?
Тоесть, надо самому помнить значение? Но, ведь до 63 читает исправно! И самая главная проблема, как записать в Data извне? Результат - надо читать инфу |
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Должны, но лучше инициализировать ![]()
|
||||||||
|
|||||||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Как оно должно придти снаружи? По идее, если я подам 5 Вольт на любой регистр Data, при включённым режиме ввода, если там 0, то там должна случиться еденица, и читаться еденица в этом регистре? Если там 1, то надо подать ноль? Так? Я правильно считаю? Пробовал, ставил, и не раз! Что надо подать в Data? Я пробовал "+" от Status, пробовал "+" от Control, пробовал "+" от другого регистра Data даже! Ничего в Data не меняется. Пробовал на заведомо trueрегисты Data подавать ноль - соединял с землёй - тоже никакого эффекта. Может. просто надо взять отдельные 5 вольт - логическая 1 - с отдельного источника, с батарейки? Хотя. какая тут разница, ведь, если 1 пришёл, то неважно, откуда он пришёл...или порт так устроен, что нельзя с одного вывода одного порта подавать напряжение на другие? Думая. что в программе остались баги, пробовал в консоли ![]() безрезультатно! Может, в самих биллиотеках winio замут? |
|||
|
||||
xvr |
|
||||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Если перевести Data в режим чтения, то на них не будет ни 0 ни 1 - они станут ВХОДАМИ. Какое напряжение на них подашь (от чего угодно, хоть от батарейки) - такой сигнал и прочтется.
Есть вариант, что LPT не поддерживает чтение (посмотри, какой режим LPT стоит в BIOS'е - должен быть EPP или ECP)
![]() Выложи код, как пробовал в консоли, посмотрю. |
||||||||||||||
|
|||||||||||||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Да! Попробовал на другом компе, на работе - при установке 5-го бита Control в 1 все биты
Data становятся 1 и записать в них можно извне ![]() ![]() Они начинают работать подобно порту Status! Значит причина была в BIOS или в старом железе, у меня дома старенький компик, в BIOS не смотрел. так как прочёл сообщение
уже здесь! И, если бы не один ньюанс, то вопрос можно было бы считать окончательно закрытым! - Переключаем регистр Data на приём. Все они(регистры, биты) устанавливаются в один. Работает Data, в режиме приёма, подобно порту Status - если подать землю -будет ноль - убрать землю - становится еденица! так ведь должно быть? А вот, собственно, и ньюанс - в своей программе, посредством ввода кликом по UpDown мне не получается записать в Data ничего, если флаг С4 Control включён - так оно и должно быть. по-идее. Но, когда я кликаю по Shape я меняю значение Data, а флаг C4 в Control обнуляется. Как это понимать? Это опять баг программы? - Но, ведь для доступа я использую одну и туже функцию. И ещё один - теперь в Control минимальное значение 192 а максимальное 255 -просто два крайних регистра засветились - но доступу к ним, похоже, что нет. Кажется, именно от спецификации здесь всё зависело. Но, в любом случае, я могу писать в Data! ![]() Огромное спасибо всем! Вопрос решён, но тема, думаю не закрыта, так как многое пока не ясно! Какая максимальная частота Data, Status,Control? С какой скоростью можно писать/читать? |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Так может быть (но не гарантируется). Что бы было так гарантированно - в порт Data надо подавать напряжения 0 или +5В (а не оставлять их болтаться в воздухе)
В режиме EPP обещают до 2MB/s (реально получается меньше) |
||||||
|
|||||||
new_web |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
Вообще-то, только на WinIO у меня заработало, на других не шло..смотри выше... А как получить прямой доступ, не из под виндовс? |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
"Вы не любите кошек?! Да полно, вы просто не умеете их готовить!" ![]() Через любой драйвер из вышеперечисленных можно получить доступ к портам, и то, что 'не получилось' говорит о 'коэффициенте кривизны рук', а не о рабостоспособности драйверов ![]() Впрочем, любой другой драйвер не будет быстрее, чем WinIO, так что разници тут никакой нет. Впрочем, я не прав - есть 2 драйвера, которые могут дать более быстрый доступ:
![]() |
||||||
|
|||||||
new_web |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
= true Ибо это так((... Кто ж знал, что я не знаком с азбучными истинами, а подключил WinIO потому, что читал инструкцию: Gordon
Вот я и додумался добавить inpout32... ![]() inpout32-Решён ![]() xvr, Спасибо! |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |