программа оболочка для win и программирование
программа оболочка для win и программирование
добрый день,
знаю, что на лпт порт можно как-то использовать, как источник входов-выходов сигналов, а есть ли какая-нибудь программа, в которой без навыков программирования можно составить простенькую логику, а так же сделать оболочку на компьютере, где было бы показаны эти сигналы.
идея сделать из старенького лаптопа систему сигнализации и другие интересные идеи "умного дома": контроль освещения, отопления и т.д..
Умею программировать Siemens-овские контроллеры S5 и S7. Но они слишком дороги, чтобы устанавливать дома.
знаю, что на лпт порт можно как-то использовать, как источник входов-выходов сигналов, а есть ли какая-нибудь программа, в которой без навыков программирования можно составить простенькую логику, а так же сделать оболочку на компьютере, где было бы показаны эти сигналы.
идея сделать из старенького лаптопа систему сигнализации и другие интересные идеи "умного дома": контроль освещения, отопления и т.д..
Умею программировать Siemens-овские контроллеры S5 и S7. Но они слишком дороги, чтобы устанавливать дома.
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: программа оболочка для win и программирование
я начинал было заниматься чем-то очень похожим на сабж, но не заметил какого-либо интереса публики - и бросил.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: программа оболочка для win и программирование
LPT порт уходит в прошлое. Если хотите что-то более интересное сделать - сделайте некий USB девайс, имеющий входы/выходы и управляющую программу на комп, чтобы реализовать подобную логику.
Думаю, что такая постановка вопроса куда более интересна
ЗЫ: Еще один аспект. Важно, чтобы все это дело работало на x64 системах, так как там есть определенные проблемы с драйверами(к примеру валяется программатор AVR910 от протосса без дела, так как лениво каждый раз перегружаться в тестовом режиме, проще было спаять еще один программатор от Петьки)
Думаю, что такая постановка вопроса куда более интересна
ЗЫ: Еще один аспект. Важно, чтобы все это дело работало на x64 системах, так как там есть определенные проблемы с драйверами(к примеру валяется программатор AVR910 от протосса без дела, так как лениво каждый раз перегружаться в тестовом режиме, проще было спаять еще один программатор от Петьки)
Re: программа оболочка для win и программирование
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 ; Когда закрывают окно, цикл будет прерван и прога завершит работу
Исзодник проги и скомпилированый исполняемый файл в архиве
- Вложения
-
- PB_LPT_Pins_1.rar
- (22.77 КБ) 452 скачивания
Re: программа оболочка для win и программирование
PB_EXPERT
а можете посоветовать, где об этом можно почитать, поучиться?
я в программировании ничего не смыслю, поэтому и просил программу, где можно составить логику типо этой:
ну и с какими-нибудь примочками, типа таймеров или триггеров.
Конечно, если посоветуете какой-нибудь онлайн учебник по простенькому программированию, то я буду рад учиться.
а на счёт лпт, думал так проще будет в усб хаб поставить несколько переходников и тем самым получить много входов/выходов
а можете посоветовать, где об этом можно почитать, поучиться?
я в программировании ничего не смыслю, поэтому и просил программу, где можно составить логику типо этой:
Код: Выделить всё
| in1 in2 out1
|---[ ]---[/]---( )
| out1 in3 out2
|---[ ]---[ ]---( )
|
Конечно, если посоветуете какой-нибудь онлайн учебник по простенькому программированию, то я буду рад учиться.
а на счёт лпт, думал так проще будет в усб хаб поставить несколько переходников и тем самым получить много входов/выходов
- Реклама
Re: программа оболочка для win и программирование
Тут всё зависит от языка программирования.можете посоветовать, где об этом можно почитать, поучиться?
Например, прога, выложеная выше, написана на PureBasic
Найти учебники можно здесь http://pure-basic.narod.ru/docs.html
То есть использовать переходники USB - LPT?а на счёт лпт, думал так проще будет в усб хаб поставить несколько переходников и тем самым получить много входов/выходов
Плохая идея!
Re: программа оболочка для win и программирование
мне бы тот, который проще освоить самостоятельно. Именно, чтобы можно было PC заставить руководить релюшками и чтобы PC получал сигналы от датчиков и согласно этим сигналам принимал необходимые действия.PB_EXPERT писал(а):Тут всё зависит от языка программирования.
пример: получил сигнал о включении -> включил свет (например) -> через 5 минут, если свет небыл выключен включил вытяжку в ванной -> если три часа и никаких изменений выключил свет и вытяжку, а если свет был выключен раньше, то вытяжка в ванной ещё работает 10 минут.
вот примерно такую логику я и хочу сделать.
почему? а что лучше сделать?То есть использовать переходники USB - LPT. Плохая идея!
Re: программа оболочка для win и программирование
PureBasic один из простых языков.мне бы тот, который проще освоить самостоятельно
Можете попробовать освоить.
Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он!почему? а что лучше сделать?
С виртуальным LPT портом можно попробовать работать через API (спец. функции операционной системы), но не факт что получится, ведь он расчитан для работы с принтером, а не для обмена произвольной информацией - драйвер может не поддерживать это.
Re: программа оболочка для win и программирование
а что тогда делать, если на компьютере имеются только USB порты? Есть варианты или забыть про эту затею?PB_EXPERT писал(а):Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он!
И спасибо большое за ссылки, уже изучаю.
Re: программа оболочка для win и программирование
Умеете программировать микроконтроллеры, типа PIC или AVR?memento писал(а):а что тогда делать, если на компьютере имеются только USB порты? Есть варианты или забыть про эту затею?PB_EXPERT писал(а):Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он!![]()
Если да, то или в самом контроллере создаёте USB клиента или используйте переходник USB - COM и связывайте контроллер с этим переходником. Ну а дальше уже микроконтроллер будет всем управлять и отправлять/принимать данные из компа.
Re: программа оболочка для win и программирование
Выход есть:) Сделать самому нечто подобное переходнику USB-LPT, как я писал выше) Как заметил уважаемый PB_EXPERT можно использовать что-то вроде FT232+контроллер и получить что-то не совсем совместимое, но ввиду отсутствия аналогов перспективное, при условии создания достойной документации и управляющей программы
Re: программа оболочка для win и программирование
Интересна, но и более сложна для меня. Но я готов учиться!Yftul писал(а):Если хотите что-то более интересное сделать - сделайте некий USB девайс, имеющий входы/выходы и управляющую программу на комп, чтобы реализовать подобную логику.
Думаю, что такая постановка вопроса куда более интересна
К сожалению, нет, но готов учиться. Умею программировать контроллеры (не микроPB_EXPERT писал(а):Умеете программировать микроконтроллеры, типа PIC или AVR?
c этим и будет сложнее, потому что программировать не умеюYftul писал(а):при условии создания достойной документации и управляющей программы
Спасибо, буду PureBasic изучать. А так же учиться микроконтроллеры паять и прошивать на работе долгими ночами...
Подскажите пожалуйста, что конкретно может подойти под мои нужды? Ссылками статьями.
Спасибо за помощь!
Re: программа оболочка для win и программирование
Ну тогда нужно сделать HID устройство.Yftul писал(а): Важно, чтобы все это дело работало на x64 системах, так как там есть определенные проблемы с драйверами
Проблем с драйверами не будет.
Замутить устройство можно на PIC18F4550 или на одном из AVRов.
Re: программа оболочка для win и программирование
Вот и вырисовываются общие черты:)
Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программу
Девайсов таких(эмулирующих клавиатуру/джойстик/мышь и имеющих возможность зажигать светодиоды) пруд пруди:) можно сосредоточиться на написании программы и документировании.
Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программу
Re: программа оболочка для win и программирование
Работать с USB HID устройствами со стороны компа, не сложнее чем с LPT портом.
Вот немного переработаный предыдущий пример.
Из кода исключены строки, свазанные с работой с DLLкой "inpout32.dll"
И добавлен код, передачи информации HID устройству
Устройство идентифицируется по PID и VID.
Вот немного переработаный предыдущий пример.
Код: Выделить всё
; Для компиляции нужна библиотека 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 ; Когда закрывают окно, цикл будет прерван и прога завершит работуИ добавлен код, передачи информации 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- Вложения
-
- HID.rar
- (12.61 КБ) 413 скачиваний
Re: программа оболочка для win и программирование
То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки?Yftul писал(а):Вот и вырисовываются общие черты:)
Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программуДевайсов таких(эмулирующих клавиатуру/джойстик/мышь и имеющих возможность зажигать светодиоды) пруд пруди:) можно сосредоточиться на написании программы и документировании.
Re: программа оболочка для win и программирование
Держу в руках журнал "Радио" за март этого года. На странице 25 начинается статья "Обмен информацией с USB HID устройством". Схема состоит из единственного контроллера atmega88 и десятка деталей(резисторы, конденсаторы, стабилитроны, кварц).
На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
Re: программа оболочка для win и программирование
Нужно написать программу для микроконтроллера, которая будет анализировать команды от компа, полученые через USB и выполнять требуемые действия, скажем, чтение (или запись) информации в один из портов контроллера.memento писал(а): То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки?
Получится что-то наподобие LPT порта, но с интерфейсом USB.
Можно часть алгоритма перенести из проги на компе в микроконтроллер. В этом случае получится "умный" LPT порт на основе МК.
Re: программа оболочка для win и программирование
Здесь вот есть 2 кнопки и 4Yftul писал(а):На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
Re: программа оболочка для win и программирование
А для написания программы микроконтроллера достаточно знать бейсика или же программа там пишется исключительно на ассемблере?PB_EXPERT писал(а):Нужно написать программу для микроконтроллера, которая будет анализировать команды от компа, полученые через USB и выполнять требуемые действия, скажем, чтение (или запись) информации в один из портов контроллера.memento писал(а): То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки?
Получится что-то наподобие LPT порта, но с интерфейсом USB.
Можно часть алгоритма перенести из проги на компе в микроконтроллер. В этом случае получится "умный" LPT порт на основе МК.
Если так, то имея определённый тип микроконтроллера и готовую прошивку, то всё сводится лишь к написанию программы на бейсике, которая будет всем этим руководить?
В таком случае не думаю, что мне понадобится переносить часть алгоритма на МК. Просто где-нибудь скачать "универсальную" прошивку.
Уже пытаюсь разобраться с бейсиком. Пока что кажется всё дремучим лесом. Но может скоро снизойдёт озарение
20 страниц инструкции нужно переварить. Понимаю, что там не может быть всего, но я и не считаю, что моя задача очень уж сложная.
Ну, на такой случай у меня где-то валяется Siemens Logo!. Там как раз 6 входов и 4 выхода и программа его кажется мне простой. Мне же для моей задумки нужно побольше входов-выходов, а на S7 или модули разширения Logo! у меня денег нетYftul писал(а):На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них).
П.С. Понимаю, что разговор со мной, кажется вам разговором с деревом. Большое спасибо за терпение и за разъяснения.


