управление программой с помощью кнопки
доброе время суток Коты, недавно стал вопрос об управлении программой (скриптом, BAtником) с внешней кнопки, например нажал кнопку и запустился bat файл в котором написанно что с данного диска слить инфу на флешку, и результат например выводить загоранием светодиода. Но уточню что комп не имеет переферийных устройств то есть нет клавы мышки и монитора ибо работает автономно, если есть какие либо наработки или мысли то хотелось бы услышать. А то просто не пойму в какую сторону копать то ли HID устройства делать то ли на LPT порту копать 
- Реклама
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Смотря что конкретно вы хотите.larik писал(а): А то просто не пойму в какую сторону копать то ли HID устройства делать то ли на LPT порту копать
Знание - сила!
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Запустилась прога - это понятно. А кто ее запустит?larik писал(а):нажал на кнопку - запустилась прога, или определенный ярлык, а его успешное завершение отображал светодиод
Проще всего так - прога уже висит в памяти и проверяет нажатие кнопки, висящей на ЛПТ-порту. Дешево и сердито. А уж этот резидент может и другую прогу вызвать, и батник.
А если надо, чтобы резидента не было, значит нужно делать что-то умное, что будет вызывать какие-то прерывания, чтобы ОСь могла чего-то запустить. Можно сделать устройство, которое будет засылать в клавиатурный порт ПС/2 какое-то нажатие, которое, положим, запускает некую прогу. Сложновато будет. Проще на ЛПТ.
Знание - сила!
согласен на такое =) точней даже впрочем так и предполагал тока что за прога и с чем ее едят ?Пухич писал(а): Проще всего так - прога уже висит в памяти и проверяет нажатие кнопки, висящей на ЛПТ-порту. Дешево и сердито. А уж этот резидент может и другую прогу вызвать, и батник.
потомучто проги которые я знаю они тока на вывод инфы а не на ввод
- Реклама
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Как это только на вывод? Если уж вы с портом работаете, то можете там что угодно делать. Разве нет? Разумеется речь о самодельной проге, готовых таких может и нет.
Суть в следующем - в авторане висит простенькая прожка, она постоянно опрашивает ЛПТ-порт. Если на каком-то входе появляется ноль, значит кнопка нажата. Дальше что-то выполняется. Доступ к ЛПТ-порту можно в ХРюше получить через giveio. Распиновка ЛПТ-порта известна. Собсна все тут так просто, что даже думать нечего.
Суть в следующем - в авторане висит простенькая прожка, она постоянно опрашивает ЛПТ-порт. Если на каком-то входе появляется ноль, значит кнопка нажата. Дальше что-то выполняется. Доступ к ЛПТ-порту можно в ХРюше получить через giveio. Распиновка ЛПТ-порта известна. Собсна все тут так просто, что даже думать нечего.
Знание - сила!
- Сообщения: 87
- Зарегистрирован: Ср авг 26, 2009 15:59:39
Служба для такой задачи, думаю слишком... И с ЛПТ наверное не стоит связыватся, доступные драйвера под WIN не всегда коррктно работают. Лучше использовать COM (если есть конечно), с прерываниями вопросов не возникает, если нужны, и доступ из любой программы без всяких драйверов. Вообще то задачка, более чем проста.
личку поглядите
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Ну так в чем проблема? Могу мальца переделать одну прогу, будет она проверять бит порта, запускать любой файл (в ИНИшке можно будет указывать), затем выставлять единичку в другом бите порта.larik писал(а): с LPT портом разберусь впрочем че куда подключать а вот с прогой проблема то и есть
Правда службой делать не буду, только обычным приложением. Лень мне со службой морочиться. Вам, впрочем, разницы ведь никакой, верно?
Знание - сила!
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Короче, вот два архива - один с прогой, другой с драйвером giveio.sys (лень было вспоминать ВинАПИ, а на ассемблере я с закрытыми глазами напишу проверку ЛПТ-порта). Как драйвер ставить - там в файле написано. Дальше запускаешь прогу.
Прога получает имя запускаемого приложения в виде параметра командной строки (это может быть и не приложение, а батник). Чтобы передать таким образом имя приложения программе, удобно создать ярлык и в нем после имени программы указать имя запускаемого приложения. В архиве есть такой ярлычег.
При запуске прога пытается открыть указанное приложение для чтения, чтобы проверить его наличие, если его нет, то выдается месседж. Затем подключается драйвер, если его нет - опять же месседж. Затем прога ждет нажатия кнопки, соединяющей 10 ногу ЛПТ-порта с сигнальной землей. Имеется в виду полное нажатие, с отпусканием (дребезг контактов устраняется примерно на 100 мс). Затем идет попытка запустить указанное приложение, и если оно не запускается (прав нет на исполнение, или еще чего), то выдается месседж. Затем прога вырубается.
Я только не понял, что из себя должна представлять сигнализация светодиодом, чего там надо проверять (и как вообще можно проверить исполнение батника?), поэтому тупо выводится на 9 ногу единица, если удалось запустить приложение. До этого там ноль. Только прямо на ногу порта светодиод не вешать, может погореть!
Прога сляпана из кусков других программ, по размеру не оптимизирована, так что уж не обессудьте. Если что-то надо переделать - пишите.
Прога получает имя запускаемого приложения в виде параметра командной строки (это может быть и не приложение, а батник). Чтобы передать таким образом имя приложения программе, удобно создать ярлык и в нем после имени программы указать имя запускаемого приложения. В архиве есть такой ярлычег.
При запуске прога пытается открыть указанное приложение для чтения, чтобы проверить его наличие, если его нет, то выдается месседж. Затем подключается драйвер, если его нет - опять же месседж. Затем прога ждет нажатия кнопки, соединяющей 10 ногу ЛПТ-порта с сигнальной землей. Имеется в виду полное нажатие, с отпусканием (дребезг контактов устраняется примерно на 100 мс). Затем идет попытка запустить указанное приложение, и если оно не запускается (прав нет на исполнение, или еще чего), то выдается месседж. Затем прога вырубается.
Я только не понял, что из себя должна представлять сигнализация светодиодом, чего там надо проверять (и как вообще можно проверить исполнение батника?), поэтому тупо выводится на 9 ногу единица, если удалось запустить приложение. До этого там ноль. Только прямо на ногу порта светодиод не вешать, может погореть!
Прога сляпана из кусков других программ, по размеру не оптимизирована, так что уж не обессудьте. Если что-то надо переделать - пишите.
- Вложения
-
- 8.rar
- (215.45 КБ) 282 скачивания
Последний раз редактировалось Пухич Чт сен 24, 2009 17:45:10, всего редактировалось 1 раз.
Знание - сила!
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
- Сообщения: 87
- Зарегистрирован: Ср авг 26, 2009 15:59:39
батник как и любая программа может вернуть код завершения, если не возвращать самим батником явно через exit, результатом будет код завершения последней выполняемой команды. Вот пример батника:Пухич писал(а):и как вообще можно проверить исполнение батника?
Код: Выделить всё
@echo off
echo 123
exit /B 1Код: Выделить всё
C:\>test.bat
123
C:\>echo %errorlevel%
1P.S. одноразовая прога что ли? один раз нажал на кнопку (что подключена к LPT порту), она выполнит действия и завершится?
И еще, помню как то венда отмочила, вывела сообщение что не нашла мышку и клаву и предложила нажать кнопку ОК. Не повторяйте ошибок мелкософта, все сообщения программ такого рода должны записывать в лог файл.


