RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : usbecd


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Improver
To : Dmitry Irtegov aka Fat Brother
Subj : usbecd

> Вообще-то там есть еще подзадача - по грамотному, мало задаунить систему, надо еще выключить УПС через заданное время...

Да, это было бы идеально. Но как можно отследить команду отключения юпса? Тут явно без апсовских мануалов не обойтись... Если кто поделится такой инфой -- то с удовольствием.

> А вообще, круто. Возьмешь в бета-тестеры? (APC Back UPS ES 500)

У меня юпс серии CS, но, скорее всего, система команд у них одинакова. Могу предложить всем на пробу самую первую, но в определенной степени рабочую версию:

------ upsmon.cmd ------
/* UPSMON v 0.01a */
/* (c) Larin Yury */

if RxFuncQuery('SysLoadFuncs') then do
call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
call SysLoadFuncs
end

/* set device driver name */
ddName = 'UPSMON'
/* set intervals */
Interval = 15
ShutDownInterval = 300

do forever
rc = UPSPowerStatus()

select
when rc = 1 then do
say time() 'Power good'
i = 0
end
when rc = 0 then do
say time() 'Power off'
i = i + Interval
if i >= ShutDownInterval then do
/* Выключение системы. Возможно в таком виде сработает не на любой машине */
'shutdown o'
exit
end
end
when rc = 255 then say 'Device driver' ddName 'currently in use. Please try later.'
otherwise say 'Unknown data = 'rc
end

call SysSleep Interval
end

UPSPowerStatus:

/* acquire the device driver */
rc=stream(ddName,'command','open')
if rc = 'READY:' then do
oiBuffer = substr(x2c(a1 01 13 03 00 00 07 00),1,15,x2c(00))
rc=charout(ddName,oiBuffer)
rc=stream(ddName,'description')
if rc \= 'READY:' then say 'Error!'
/* release the device driver */
rc=stream(ddName,'command','close')
return c2d(substr(oiBuffer,10,1))
end
return 255
------- the end --------

Инструкция по применению (!):
1. Установить драйвер usbecd в соответствии с инструкцией к нему, дав имя устройству "UPSMON".
Пример моей строки config.sys: DEVICE=D:\OS2\BOOT\USBECD.SYS /D:051D:0002:0100 /N:UPSMON

2. При необходимости выставить в командном файле желаемое время задержки до выключения и интервал, с которым будет производится опрос юпса в секундах. (по умолчанию 300 и 15 секунд соответственно)

3. Запустить командный файл в фоновом режиме. Можно его поставить и в автозагрузку. :-)

Wed 27 Apr 2005 10:55 Mozilla/5.0 (OS/2; U; Warp 4.5; ru-RU; rv:1.4.1) Gecko/20031




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.