Форум программистов, компьютерный форум, киберфорум
Электродвигатели
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.52/97: Рейтинг темы: голосов - 97, средняя оценка - 4.52
31 / 30 / 7
Регистрация: 13.12.2010
Сообщений: 338
1

Управление ШД через LPT порт

22.04.2013, 21:41. Просмотров 17525. Ответов 59
Метки нет (Все метки)

Доброго времени суток!
Ничего подобного раньше не делал, поэтому прошу помощи
Задали мне написать программу, которая управляет шаговым двигателем (вращение в одну и другую сторону).
Как понял я - в lpt есть 8 выходов. Будем использовать те, которые обведены на картинке.
Есть в двигателе 4 обмотки (или это не обмотки?). Если по определенной схеме пускать на выходы сигнал (как я понял 5 Вольт) и "убирать" его (0 Вольт), то можно его вращать.
Подскажите пожалуйста, правильно ли я все понял и что стоит ещё учесть.
А для программистов вопрос - какие библиотеки (или драйвера) использовать? Слышал что на c# надо использовать inpout32.dll.
0
Миниатюры
Управление ШД через LPT порт  
Изображения
 
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2013, 21:41
Ответы с готовыми решениями:

Управление компьютером с пульта ДУ через Com порт.
Всем привет. Немного предыстории по данному проекту, так сказать, зачем (ведь в сети полно...

Управление LPT в WinXP
Здравствуете. Никак не могу добиться работы LPT в WinXP. Может кто-то решал подобную задачу и...

Прием данных через LPT-порт
подскажите как это можно выполнять и как написать программу!заранее спассибо

Подать питание на светодиод через LPT-порт
Вот возник такой вопрос. Хотелось бы сделать такую штуковину: нажимаешь на кнопку (подключена к LPT...

59
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 18:44 41
а dll файл также сохраняется да?
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
12.01.2014, 18:44 42
Цитата Сообщение от Alpout Посмотреть сообщение
а dll файл также сохраняется да?
Нет
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 18:54 43
блин как же не заметил)) надо везде прописать Option Explicit пусть ругается)

Добавлено через 3 минуты
Цитата Сообщение от The trick Посмотреть сообщение
Нет
я седня может плохо искал, но пока информативнго ничего не нашел насчет
Цитата Сообщение от The trick Посмотреть сообщение
Открывай порт, задавай скорость, и асинхронно пиши WriteFileEx в него данные.
а как примерно в VB выглядит такой код?
я уже понял, что нормально частоты мне не добиться с драйвером, пробывал увеличть приоритет. как оказалось что VB с приоритетом несовместим
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
12.01.2014, 20:26 44
Цитата Сообщение от Alpout Посмотреть сообщение
а как примерно в VB выглядит такой код?
Выглядит как обычная запись в файл, предварительно инициализировав скорость
Цитата Сообщение от Alpout Посмотреть сообщение
как оказалось что VB с приоритетом несовместим
Это неправда. Создавай большой буфер, и дописывай в него данные по необходимости, также как при воспроизведении звука.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 21:51 45
короче я рассмотрел 2-3 программы, у них использованы обыкновенные подобные библиотеки такие как inpout32.dll, dlport.dll и т.п., у всех проверил на ШД, и у всех наблюдались рывки!!! посмотрел на диспетчере задач, проц грузиться на 50%(у меня 2х ядерка, 2,5ГГц), а в моей экспериментальной программке наблюдается чуток чаще рывков(кстати также на 50% загруженность системы), а это я думаю, что из-за неграмотности написании программ, полагаю мне нужно убрать лишние процедуры и ДОМЫСЛИТЬ код. А вот МАЧ3, что меня оч удивило-это то что никаких рывков не наблюдается и проц работает как работало, т.е. не грузиться. Как им удалось такое сотворить! И кстати они походу не воспользовались подобных библиотек, по крайней мере в установке я не нашел!! Что еще заметил...может я ошибаюсь, но те программы которые установил оч похоже что они написаны на VB(или Delphi)., кроме МАЧ3.
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
12.01.2014, 21:56 46
Цитата Сообщение от Alpout Посмотреть сообщение
А вот МАЧ3, что меня оч удивило-это то что никаких рывков не наблюдается и проц работает как работало, т.е. не грузиться. Как им удалось такое сотворить!
Я тебе написал как надо попробывать сделать. У тебя запись будет идти параллельно с выполнением программы. Кури доки по WinApi, открытие порта и инициализация, асинхронная запись.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 22:11 47
Да тут роюсь, разбираюсь
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,112
Записей в блоге: 6
12.01.2014, 22:28 48
Цитата Сообщение от Alpout Посмотреть сообщение
это я думаю, что из-за неграмотности написании программ
Нет Это из-за того что винеда не ОС реального времени. Об этом уже писал. https://www.cyberforum.ru/visu... ost5535860
Рывки из-за того, что винда переключает задачи, т. е. ваша прога работает не всегда, а только тогда, когда винда решит передать ей немного процессорного времени.
Делайте USB станок и проблем будет меньше.
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
12.01.2014, 22:32 49
Цитата Сообщение от locm Посмотреть сообщение
Делайте USB станок и проблем будет меньше.
Можно поставить буфер в очередь и драйвер сам "скормит" его порту с нужной частотой, также как при програмировании звука.
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,112
Записей в блоге: 6
12.01.2014, 22:36 50
Цитата Сообщение от Alpout Посмотреть сообщение
МАЧ3
Эта прога использует свой драйвер.
Так что если хотите добиться таких же результатов, то придется разрабатывать драйвер для порта.

