Форум РадиоКот https://radiokot.ru/forum/ |
|
программа оболочка для win и программирование https://radiokot.ru/forum/viewtopic.php?f=24&t=30270 |
Страница 1 из 4 |
Автор: | memento [ Вт май 18, 2010 11:18:30 ] |
Заголовок сообщения: | программа оболочка для win и программирование |
добрый день, знаю, что на лпт порт можно как-то использовать, как источник входов-выходов сигналов, а есть ли какая-нибудь программа, в которой без навыков программирования можно составить простенькую логику, а так же сделать оболочку на компьютере, где было бы показаны эти сигналы. идея сделать из старенького лаптопа систему сигнализации и другие интересные идеи "умного дома": контроль освещения, отопления и т.д.. Умею программировать Siemens-овские контроллеры S5 и S7. Но они слишком дороги, чтобы устанавливать дома. |
Автор: | ARV [ Вт май 18, 2010 11:43:07 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
я начинал было заниматься чем-то очень похожим на сабж, но не заметил какого-либо интереса публики - и бросил. |
Автор: | Yftul [ Вт май 18, 2010 12:21:42 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
LPT порт уходит в прошлое. Если хотите что-то более интересное сделать - сделайте некий USB девайс, имеющий входы/выходы и управляющую программу на комп, чтобы реализовать подобную логику. Думаю, что такая постановка вопроса куда более интересна ![]() ЗЫ: Еще один аспект. Важно, чтобы все это дело работало на x64 системах, так как там есть определенные проблемы с драйверами(к примеру валяется программатор AVR910 от протосса без дела, так как лениво каждый раз перегружаться в тестовом режиме, проще было спаять еще один программатор от Петьки) |
Автор: | PB_EXPERT [ Вт май 18, 2010 12:52:13 ] | ||
Заголовок сообщения: | 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 ; Когда закрывают окно, цикл будет прерван и прога завершит работу Скрин проги ![]() Исзодник проги и скомпилированый исполняемый файл в архиве
|
Автор: | memento [ Вт май 18, 2010 13:31:57 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
PB_EXPERT а можете посоветовать, где об этом можно почитать, поучиться? я в программировании ничего не смыслю, поэтому и просил программу, где можно составить логику типо этой: Код: | in1 in2 out1 |---[ ]---[/]---( ) | out1 in3 out2 |---[ ]---[ ]---( ) | ну и с какими-нибудь примочками, типа таймеров или триггеров. Конечно, если посоветуете какой-нибудь онлайн учебник по простенькому программированию, то я буду рад учиться. а на счёт лпт, думал так проще будет в усб хаб поставить несколько переходников и тем самым получить много входов/выходов |
Автор: | PB_EXPERT [ Вт май 18, 2010 13:39:14 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Цитата: можете посоветовать, где об этом можно почитать, поучиться? Тут всё зависит от языка программирования.Например, прога, выложеная выше, написана на PureBasic Найти учебники можно здесь http://pure-basic.narod.ru/docs.html Цитата: а на счёт лпт, думал так проще будет в усб хаб поставить несколько переходников и тем самым получить много входов/выходов То есть использовать переходники USB - LPT? Плохая идея! |
Автор: | memento [ Вт май 18, 2010 13:49:07 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
PB_EXPERT писал(а): Тут всё зависит от языка программирования. мне бы тот, который проще освоить самостоятельно. Именно, чтобы можно было PC заставить руководить релюшками и чтобы PC получал сигналы от датчиков и согласно этим сигналам принимал необходимые действия. пример: получил сигнал о включении -> включил свет (например) -> через 5 минут, если свет небыл выключен включил вытяжку в ванной -> если три часа и никаких изменений выключил свет и вытяжку, а если свет был выключен раньше, то вытяжка в ванной ещё работает 10 минут. вот примерно такую логику я и хочу сделать. Цитата: То есть использовать переходники USB - LPT. Плохая идея! почему? а что лучше сделать? |
Автор: | PB_EXPERT [ Вт май 18, 2010 13:59:17 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Цитата: мне бы тот, который проще освоить самостоятельно PureBasic один из простых языков.Можете попробовать освоить. Цитата: почему? а что лучше сделать? Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он!С виртуальным LPT портом можно попробовать работать через API (спец. функции операционной системы), но не факт что получится, ведь он расчитан для работы с принтером, а не для обмена произвольной информацией - драйвер может не поддерживать это. |
Автор: | memento [ Вт май 18, 2010 14:05:47 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
PB_EXPERT писал(а): Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он! а что тогда делать, если на компьютере имеются только USB порты? Есть варианты или забыть про эту затею? ![]() И спасибо большое за ссылки, уже изучаю. |
Автор: | PB_EXPERT [ Вт май 18, 2010 14:11:15 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
memento писал(а): PB_EXPERT писал(а): Потому что с ним нельзя работать как с обычным портом, ведь на самом деле порт не существует в адресном пространстве компа - виртуальный он! а что тогда делать, если на компьютере имеются только USB порты? Есть варианты или забыть про эту затею? ![]() Если да, то или в самом контроллере создаёте USB клиента или используйте переходник USB - COM и связывайте контроллер с этим переходником. Ну а дальше уже микроконтроллер будет всем управлять и отправлять/принимать данные из компа. |
Автор: | Yftul [ Вт май 18, 2010 14:11:46 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Выход есть:) Сделать самому нечто подобное переходнику USB-LPT, как я писал выше) Как заметил уважаемый PB_EXPERT можно использовать что-то вроде FT232+контроллер и получить что-то не совсем совместимое, но ввиду отсутствия аналогов перспективное, при условии создания достойной документации и управляющей программы |
Автор: | memento [ Вт май 18, 2010 14:25:18 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Yftul писал(а): Если хотите что-то более интересное сделать - сделайте некий USB девайс, имеющий входы/выходы и управляющую программу на комп, чтобы реализовать подобную логику. Думаю, что такая постановка вопроса куда более интересна ![]() Интересна, но и более сложна для меня. Но я готов учиться! ![]() PB_EXPERT писал(а): Умеете программировать микроконтроллеры, типа PIC или AVR? К сожалению, нет, но готов учиться. Умею программировать контроллеры (не микро ![]() Yftul писал(а): при условии создания достойной документации и управляющей программы c этим и будет сложнее, потому что программировать не умею ![]() Спасибо, буду PureBasic изучать. А так же учиться микроконтроллеры паять и прошивать на работе долгими ночами... ![]() Подскажите пожалуйста, что конкретно может подойти под мои нужды? Ссылками статьями. ![]() Спасибо за помощь! |
Автор: | PB_EXPERT [ Вт май 18, 2010 14:26:31 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Yftul писал(а): Важно, чтобы все это дело работало на x64 системах, так как там есть определенные проблемы с драйверами Ну тогда нужно сделать HID устройство.Проблем с драйверами не будет. ![]() Замутить устройство можно на PIC18F4550 или на одном из AVRов. |
Автор: | Yftul [ Вт май 18, 2010 14:32:03 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Вот и вырисовываются общие черты:) Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программу ![]() |
Автор: | PB_EXPERT [ Вт май 18, 2010 16:17:12 ] | ||
Заголовок сообщения: | Re: программа оболочка для win и программирование | ||
Работать с 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 Устройство идентифицируется по PID и VID.
|
Автор: | memento [ Вт май 18, 2010 19:20:55 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Yftul писал(а): Вот и вырисовываются общие черты:) Взять за основу HID девайс хоть на PIC хоть на AVR и написать для него, а не для LPT порта управляющую программу ![]() То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки? |
Автор: | Yftul [ Вт май 18, 2010 19:33:00 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Держу в руках журнал "Радио" за март этого года. На странице 25 начинается статья "Обмен информацией с USB HID устройством". Схема состоит из единственного контроллера atmega88 и десятка деталей(резисторы, конденсаторы, стабилитроны, кварц). На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них). |
Автор: | PB_EXPERT [ Вт май 18, 2010 19:35:50 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
memento писал(а): То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки? Нужно написать программу для микроконтроллера, которая будет анализировать команды от компа, полученые через USB и выполнять требуемые действия, скажем, чтение (или запись) информации в один из портов контроллера.Получится что-то наподобие LPT порта, но с интерфейсом USB. Можно часть алгоритма перенести из проги на компе в микроконтроллер. В этом случае получится "умный" LPT порт на основе МК. ![]() |
Автор: | PB_EXPERT [ Вт май 18, 2010 19:57:26 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
Yftul писал(а): На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них). Здесь вот есть 2 кнопки и 4 ![]() ![]() |
Автор: | memento [ Вт май 18, 2010 20:07:51 ] |
Заголовок сообщения: | Re: программа оболочка для win и программирование |
PB_EXPERT писал(а): memento писал(а): То есть, как я понял, нужно на микроконтроллер записать логику, которая будет управлять выходами, а программа написанная на бейсике будет отображать её работу и выдавать ещё сигналы для обработки? Нужно написать программу для микроконтроллера, которая будет анализировать команды от компа, полученые через USB и выполнять требуемые действия, скажем, чтение (или запись) информации в один из портов контроллера.Получится что-то наподобие LPT порта, но с интерфейсом USB. Можно часть алгоритма перенести из проги на компе в микроконтроллер. В этом случае получится "умный" LPT порт на основе МК. ![]() А для написания программы микроконтроллера достаточно знать бейсика или же программа там пишется исключительно на ассемблере? Если так, то имея определённый тип микроконтроллера и готовую прошивку, то всё сводится лишь к написанию программы на бейсике, которая будет всем этим руководить? В таком случае не думаю, что мне понадобится переносить часть алгоритма на МК. Просто где-нибудь скачать "универсальную" прошивку. Уже пытаюсь разобраться с бейсиком. Пока что кажется всё дремучим лесом. Но может скоро снизойдёт озарение ![]() 20 страниц инструкции нужно переварить. Понимаю, что там не может быть всего, но я и не считаю, что моя задача очень уж сложная. Yftul писал(а): На основе данной статьи банально реализуется все что Вы хотели с минимальными переделками, если Вас конечно устроят две кнопки и 3 светодиода(или любых нагрузки вместо них). Ну, на такой случай у меня где-то валяется Siemens Logo!. Там как раз 6 входов и 4 выхода и программа его кажется мне простой. Мне же для моей задумки нужно побольше входов-выходов, а на S7 или модули разширения Logo! у меня денег нет ![]() ![]() П.С. Понимаю, что разговор со мной, кажется вам разговором с деревом. Большое спасибо за терпение и за разъяснения. |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |