PC Power OFF

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Собственно интересует безопасный (для компа ) способ гарантированного выключения от внешнего источника, контактной пары например.
Кнопка включения не подходит, т.к после такого выключения приходится общаться с вариантами загрузки системы...... (
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Реклама
orinoko

Сообщение orinoko »

Мне видится только программная подача команды на выключение компьютера. Причём с принудительным завершением подвисших процессов (выставление соответствующих флагов). Иначе часты случаи, когда что-то блокирует нормальное выключение. А программа должна опрашивать какой то порт на факт какого то события. Кстати, нажатие кнопки power не даёт 100% гарантии, что комп выключится, если конечно, не держать 4 сек. Тогда да, он аварийно выключается, и впоследствии с запросом вариантов загрузки. А если в настройках питания указать реакцию на кнопку Power как Выключение, то кратковременное нажатие приводит к нормальному завершению работы системы.

Программно завершить работу компьютера. Выглядеть это будет примерно так, с использованием различных режимов выключения:

ExitWindowsEx(EWX_LOGOFF or ewx_force,0);
завершает работу всех запущенных в системе процессов, сохраняя данные приложения, вызвавшего эту функцию

ExitWindowsEx(EWX_SHUTDOWN or ewx_force,0);
останавливает работу системы в безопасный момент времени. Все буферы очищаются с сохранением данных на диске, все процессы останавливаются

ExitWindowsEx(EWX_REBOOT or ewx_force,0);
перезагрузка системы

ExitWindowsEx(EWX_FORCE or ewx_force,0);
завершает работу всех запущенных в системе приложений, не посылая им сообщения WM_QUERYENDSESSION и WM_ENDSESSIO. Это может вызвать потерю не сохраненных данных

ExitWindowsEx(EWX_POWEROFF or ewx_force,0);
завершает работу компьютера с выключением питания, если система поддерживает автоуправление питанием

ExitWindowsEx(EWX_FORCEIFHUNG or ewx_force,0);
завершает работу всех запущенных в системе приложений если система висит


Но это я про виндовс. про другие системы не в курсе
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Комп можно программно выключить, например, с помощью такого кода.

Код: Выделить всё

Structure MyLUID 
  LowPart.l 
  HighPart.l 
  Attributes.l 
EndStructure 

Structure MyTOKEN 
  PrivilegeCount.l 
  LowPart.l 
  HighPart.l 
  Attributes.l 
EndStructure 

Procedure PowerOff() ; Выключение компьютера
  hdlProcessHandle.l 
  hdlTokenHandle.l
  lBufferNeeded.l 
  tmpLuid.MyLUID 
  tkp.MyTOKEN 
  tkpNewButIgnored.MyTOKEN  
  hdlProcessHandle = GetCurrentProcess_() 
  OpenProcessToken_(hdlProcessHandle, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle) 
  SysName.s=""+Chr(0) 
  Name.s="SeShutdownPrivilege"+Chr(0) 
  Erg.l=LookupPrivilegeValue_(SysName, Name, @tmpLuid) 
  tmpLuid\Attributes = #SE_PRIVILEGE_ENABLED 
  tkp\PrivilegeCount = 1  
  tkp\LowPart = tmpLuid\LowPart 
  tkp\HighPart = tmpLuid\HighPart 
  tkp\Attributes = tmpLuid\Attributes 
  Erg.l = AdjustTokenPrivileges_(hdlTokenHandle,0,@tkp,SizeOf(MyTOKEN),@tkpNewButIgnored,@lBufferNeeded) 
  Erg.l = ExitWindowsEx_((#EWX_SHUTDOWN |#EWX_POWEROFF | #EWX_FORCE), 0) 
EndProcedure

PowerOff()
Во вложении исполняемый файл, созданный из этого кода, запустив который можно выключить комп.
Вложения
PowerOFF.zip
(1.14 КБ) 253 скачивания
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Часто бывают случаи, когда перед выключением, какая-то из программ спрашивает что-либо ( сохранить, добавить или " а вы уверены?").
Тогда не получится однозначного выключения.
Как запустить код я не в курсе тем более.
Вообще это все затевается для ограничения времени работы компа, БЕЗ применения какого-либо программного кода.
Т.к. всегда имеется возможность обойти ее.
Думаю прикрутить таймер такой http://arv.radioliga.com/content/view/179/44/
одним из каналов которого можно будет заблокировать кнопку включения на определенный промежуток (1 -2 часа), а вот с выключением пока заминка.
Есть задумка что-бы по таймеру отключать сигнал датчика вращения с процессорного кулера, тогда система вроде как должна полюбому не в аварийном режиме потухнуть.

Кто что думает по этому поводу ?
Или есть какие еще варианты подобного выключения?
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Реклама
Эиком - электронные компоненты и радиодетали
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина

Сообщение Tolmi »

Можно перед выключением не делать Shutdown, а делать Hibernate, тогда мнения программ по этому поводу никто спрашивать не будет. А после снижения энергопотребления БП компа неким устройством уже размыкать 220. Ещё одним преимуществом Hibernate является то, что это процесс достаточно детерминированный по времени, в отличие от Shutdown.
In theory, theory and practice are the same. In practice, they're not.
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Это конечно хороший способ,только в моем случае нет желания использовать дополнительные программы.
Ведь их (проги) надо как-то вызывать для выполнения !
Вся задумка именно в АППАРАТНОМ выключении и блокировке, без сторонних програмулин.
Конечно , можно еще прикрутить платку от USB клавы внутрь таймера, подключить к свободному порту внутреннему и управлять кнопкой выключения питания( а лучше Hibernate).
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Реклама
As
Модератор
Аватара пользователя
Сообщения: 46804
Зарегистрирован: Пт янв 23, 2009 19:20:05

Сообщение As »

Seal, так Вам уже предложили - в настройках "форточек" в качестве реакции на нажатие кнопки power поставить не выключение системы, а переход в режим сна... Тогда и данные сохранятся, и, что приятно, при последующем включении всё восстановится в том виде, как было при отключении (и гораздо быстрее, чем при обычном включении, если, конечно, в Вашем компьютере не слишком много памяти... :))) ). И никаких программ не нужно - просто кратковременное нажатие на кнопку... На клавиатуре, кстати, для перехода в режим сна часто есть отдельная кнопка...
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Да, с клавиатурой все понятно.
Только таймер планируется установить в системный блок.
Поэтому и спрашивал про способы выключения.
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина

Сообщение Tolmi »

С детьми боретесь ?
Известная проблема :)

Можно внутри корпуса разместить USB HID c таймером внутри, который посылает винде "Спать". Только сразу из своего опыта могу сказать, надо ещё батарейное питание, и блокировку включения после выключения, хотя бы на час :)
PS Но потом дети быстро учатся орудовать отверткой и выковыривать закладки :)
In theory, theory and practice are the same. In practice, they're not.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 475
Зарегистрирован: Вт дек 07, 2010 15:34:19
Откуда: UA

Сообщение dmirrr »

Посмотрите как управляет компом BackUPS APC-600. Он какой-то вывод com-порта соединяет с корпусом, компьютер воспринимает это как сигнал о пропадании сетевого питания и завершает свою работу. Нужно только на компе в профилях электропитания указать, что используется UPS APC и установить через сколько выключатся. А для борьбы с детьми в Win7 и так есть родительский контроль с настраиваемым временем доступа, правами и т.д.
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина

Сообщение Tolmi »

dmirrr писал(а): Он какой-то вывод com-порта соединяет с корпусом, компьютер воспринимает это как сигнал о пропадании сетевого питания и завершает свою работу.
Нет, он использует текстовый протокол, который надо будет проэмулировать.
Общаемся со SMART UPS’ом

Для того чтобы можно было посылать команды UPS’у и получать на них реакцию, нужна самая обычная терминальная программа. Да-да! Именно та, которая используется для работы с модемом, только ее нужно будет чуть поднастроить. В качестве примера я возьму наиболее популярную среди такого класса программ – minicom. В твоем дистрибутиве она точно должна быть. В крайнем случае, ищи на дистрибутивных дисках. Становимся root’ом и запускаем minicom в режиме настройки:

# minicom -s

Перед глазами видим меню настроек и переходим в подменю «Настройка последовательного порта».

В поле «Последовательный порт» (A) вписываем порт, на котором находится UPS, для поля «Скорость/Четность/Биты» (E) устанавливаем значение «2400 8N1». Теперь переходим в подменю «Модем и дозвон». В поле «Строка инициализации» (A) нужно написать «Y\0^M», для того чтобы при запуске minicom’а UPS переходил в режим мониторинга. В поле «Строка сброса» пишем «Y^M» и в «Строка разрыва связи» пишем «R\0^M» – это чтобы при выходе из minicom’a UPS сохранял свои настройки и выключал режим мониторинга (для UPS’ов третьего поколения Back-UPS PRO, SMART-UPS (v/s)).

Теперь можно смело запускать minicom и опрашивать свой UPS. Сразу после запуска minicom’а в окне появится сообщение «SM» – это значит, что UPS перешел в режим мониторинга и готов выполнять команды. Я не советую нажимать подряд все клавиши на клавиатуре и проверять, какая что значит, – это может окончиться печальными последствиями.

Для начала советую нажать клавишу «а», после чего UPS выведет информацию о протоколе и поддерживаемых командах (в конце строки). Приведу описание, как мне кажется, наиболее интересных и полезных команд:

A – тест звука и индикаторов на UPS’е;
L – входное напряжение;
P – процент потребляемой мощности внешней нагрузкой;
U – имитация сбоя питания;
W – тест работоспособности;
X – тест внутренних аккумуляторов (OK – все хорошо, BT – маленькая емкость, NG – тест не пройден);
f – процент уровня заряда аккумуляторов;
l – минимальное входное напряжение, при котором UPS переключается на питание от аккумуляторов;
s – чувствительность к изменению напряжения в сети (H – высокая, M – средняя, L – низкая).