Не по теме:

В принципе драйвер можно написать на бейсике, но окнечно не на VB.



Добавлено через 1 минуту
Цитата Сообщение от The trick Посмотреть сообщение
Можно поставить буфер в очередь и драйвер сам "скормит" его порту с нужной частотой, также как при програмировании звука.
Это только в теории, но на практике, драйвер для принтера не будет работать корректно со станком хотя бы потому что от принтера идет обратная связь.
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
12.01.2014, 23:01 51
Цитата Сообщение от locm Посмотреть сообщение
Это только в теории, но на практике, драйвер для принтера не будет работать корректно со станком хотя бы потому что от принтера идет обратная связь.
Почему тогда его DLL работает? Там пишется через DeviceIoControl.
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,112
Записей в блоге: 6
12.01.2014, 23:03 52
Цитата Сообщение от The trick Посмотреть сообщение
Почему тогда его DLL работает?
InpOut32?
В ней есть драйвер для прямого доступа к порту.

Цитата Сообщение от The trick Посмотреть сообщение
Там пишется через DeviceIoControl
Где?
1
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 23:12 53
в принципе станок уже 2 года четко работает на драйвере inpout32.dll. Не на Мач3, а фирменная(чужая) программа, написанная на драйвере inpout32.dll. Чем я не доволен-это то что у меня чуток "грязнее" ихних работает. Если в ближайшее время не добьюсь, придется оставить так же и добить начатую прогу. Я уверен, что мои "рывки" на практике не испортит картину плазменной резки, но в душе не люблю я, когда что-то не работает на полную катушку, когда МОЖЕТ!
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
12.01.2014, 23:14 54
Цитата Сообщение от locm Посмотреть сообщение
Где?
В InpOut32
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,112
Записей в блоге: 6
12.01.2014, 23:26 55
Можете попробовать другой драйвер для прямого доступа к порту. Может улучшится стабильность.
В dll 4 функции:
PureBasic
1
2
3
4
Inp(PortAddress.u)
Out(PortAddress.u, Byte.a)
Status()
Version() ; Результат в виде Float числа.
Функция Inp() аналогичная функции Inp32(), а функция Out() аналогична Out32().
В архиве dll, примеры использования и исходники dll и драйверов (на бейсике) для 32 и 64 битных систем.
Попробуйте, вдруг стабильнее будет работать.

