управление программой с помощью кнопки

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

Обкатали уже прогу на объекте? Работает?
Знание - сила!
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

да отлично все =)
Реклама
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

larik писал(а):да отлично все =)
Ну и слава Богу. Чистите лог своевременно. :)
Знание - сила!
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

кстати выплыл такой нюанс - выключится не может нормально требует завершить вручную... или эт тока у меня ?
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

larik писал(а):кстати выплыл такой нюанс - выключится не может нормально требует завершить вручную... или эт тока у меня ?
Т.е. как? При выключении винды такое требует, или когда?
Знание - сила!
Реклама
Опытный кот
Аватара пользователя
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев

Сообщение Аксель »

....Где-то видел обсуждалась такая темка, не смог найти:

Возможно подключить на USB кнопку напрямую (без всякой микроэлектроники) и регистрировать её нажатия?
Скелет колобка состоит из черепа.
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

Аксель писал(а):....Где-то видел обсуждалась такая темка, не смог найти:

Возможно подключить на USB кнопку напрямую (без всякой микроэлектроники) и регистрировать её нажатия?
USB это протокол и без микроэлектроники не обойтись
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

Пухич писал(а):
larik писал(а):кстати выплыл такой нюанс - выключится не может нормально требует завершить вручную... или эт тока у меня ?
Т.е. как? При выключении винды такое требует, или когда?
да то есть выводит окно "завершить сейчас" или отмена, стандартное окно если прога не может выйти или при зависании
Опытный кот
Аватара пользователя
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев

Сообщение Аксель »

Аксель писал(а): Возможно подключить на USB кнопку напрямую (без всякой микроэлектроники) и регистрировать её нажатия?
Ответ: да, можо.
Дальше в теме изложено как это сделать.
Последний раз редактировалось Аксель Ср окт 07, 2009 08:48:20, всего редактировалось 1 раз.
Скелет колобка состоит из черепа.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

врятли, а про то что вы говорите было на форуме схема на меге8 была, вот сылочка на другой http://forum.vingrad.ru/forum/s/c86df82 ... 05/15.html
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Т.е. как? При выключении винды такое требует, или когда?
Да, если нет петли обработки системных сообщений - так и будет. При выключении система посылает широковещательное сообщение всем прогаммам. Если есть ГУИ (особенно построенное во всяких билдерах) - оно автоматом обрабатывается, завершая приложение. Если это консольная программа - либо делать петлю обработки (что есть извращение), либо регистрировать её как службу :)
Мучитель микросхем
Аватара пользователя
Сообщения: 403
Зарегистрирован: Вс окт 12, 2008 00:19:25
Откуда: Подольск, Мос. Область

Сообщение larik »

то есть переделка проги в корне ? если сложно то тода другим путем пойдем =)
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Я бы предложил тупо гуишную программу в автозагрузке, которую за пол-часа слепить на дельфях или с-билдере можно, но ни разу не работал с ЛПТ портом... :oops:

Мог бы дома повозиться, но интернету пока нэту... :(
Опытный кот
Сообщения: 732
Зарегистрирован: Пт авг 22, 2008 16:59:43

Сообщение Cat_CooLeR »

C Lpt портом проще простого, если надо стучи, скажу :))
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Да и сам нашел бы, был бы интернет и часок времени свободного... На работе интернет есть, но проверить нечем - если застукают за цеплянием проводов к рабочему компу - объясняться целый день придётся :)))
Опытный кот
Аватара пользователя
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев

Сообщение Аксель »

...про usb-кнопку

Еще раз немножко перефразирую (изначально вопрос про кнопку, не про определение кз)


Скажем так: если подключать к компу некое устройство USB, но без линии "DATA+", то комп определяет некое устройство подключено (но неправильно :) )

А если отключить и линию "DATA-", то комп определяет, что некоторое устройство уже отключено.

А если опять подключить только линию "DATA-", то комп определяет некое устройство подключено.



Зная на каком порту USB находится это некоторое устройство, можно програмно этот порт отслеживать и обрабатывать USB кнопочку - дальше зависит от программиста.


В качестве некоторого устройства USB можно взять флешку.
Делаем небольшой переходничек USB-USB с кнопкой на "DATA-" и не подключенной "DATA+" (дабы не терять возможность пользования устройства USB по изначальному назначению) и вуаля: (при наличии готового софта) простая USB-кнопочка из разряда сделай сам по быстрому - готова.

=============
Здесь теоретически все должно быть ясно.


Так вот вопрос, чем можно заменить некое устройство USB (допустим нашу флешку)? Чем-то попроще и чем проще, тем лучше. :music:
Скелет колобка состоит из черепа.
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев

Сообщение Аксель »

Протестировано.
-----------------------
Итого: ОТ +5 ----> R 3.3K ----- стабилитрон на 3.6 В (на землю его :) второй вывод) -----> "DATA -"


Комп определяет "неопознанное устройство"
============
Всё. USB-кнопка - готова. Дело за ПО.
Кто возьмется? :))

А в общем, как вам идея с простой кнопкой на USB?
Скелет колобка состоит из черепа.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Да, если нет петли обработки системных сообщений - так и будет. При выключении система посылает широковещательное сообщение всем прогаммам. Если есть ГУИ (особенно построенное во всяких билдерах) - оно автоматом обрабатывается, завершая приложение. Если это консольная программа - либо делать петлю обработки (что есть извращение), либо регистрировать её как службу
Юр, я в курсе, почему это происходит. В линуксе аналогично - сначала все процессы получают SIGTERM (пытаясь при этом завершиться корректно), а затем, если продолжают висеть (например нет обработчика данного сигнала), то их выносит рассылка SIGKILL. Не вполне ясно, почему в винде делается запрос на завершение, ну пусть будет так. Тут вот что важно - прога по сути ГУИшная, а не консольная, т.к. есть форма, есть для нее модуль, но она не создается (нет вызова метода CreateForm), более того, я даже метод Application->Run() не вызывал. Форму я не создаю, чтобы не появлялось окно формы (отсутствие окна формы создает иллюзию того, что это служба :) ). Было бы хорошо, если бы ты вкратце описал, как эта петля делается. Она случаем не в стандартном try-catch спрятана? Как регистрировать прогу, как службу, я тоже не в курсе.
Я бы предложил тупо гуишную программу в автозагрузке, которую за пол-часа слепить на дельфях или с-билдере можно, но ни разу не работал с ЛПТ портом...
Юр, ты тему читал? :wink:
Тут уже давно все есть, мне и форму запустить несложно, и код в нее перенести из ВинМэйна. Правда придется еще и таймер запускать, чтобы в его обработчик повесить код проверки кнопки. Тут вот какая проблема - вследствие непонятного мне косяка у меня при отладке не срабатывают метод Form->Hide() и свойство Form->Visible. Т.е. я пытаюсь форму скрыть, а она не скрывается. Т.е. опять же окно будет торчать, це не гуд.
Cat_CooLeR писал(а):C Lpt портом проще простого, если надо стучи, скажу
Блин, вы решительно тему не читаете, господа! :)))
Знание - сила!
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Для обработки сообщений используется функция GetMessage, в описании присутствует пример обработки сообщений. При получении сообщения WM_QUIT функция возвращает 0, если какое другое то не 0, -1 если произошла какая-то ошибка.

Самый простой вариант вынести код ожидания сигнала с LPT порта в отдельный поток, а в winmain обрабатывать сообщения и при получении сообщения завершения работы останавливать поток и завершать выполнение приложения.

P.S. для создания потока можно юзать функцию _beginthread
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

izmmisha писал(а):Для обработки сообщений используется функция GetMessage, в описании присутствует пример обработки сообщений. При получении сообщения WM_QUIT функция возвращает 0, если какое другое то не 0, -1 если произошла какая-то ошибка.
Я в курсе относительно этой функции. Только вот не знал про специфику возвращаемого значения применительно к WM_QUIT. Спасибо за инфу, попробую применить. Я так полагаю, что надо будет тупо проверять в цикле равенство нулю результата работы GetMessage и завершаться при таковом. Можно даже без потока.
P.S. для создания потока можно юзать функцию _beginthread
А не проще CreateThread? Я ее обычно вызывал.
Знание - сила!
Ответить

Вернуться в «Интеграция с ПК»