Рекомендую нажать клавишу «U» или просто отключить на несколько секунд питание, и посмотреть, какие сообщения выдает UPS. Несмотря на всю серьезность такого устройства, логика его работы достаточно проста.

Если во время работы UPS’а в сети происходит сбой или просто пропадает питание, UPS посылает каждые 30 секунд через свой порт сообщение в виде символа «!», который сигнализирует, что UPS перешел на питание от внутренних батарей. При восстановлении питания в нормальное состояние (от сети), UPS сообщает об этом, посылая в порт символ «%».

Вот, собственно, и все. Операционной системе остается лишь наблюдать за данным портом и в зависимости от поступившего с этого порта сообщения выполнять какие-то определенные действия. Если есть желание и навыки в программировании, то можно написать под себя небольшую программку, которая будет все это делать. Ну а для простых смертных уже существуют готовые программные пакеты, которые умеют делать все это и еще много другого.
In theory, theory and practice are the same. In practice, they're not.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 475
Зарегистрирован: Вт дек 07, 2010 15:34:19
Откуда: UA

Сообщение dmirrr »

Общаемся со SMART UPS’ом...
А где я говорил о SMARTе?
SMART и Back-UPS это немного разные продукты с разными функциями и управлением.
Для того, чтоб общаться устройством, он должен иметь хотя бы маленький мозг :)) У Back-UPS APC-600 мозга нет! он собран на мелкой логике и компараторах. Вот нашел описание как это все работает:
http://sxema.ucoz.ua/load/skhemy/kompju ... 55-1-0-114
Хотя с обозначением моделей у APC напряг. Десятилетний APC-600 и современный APC-600 совсем разные модели, с разной начинкой.
я имел ввиду еще вот такие:
Изображение
Изображение
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина

Сообщение Tolmi »

dmirrr писал(а):
Общаемся со SMART UPS’ом...
А где я говорил о SMARTе?
SMART и Back-UPS это немного разные продукты с разными функциями и управлением.
Я же не знал, что речь идет о мамонтах и динозаврах :) Современные модели Back-UPS управляются точно так же, как и Smart. Более того, у новых везде USB, что у смартов, что у Back-UPS

PS А сам я не любитель творчества APC, у меня исторически сложилось, что поклонник Powerware со времен 9115 модели образца 98-го года.
In theory, theory and practice are the same. In practice, they're not.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 475
Зарегистрирован: Вт дек 07, 2010 15:34:19
Откуда: UA

Сообщение dmirrr »

Ну это не важно, какая модель/фирма и т.д. Главное принцип управления питанием компьютера. Подсказка как задействовать механизмы, которые уже есть в Windows, может и не по прямому назначению, но как по мне результат вполне подобен желаемому: все открытое сохранится, закроется и компьютер выключится.
Вообще это все затевается для ограничения времени работы компа, БЕЗ применения какого-либо программного кода.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Вообще-то идея с применением СОМ порта и настройки электропитания мне вполне приемлема.
Т.К. не требует запуска в фоновом или еще каком режиме дополнительных служб, используем то что уже есть.
Вопрос к знающим, какие выводы на СОМ нужно задействовать ?
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Мучитель микросхем
Аватара пользователя
Сообщения: 475
Зарегистрирован: Вт дек 07, 2010 15:34:19
Откуда: UA

Сообщение dmirrr »

Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Seal писал(а):Вообще-то идея с применением СОМ порта и настройки электропитания мне вполне приемлема.
Т.К. не требует запуска в фоновом или еще каком режиме дополнительных служб, используем то что уже есть.
Вопрос к знающим, какие выводы на СОМ нужно задействовать ?
Вы реально думаете что на COM порте есть выводы, отвечающие за выключение компа? :facepalm:
Для того чтобы выключить комп через COM порт, нужно на компе запустить программу, которая будет "слушать" порт и при поступлении команды, выключать комп. :)
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Нет,не так я думаю.
Просто в настройках питания ,во вкладке "ИИП" есть выбор порта на котором сидит упс.
По всей видимости этого должно быть достаточным, для запуска сканирования указанного порта.
Просто напросто не доводилось с подобными устройствами работать .
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Друг Кота
Аватара пользователя
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Сообщение hybroid »

Самое начало топика удивило..
В командной строке вянды попробуйте набрать

Код: Выделить всё

shutdown /?
Софт уже писать начали.. :))
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1122
Зарегистрирован: Чт мар 05, 2009 19:51:55
Откуда: Дырасполь

Сообщение Seal »

Ничего удивительного не заметил, никакого софта мне не нужно.
Если винда при настройке параметров электропитания запускает службу
сканирования указанного при настройке порта, это то что мне нужно.
Только вот осталось решить, как приспособить таймер к этому порту !?
ученые долго думали,в чем измерять частоту.... С тех пор и пишут Hz
Ответить

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