Цитата Сообщение от The trick Посмотреть сообщение
В InpOut32
Так и не понял что вы хотели сказать тем, что в InpOut32.dll управление производится через WinAPI DeviceIoControl().
0
Вложения
Тип файла: zip DriverIO x86 x64.zip (52.9 Кб, 20 просмотров)
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 23:28 56
Цитата Сообщение от locm Посмотреть сообщение
Эта прога использует свой драйвер.
Так что если хотите добиться таких же результатов, то придется разрабатывать драйвер для порта.
О-о-о тогда я пас , куда мне до них, эту прогу не 1 программист наверное писал...тогда останавлюсь с "рывками" и смирюсь с этим, ведь все-таки картину не портит Что меня смотивировало написать управляющую прогу, это когда я случайно наткнулся на эту работуvb_paint.zip, непомню откуда скачал Отсюда я понял, что у VB возможности большие, главное ЗАХОТЕТЬ Этому человеку то ли нечего было делать, то ли ктото заставил, или доказывал
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
12.01.2014, 23:42 57
Цитата Сообщение от locm Посмотреть сообщение
Функция Inp() аналогичная функции Inp32(), а функция Out() аналогична Out32()
проверил!!! как ни странно, работает ОДИНАКОВО. Короче оставляю рывки, уже смирился . Ужас 2 дня непрерывной работы, отмучался. Буду дописывать программу. Ну а если появятся мысли, идеи, или источник информации, тогда уж думаю много времени не займет, чтобы исправить код!
0
Модератор
8098 / 3035 / 805
Регистрация: 22.02.2013
Сообщений: 4,325
Записей в блоге: 78
13.01.2014, 00:50 58
Цитата Сообщение от locm Посмотреть сообщение
Так и не понял что вы хотели сказать тем, что в InpOut32.dll управление производится через WinAPI DeviceIoControl().
Я думал через стандартный драйвер. Через DeviceIoControl можно статусными ножками подергать напрямую. Можно замкнуть определенные ножки и должно все заработать штатными средствами. У самого нет LPT, поэтому проверить не могу.

Добавлено через 1 минуту
Цитата Сообщение от Alpout Посмотреть сообщение
проверил!!! как ни странно, работает ОДИНАКОВО. Короче оставляю рывки, уже смирился . Ужас 2 дня непрерывной работы, отмучался. Буду дописывать программу. Ну а если появятся мысли, идеи, или источник информации, тогда уж думаю много времени не займет, чтобы исправить код!
1. Компилируй в Native код со всеми видами оптимизации.
2. Объявляй апишки в тлб.
Все это ускорит выполнение программы.
0
0 / 0 / 0
Регистрация: 01.05.2013
Сообщений: 28
13.01.2014, 08:14 59
Цитата Сообщение от The trick Посмотреть сообщение
1. Компилируй в Native код со всеми видами оптимизации.
2. Объявляй апишки в тлб.
это уже для меня темный лес
0
31 / 30 / 7
Регистрация: 13.12.2010
Сообщений: 338
18.04.2014, 19:12  [ТС] 60
Цитата Сообщение от ViT(Vet@l) Посмотреть сообщение
короче говоря дошло время (только смогли найти шаговый двигатель+lpt) до тестирования.
Возникла проблема - ничего не работает. При чем аналогичные программы, которые по словам препода работали, выдают ошибку (что-то связанное с драйверами).
Нужны ли драйвера на lpt и есть ли такие в природе?
Проблема была в том, что необходимо было зайти под администратором
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2014, 19:12

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

Организация обмена данными через LPT-порт
разработайте программу определения адреса LPT - порта и вывода информации через LPT - порт, При...

Управление COM- и LPT-портами через API из VB
См. сабж. В Сети много примеров, но они или на Дельфи, или на Си. Пробую перенести в VB - не...

Управление через ИК порт
Уважаемые, интересуюсь таким вопросом. На современных девайсах имеется инфракрасный порт, вопрос...

Управление и контроль через COM-порт
Требуется подключить к компьютеру железку, которая будет иметь: - 1 вход (например, зажигать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.