Visual Basic 6.0 технологии управления LPT

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dany
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 22.08.2008 (Пт) 11:11

Visual Basic 6.0 технологии управления LPT

Сообщение Dany » 21.09.2008 (Вс) 16:52

Порт LPT является универсальным портом, через который можно управлять внешними устройтвами. Помогите пожалуйста найти код для управления электронным моторчиком в одну и вторую сторону. :?: :?: :?:
Работа очень интересная, но мало информации... :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Visual Basic 6.0 технологии управления LPT

Сообщение Хакер » 21.09.2008 (Вс) 17:31

Код нужно не искать, а писать.

Мы можем помочь написать его. (Подчеркиваю: не написать за тебя, а помочь тебе написать. В разумных пределах)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Dany
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 22.08.2008 (Пт) 11:11

Re: Visual Basic 6.0 технологии управления LPT

Сообщение Dany » 21.09.2008 (Вс) 19:03

У меня есть много различных файлов по работе с LPT портом, но нет материалов по подключению к нему других (своих устройств - 1-3 вольтовому моторчику). Какой он должен быть, какие провода надо припаивать и т.д.??? Работа моя заключается в создании автоматического инструмента для исследования и анализа деталей с использованием управления компьютера. Кострукция состоит из двух моторчиков и веб-камеры непосредственно для анализа. Моторчики позволяют перемещать полозье камеры по оси Х - вдоль и поперек на одеом из полозьев и цепляется камера. Программа которую я пытаюсь написать автоматически проводит анализ детали путем быстрого сканирования и обработки изображения с камеры. Я уже напрямую получаю изображение с камеры и кодом определяю размеры исследуемой детали, и при помощи нескольких фильтров очищаю дефекты изображения и частично воостанавоиваю резкость - это помогает выявить возможные дефекты, трещины, царапины, определить их количество и т.д. Есть небольшая проблемка с генерацией клавиши PrintScreen, нет набросков по получению изображения с экрана? :idea: :?:
По поводу кода: есть материалы, по замыканию сигнала и его размыканию. У меня есть моторчик и распаянный LPT.Какой сигнал куда посылать это пока остается большим вопросом. Возможно потребуется внешнее питание я еще не знаю. :?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Visual Basic 6.0 технологии управления LPT

Сообщение Antonariy » 21.09.2008 (Вс) 19:31

Я уже напрямую получаю изображение с камеры

нет набросков по получению изображения с экрана?
Интересно, мне одному здесь видится противоречие?

http://www.pcports.ru/Articles.php
Этот сайт — первый на яндексе по запросу "LPT". Там много чего.

Создается неоднозначное впечатление. С одной стороны автор не имеет ни малейшего представления ни об электронике LPT-порта, ни об электронике вообще, не знает, что PrintScreen = BitBlt, и не умеет использовать открытые источники информации. С другой стороны обработка и распознавание видеоинформации — это круто. Если правда.

Dany
Что должно нас заставить нас принять тебя всерьез?
Лучший способ понять что-то самому — объяснить это другому.

Dany
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 22.08.2008 (Пт) 11:11

Re: Visual Basic 6.0 технологии управления LPT

Сообщение Dany » 21.09.2008 (Вс) 20:46

Очень провокационный вопрос :evil:
Я уже 5 лет занимаюсь программированием. Имею дипломы высшей степени в области разработки программного обеспечения на Visual Basic 6.0. Учавствовал в международной конференции "Сахаровские чтения" и имею лицензированный диплом на различные программы связанные с растровой графикой, созданием фильтров на VB6. Занимаюсь различными разработками в области образования. Признаюсь честно, что с LPT портом практически не работал.
В настоящее время провожу исследования и разработку в области инженерной маханики. Такие вопросы возникают по ходу экстренного создания моего проекта. Очень зря вы совневаетесь - я пишу дипломные работы многим 5-курсникам АСУ на VB6 b VB2005EE. :wink:
Мое профильное направление - разработка программ в области растровой графики, образовательных программ, мультимедийных программ (1-н из дипломов) - программа объединяющая в себе каталогизатор и быструю обработку изображений... Вам этого мало, чтобы мне поверили??? :?: . Все материалы составляют гигабайтов 30. Различные разработки и программы. :o

Watts[]n!
Постоялец
Постоялец
 
Сообщения: 573
Зарегистрирован: 11.02.2007 (Вс) 0:19

Re: Visual Basic 6.0 технологии управления LPT

Сообщение Watts[]n! » 21.09.2008 (Вс) 23:22

Какой он должен быть, какие провода надо припаивать и т.д.?

Нужен каскад "транзистор -> оптрон (их ещё оптопарами называют)".
Что-то вроде этого:
http://trackerz.nxt.ru/Temp/Images/Simple_Lpt_Scheme.JPG
Cхему выдирал из другой, поэтому так коряво.
Если добавить симистор (или тиристор, но нужен будет диодный мост), то можно управлять чем угодно (лишь бы тиристор не пробило).
Можно и не использовать оптрон, просто поставить транзистор помощнее, но тогда повысится риск выхода Lpt-порта, а иногда и всей материнки, из строя.
По поводу кода - Antonariy уже дал очень хорошую ссылку (сайт pcports.ru), там есть примеры на Си, с использованием различных библиотек (giveio, inpout32 и ещё одна самопальная).

Dany
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 22.08.2008 (Пт) 11:11

Re: Visual Basic 6.0 технологии управления LPT

Сообщение Dany » 22.09.2008 (Пн) 18:44

Из некоторых источников - одной книги по Visual Basic 5.0. есть следующие листинги кода:
Код:

Public Sub Process()
Do While Status = True 'пока не нажата кнопка СТОП
NewValue = DlPortReadPortUchar(&H379) 'значение состояния
If NewValue <> PrevValue Then 'если да, то произошло замыкание
'или размыкание Pin10

MyLen = MyLen + 0.5 'счетчик
Form1.Text2.Text = CStr(MyLen)
End If
PrevValue = NewValue
Form1.Text1.Text = CStr(PrevValue)
DoEvents 'даем отдышаться
Loop
End Sub

Есть материалы по использованию библиотеки Inpout32:Option Explicit

Dim Value As Integer
Dim PortAddress As Integer
Private Sub cmdWriteToPort_Click()
'Write to a port.
Out PortAddress, Value
'Read back and display the result.
Text1.Text = Inp(PortAddress)
Value = Value + 1
If Value = 255 Then Value = 0
End Sub
Private Sub Form_Load()
'Test program for inpout32.dll
Value = 0
'Change PortAddress to match the port address to write to:
'(Usual parallel-port addresses are &h378, &h278, &h3BC)
PortAddress = &H378
End Sub

При замыкании Pin10 на землю, DlPortReadPortUchar(&H379) становится = 68, при размыкании - 126.

Нужно писать на основе этих материалов приработе с портами :?:
Мне нужно хотябы включить питание - замкнуть порт на определенный код, для подачи сигнала на моторчик - как :?: :?:

sergio
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 08.01.2008 (Вт) 3:28

Re: Visual Basic 6.0 технологии управления LPT

Сообщение sergio » 06.10.2008 (Пн) 0:17

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


управлять моторчиком с LPT напрямую не стоит, думаю ты это понимаешь :D собери схему согласования.. для примера могу предложить нечто вот такое.. Схема простая, не лишенная недостатков, но, думаю, довольно наглядная.
Изображение
Состоит из
- оптронов, за счет которых происходит гальваническая развязка с портом, дабы уберечь его от КЗ в схеме.
- Транзиков, собсстно для включения катушек реле,
- самих реле которые коммутируют питание моторчика.. за счет них же происходит реверс вращения, из-за смены полярности.
- концевых выключателей, которые останавливают движение при наезде на них полозьев с камерой.
и собственно самого двигателя..
Data1 и Data2 идут к разьемам порта, Gnd цепляешь к корпусу. Вот и все.. Питание схемы на твой выбор.
Также стоит исключить в схеме срабатывание двух реле одновременно, ибо это приведет к нежелательным последствиям.. можно сделать это программно.. посылая лишь один сигнал управления.. но вряд ли это надежно.
в общем пробуй.. должно получиться! :D тем более с твоим опытом.
да, что касается программирования..
запись и чтение порта осуществляется по нескольким адресам.. тебе нужен базовый &H378.
библиотек для работы с LPT хватает в принципе, пример dlportio.dll
вот ее объявление
Код: Выделить всё
Private Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Private Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

затем необходимо записать в порт число, чтобы подать питание 5V на 2-9 ножку твоего порта..
допустим ты хочешь подать питание на 3 ножку.. итак, исходя из двоичной системы 00000010.. т.о необходимое число 2. Стало быть..
Код: Выделить всё
DlPortWritePortUchar &H378, 2

после этого на 3 по счету ножке должно появиться 5V.
Отключить все это можно записав в порт 0.
Уф. :D вот тебе пища для размышлений.. и, как я уже говорил, дерзай))
Mongolian Chop Squad


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 62

    TopList