Заголовок сообщения: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 11:18:30
Родился
Зарегистрирован: Вт май 18, 2010 11:07:19 Сообщений: 19
Рейтинг сообщения:0
добрый день,
знаю, что на лпт порт можно как-то использовать, как источник входов-выходов сигналов, а есть ли какая-нибудь программа, в которой без навыков программирования можно составить простенькую логику, а так же сделать оболочку на компьютере, где было бы показаны эти сигналы.
идея сделать из старенького лаптопа систему сигнализации и другие интересные идеи "умного дома": контроль освещения, отопления и т.д.. Умею программировать Siemens-овские контроллеры S5 и S7. Но они слишком дороги, чтобы устанавливать дома.
LPT порт уходит в прошлое. Если хотите что-то более интересное сделать - сделайте некий USB девайс, имеющий входы/выходы и управляющую программу на комп, чтобы реализовать подобную логику. Думаю, что такая постановка вопроса куда более интересна
ЗЫ: Еще один аспект. Важно, чтобы все это дело работало на x64 системах, так как там есть определенные проблемы с драйверами(к примеру валяется программатор AVR910 от протосса без дела, так как лениво каждый раз перегружаться в тестовом режиме, проще было спаять еще один программатор от Петьки)
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 12:52:13
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
memento писал(а):
знаю, что на лпт порт можно как-то использовать, как источник входов-выходов сигналов, а есть ли какая-нибудь программа, в которой без навыков программирования можно составить простенькую логику, а так же сделать оболочку на компьютере, где было бы показаны эти сигналы.
На самом деле, программирование под Windows это не так сложно как кажется! Вот код простой проги, управляющей пинами LPT1
Код:
If OpenLibrary(1, "inpout32.dll")=0 ; Открываем библиотеку inpout32.dll MessageRequester("", "Нет "+Chr(34)+"inpout32.dll"+Chr(34)+"", 64) End ; Завершение работы программы EndIf
Prototype Out32(Address, Value) ; Дакларация функции Out32 из inpout32.dll Global Out_LPT.Out32=GetFunction(1,"Out32")
Procedure SendLPT1() ; Процедура передачи данных в LPT1 Out.c=0 For i=8 To 1 Step -1 ; В цикле сканируются "флажки" (CheckBoxGadget) отвечающие за пины порта If GetGadgetState(i)=1 ; Определяем состояние "флажка" Out | 1 ; Операция "Логическое ИЛИ" Else Out & %11111110 ; Операция "Логическое И" EndIf If i>1 Out << 1 ; Сдвиг переменной на 1 бит влево EndIf Next i Out_LPT($378, Out) ; Данные в LPT1 EndProcedure ; Открываем окно OpenWindow(0,0,0,120,240,"lpt Pin", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible) Frame3DGadget(#PB_Any,20,10,80,180,"Pins") y=28 For i=1 To 8 CheckBoxGadget(i,36,y,50,16,"Pin "+Str(i)) ; "флажки" y+20 Next i ButtonGadget(9,6,210,110,24,"Отправить в LPT 1") ; Экранная кнопка HideWindow(0,0) ; Отображение окна на экране
Repeat ; Главный (оконный) цикл программы "Repeat - Until" Event=WaitWindowEvent() ; Идентификатор события If Event=#PB_Event_Gadget ; Произошло событие в гаджете Gadget=EventGadget() ; ID гаджета, в котором произошло событие If Gadget=9 ; Обнаруден клик по экранной кнопке SendLPT1() ; Процедура передачи информации по порт LPT1 EndIf EndIf Until Event=#PB_Event_CloseWindow ; Когда закрывают окно, цикл будет прерван и прога завершит работу
Скрин проги
Исзодник проги и скомпилированый исполняемый файл в архиве
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 13:31:57
Родился
Зарегистрирован: Вт май 18, 2010 11:07:19 Сообщений: 19
Рейтинг сообщения:0
PB_EXPERT а можете посоветовать, где об этом можно почитать, поучиться? я в программировании ничего не смыслю, поэтому и просил программу, где можно составить логику типо этой:
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 13:49:07
Родился
Зарегистрирован: Вт май 18, 2010 11:07:19 Сообщений: 19
Рейтинг сообщения:0
PB_EXPERT писал(а):
Тут всё зависит от языка программирования.
мне бы тот, который проще освоить самостоятельно. Именно, чтобы можно было PC заставить руководить релюшками и чтобы PC получал сигналы от датчиков и согласно этим сигналам принимал необходимые действия.
пример: получил сигнал о включении -> включил свет (например) -> через 5 минут, если свет небыл выключен включил вытяжку в ванной -> если три часа и никаких изменений выключил свет и вытяжку, а если свет был выключен раньше, то вытяжка в ванной ещё работает 10 минут. вот примерно такую логику я и хочу сделать.
Цитата:
То есть использовать переходники USB - LPT. Плохая идея!
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 13:59:17
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
Цитата:
мне бы тот, который проще освоить самостоятельно
PureBasic один из простых языков. Можете попробовать освоить.
Цитата:
почему? а что лучше сделать?
Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он!
С виртуальным LPT портом можно попробовать работать через API (спец. функции операционной системы), но не факт что получится, ведь он расчитан для работы с принтером, а не для обмена произвольной информацией - драйвер может не поддерживать это.
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 14:11:15
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
memento писал(а):
PB_EXPERT писал(а):
Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он!
а что тогда делать, если на компьютере имеются только USB порты? Есть варианты или забыть про эту затею?
Умеете программировать микроконтроллеры, типа PIC или AVR? Если да, то или в самом контроллере создаёте USB клиента или используйте переходник USB - COM и связывайте контроллер с этим переходником. Ну а дальше уже микроконтроллер будет всем управлять и отправлять/принимать данные из компа.
Выход есть:) Сделать самому нечто подобное переходнику USB-LPT, как я писал выше) Как заметил уважаемый PB_EXPERT можно использовать что-то вроде FT232+контроллер и получить что-то не совсем совместимое, но ввиду отсутствия аналогов перспективное, при условии создания достойной документации и управляющей программы
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 14:25:18
Родился
Зарегистрирован: Вт май 18, 2010 11:07:19 Сообщений: 19
Рейтинг сообщения:0
Yftul писал(а):
Если хотите что-то более интересное сделать - сделайте некий USB девайс, имеющий входы/выходы и управляющую программу на комп, чтобы реализовать подобную логику. Думаю, что такая постановка вопроса куда более интересна
Интересна, но и более сложна для меня. Но я готов учиться!
PB_EXPERT писал(а):
Умеете программировать микроконтроллеры, типа PIC или AVR?
К сожалению, нет, но готов учиться. Умею программировать контроллеры (не микро типо Siemens, Omron, Vipa...
Yftul писал(а):
при условии создания достойной документации и управляющей программы
c этим и будет сложнее, потому что программировать не умею
Спасибо, буду PureBasic изучать. А так же учиться микроконтроллеры паять и прошивать на работе долгими ночами... Подскажите пожалуйста, что конкретно может подойти под мои нужды? Ссылками статьями.
Вот и вырисовываются общие черты:) Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программу Девайсов таких(эмулирующих клавиатуру/джойстик/мышь и имеющих возможность зажигать светодиоды) пруд пруди:) можно сосредоточиться на написании программы и документировании.
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 16:17:12
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
Работать с USB HID устройствами со стороны компа, не сложнее чем с LPT портом. Вот немного переработаный предыдущий пример.
Код:
; Для компиляции нужна библиотека HID_Lib ; http://pure-basic.narod.ru/libs.html#HID_Lib #USB_PID=$1 ; USB идентификаторы устройства #USB_VID=$1234
Procedure Send_USB_HID() ; Процедура передачи данных в USB HID устройство Out.c=0 ; Переменная (один байт) Dim Buffer.c(1) ; Массив однобайтных переменных
For i=8 To 1 Step -1 ; В цикле сканируются "флажки" (CheckBoxGadget) отвечающие за пины порта If GetGadgetState(i)=1 ; Определяем состояние "флажка" Out | 1 ; Операция "Логическое ИЛИ" Else Out & %11111110 ; Операция "Логическое И" EndIf If i>1 Out << 1 ; Сдвиг переменной на 1 бит влево EndIf Next i
HID_Handle=HID_Lib_OpenDevice(#USB_PID, #USB_VID) ; Открываем USB HID устройство If HID_Handle ; Успешно получен доступ к устройству Buffer(0)=0 Buffer(1)=Out ; Копирование данных из переменной в массив HID_Lib_WriteDevice(HID_Handle, @Buffer(), 2) ; Передача данных HID устройству HID_Lib_CloseDevice(HID_Handle) ; Закрытие доступа к устройству Else MessageRequester("PID = 1; VID = 1234 H", "Нет требуемого HID устройства!", 16) EndIf EndProcedure ; Открываем окно OpenWindow(0,0,0,120,240,"HID", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible) Frame3DGadget(#PB_Any,20,10,80,180,"Биты") y=28 For i=1 To 8 CheckBoxGadget(i,30,y,60,16,"Бит № "+Str(i)) ; "флажки" y+20 Next i ButtonGadget(9,2,210,116,24,"Отправить в USB HID") ; Экранная кнопка HideWindow(0,0) ; Отображение окна на экране
Repeat ; Главный (оконный) цикл программы "Repeat - Until" Event=WaitWindowEvent() ; Идентификатор события If Event=#PB_Event_Gadget ; Произошло событие в гаджете Gadget=EventGadget() ; ID гаджета, в котором произошло событие If Gadget=9 ; Обнаруден клик по экранной кнопке Send_USB_HID() ; Процедура передачи информации USB HID устройствe EndIf EndIf Until Event=#PB_Event_CloseWindow ; Когда закрывают окно, цикл будет прерван и прога завершит работу
Из кода исключены строки, свазанные с работой с DLLкой "inpout32.dll" И добавлен код, передачи информации HID устройству
Код:
HID_Handle=HID_Lib_OpenDevice(#USB_PID, #USB_VID) ; Открываем USB HID устройство If HID_Handle ; Успешно получен доступ к устройству Buffer(0)=0 Buffer(1)=Out ; Копирование данных из переменной в массив HID_Lib_WriteDevice(HID_Handle, @Buffer(), 2) ; Передача данных HID устройству HID_Lib_CloseDevice(HID_Handle) ; Закрытие доступа к устройству Else MessageRequester("PID = 1; VID = 1234 H", "Нет требуемого HID устройства!", 16) EndIf
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 19:20:55
Родился
Зарегистрирован: Вт май 18, 2010 11:07:19 Сообщений: 19
Рейтинг сообщения:0
Yftul писал(а):
Вот и вырисовываются общие черты:) Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программу Девайсов таких(эмулирующих клавиатуру/джойстик/мышь и имеющих возможность зажигать светодиоды) пруд пруди:) можно сосредоточиться на написании программы и документировании.
То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки?
Держу в руках журнал "Радио" за март этого года. На странице 25 начинается статья "Обмен информацией с USB HID устройством". Схема состоит из единственного контроллера atmega88 и десятка деталей(резисторы, конденсаторы, стабилитроны, кварц).
На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 19:35:50
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
memento писал(а):
То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки?
Нужно написать программу для микроконтроллера, которая будет анализировать команды от компа, полученые через USB и выполнять требуемые действия, скажем, чтение (или запись) информации в один из портов контроллера. Получится что-то наподобие LPT порта, но с интерфейсом USB. Можно часть алгоритма перенести из проги на компе в микроконтроллер. В этом случае получится "умный" LPT порт на основе МК.
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 19:57:26
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
Yftul писал(а):
На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
Заголовок сообщения: Re: программа оболочка для win и программирование
Добавлено: Вт май 18, 2010 20:07:51
Родился
Зарегистрирован: Вт май 18, 2010 11:07:19 Сообщений: 19
Рейтинг сообщения:0
PB_EXPERT писал(а):
memento писал(а):
То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки?
Нужно написать программу для микроконтроллера, которая будет анализировать команды от компа, полученые через USB и выполнять требуемые действия, скажем, чтение (или запись) информации в один из портов контроллера. Получится что-то наподобие LPT порта, но с интерфейсом USB. Можно часть алгоритма перенести из проги на компе в микроконтроллер. В этом случае получится "умный" LPT порт на основе МК.
А для написания программы микроконтроллера достаточно знать бейсика или же программа там пишется исключительно на ассемблере? Если так, то имея определённый тип микроконтроллера и готовую прошивку, то всё сводится лишь к написанию программы на бейсике, которая будет всем этим руководить? В таком случае не думаю, что мне понадобится переносить часть алгоритма на МК. Просто где-нибудь скачать "универсальную" прошивку.
Уже пытаюсь разобраться с бейсиком. Пока что кажется всё дремучим лесом. Но может скоро снизойдёт озарение ... 20 страниц инструкции нужно переварить. Понимаю, что там не может быть всего, но я и не считаю, что моя задача очень уж сложная.
Yftul писал(а):
На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
Ну, на такой случай у меня где-то валяется Siemens Logo!. Там как раз 6 входов и 4 выхода и программа его кажется мне простой. Мне же для моей задумки нужно побольше входов-выходов, а на S7 или модули разширения Logo! у меня денег нет . Тем более графический интерфейс виндовса более симпатичен
П.С. Понимаю, что разговор со мной, кажется вам разговором с деревом. Большое спасибо за терпение и за разъяснения.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения