周昌海 樊玲
摘 要:針對(duì)圖書(shū)館公用電腦開(kāi)機(jī)后長(zhǎng)時(shí)間無(wú)人使用甚至24 h處于開(kāi)機(jī)狀態(tài)的問(wèn)題,提出了通過(guò)BIOS設(shè)置和Delphi編程,實(shí)現(xiàn)計(jì)算機(jī)每天無(wú)人值守條件下定時(shí)開(kāi)關(guān)機(jī)及空閑關(guān)機(jī)功能,是對(duì)節(jié)能減排、低碳校園積極響應(yīng),在上百臺(tái)公用電腦中實(shí)際運(yùn)行效果非常良好。
關(guān)鍵詞:圖書(shū)館 定時(shí)開(kāi)關(guān)機(jī) 空閑關(guān)機(jī) BIOS Delphi2010
中圖分類(lèi)號(hào):C931.9 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)03(c)-0228-01
圖書(shū)館作為大學(xué)的文獻(xiàn)中心和第二課堂,是大學(xué)生利用數(shù)字化網(wǎng)絡(luò)技術(shù)獲取課本外知識(shí)的重要場(chǎng)所?,F(xiàn)在的圖書(shū)館,公共區(qū)域的電腦,一般都有近百臺(tái)甚至數(shù)百臺(tái)。很多電腦每天開(kāi)機(jī)后很少有人使用,甚至24 h開(kāi)著機(jī),每年的耗電是驚人的。管理人員因計(jì)算機(jī)分布在不同樓層,數(shù)量多,常在下班時(shí)直接給所有計(jì)算機(jī)強(qiáng)行拉閘斷電,也常常造成計(jì)算機(jī)硬盤(pán)壞掉或者Window系統(tǒng)故障,無(wú)法再開(kāi)機(jī)。
該文針對(duì)這一問(wèn)題,將計(jì)算機(jī)BIOS定時(shí)開(kāi)機(jī)功能和Delphi編程二者配合使用,完美地解決了這個(gè)問(wèn)題。
1 設(shè)計(jì)思路
如圖1所示定時(shí)開(kāi)關(guān)機(jī)框圖,通過(guò)計(jì)算機(jī)的BIOS,設(shè)置每天定時(shí)開(kāi)機(jī)時(shí)間;通過(guò)Delphi2010編程,實(shí)現(xiàn)每天定時(shí)關(guān)機(jī)和空閑關(guān)機(jī)目標(biāo)。何時(shí)關(guān)機(jī),空閑多久關(guān)機(jī),是否啟用空閑關(guān)機(jī),都可以隨時(shí)進(jìn)行修改。
需要指出的是,Windows自身有定時(shí)關(guān)機(jī)和空閑關(guān)機(jī)的功能,但實(shí)際使用過(guò)程中,穩(wěn)定性不好,偶爾會(huì)發(fā)生定時(shí)關(guān)機(jī)和空閑關(guān)機(jī)沒(méi)有執(zhí)行的情況。相比較而言,通過(guò)Delphi編程所實(shí)現(xiàn)的定時(shí)關(guān)機(jī)和空閑關(guān)機(jī),界面簡(jiǎn)潔,操作簡(jiǎn)單,經(jīng)過(guò)半年的使用,沒(méi)有發(fā)生未執(zhí)行關(guān)機(jī)任務(wù)的案例。
2 實(shí)現(xiàn)過(guò)程
2.1 定時(shí)開(kāi)機(jī)的設(shè)置方法
以聯(lián)想啟天M7150為例,開(kāi)機(jī)后按F1進(jìn)入BIOS,按照以下步驟進(jìn)行設(shè)置。
Power→After Power Loss,該項(xiàng)設(shè)置為L(zhǎng)ast State。這個(gè)設(shè)置的含義是,如果突然停電后再來(lái)電,計(jì)算機(jī)恢復(fù)到停電前的狀態(tài):若停電前是開(kāi)機(jī)的,那么來(lái)電后自動(dòng)開(kāi)機(jī);如果停電前是關(guān)機(jī)狀態(tài),那么來(lái)電后計(jì)算機(jī)不開(kāi)機(jī)。
Power→Automatic Power On→Wake up on Alarm,該項(xiàng)設(shè)置為“Enabled”,必須設(shè)置成Enabled,才能進(jìn)行下面步驟的設(shè)置。
Power→Automatic Power On→RTC Alarm Date(Days),該項(xiàng)設(shè)置為“Every Day”,也就是每天定時(shí)開(kāi)機(jī);
Power→Automatic Power On→RTC Alarm Time,該項(xiàng)設(shè)置為“08:00:00”,意思是每天早上8點(diǎn)開(kāi)機(jī)。
完成以上設(shè)置后,保存BIOS設(shè)置。
2.2 定時(shí)關(guān)機(jī)和空閑關(guān)機(jī)
定時(shí)關(guān)機(jī),是讓計(jì)算機(jī)每天到了指定時(shí)間,強(qiáng)制關(guān)機(jī),是為了避免計(jì)算機(jī)通宵開(kāi)機(jī)而設(shè)置這一功能。
所謂空閑時(shí)間,也叫Idle time,是指計(jì)算機(jī)沒(méi)有鼠標(biāo)或者鍵盤(pán)操作的時(shí)間長(zhǎng)度,之所以要引入這個(gè)功能,是因?yàn)椴簧儆?jì)算機(jī)開(kāi)機(jī)后,一直處于無(wú)人使用狀態(tài),白白地消耗著電能。
之所以要設(shè)計(jì)定時(shí)關(guān)機(jī)和空閑關(guān)機(jī)兩個(gè)選項(xiàng),這是因?yàn)?,有些公用電腦,是允許白天一直開(kāi)機(jī)的,如讀報(bào)機(jī);而閱覽室的公用電腦,數(shù)量多,無(wú)人使用一定時(shí)間時(shí),則需要關(guān)機(jī),以達(dá)到節(jié)能目的。但是,不管什么情況,晚上指定時(shí)間(如22:00)所有電腦都需要強(qiáng)行自動(dòng)關(guān)機(jī)。
定時(shí)關(guān)機(jī)和空閑關(guān)機(jī),在程序設(shè)計(jì)中,需要允許修改關(guān)機(jī)時(shí)間和空閑關(guān)機(jī)時(shí)間,以及是否啟用這些功能。本程序?qū)⑦@些設(shè)置參數(shù)保存在一個(gè)配置文件里面,當(dāng)程序每天開(kāi)機(jī)運(yùn)行時(shí)會(huì)自動(dòng)讀取這些參數(shù),如果配置文件被刪除或者丟失,會(huì)載入默認(rèn)參數(shù)。
按照以上思路,設(shè)計(jì)程序主界面,如圖2所示。
“設(shè)置”按鈕只用于設(shè)置關(guān)機(jī)時(shí)間和空閑關(guān)機(jī)時(shí)間以及是否啟用它,當(dāng)程序運(yùn)行時(shí),會(huì)自動(dòng)載入這些配置參數(shù)并按照這些參數(shù)執(zhí)行。
2.3 定時(shí)關(guān)機(jī)和空閑關(guān)機(jī)部分關(guān)鍵代碼
procedure calshutdowntime;//換算關(guān)機(jī)時(shí)間
ss:=sphh.Value*60+udmm.position;
ss:=ss*60;//關(guān)機(jī)時(shí)間(秒)
sidle:=udidle.Position*60;//設(shè)定空閑時(shí)間長(zhǎng)度(秒)
計(jì)算時(shí)間空閑時(shí)間值函數(shù):
function Idletime: integer;//
var LInput: TLastInputInfo;
begin LInput.cbSize:=SizeOf(TL
astInputInfo);
GetLastInputInfo(LInput);
Result:=(GetTickCount-LInput. dwTime)div1000;//已空閑時(shí)間長(zhǎng)度(秒)
end;
定時(shí)器Timer1代碼:
timeStamp:= DateTimeToTimeSta
mp (now());
i:=timestamp.Time div 1000-ss;
if i>0 then//定時(shí)關(guān)機(jī)時(shí)間到
begin
Timer1.Enabled:=false;
winexec(pansichar(‘cmd/c shutdown-s-f-t00),sw_Hide);//定時(shí)關(guān)機(jī)時(shí)間到強(qiáng)行關(guān)機(jī)
end;
if idletime >=sidle then//如果空閑時(shí)間達(dá)到設(shè)定值
winexec(pansichar('cmd/c shutdown-s-f-t00'),sw_Hide);//空閑時(shí)間到強(qiáng)行關(guān)機(jī)可執(zhí)行程序界面如圖3所示。
3 結(jié)論
該文的實(shí)際例子,已經(jīng)在近百臺(tái)Win7計(jì)算機(jī)上驗(yàn)證運(yùn)行了3個(gè)月以上,定時(shí)開(kāi)關(guān)機(jī)和空閑關(guān)機(jī)執(zhí)行狀況穩(wěn)定理想。不足之處在于,如果定時(shí)開(kāi)始也能通過(guò)Delphi編程實(shí)現(xiàn),那就很完美了,但由于不同機(jī)型的BIOS版本和型號(hào)有差異,目前Delphi直接讀寫(xiě)實(shí)現(xiàn)尚有困難。
參考文獻(xiàn)
[1] 劉湖平.基于BIOS和Windows XP之任務(wù)計(jì)劃實(shí)現(xiàn)定時(shí)自動(dòng)開(kāi)關(guān)機(jī)[J].科技資訊,2012(16):31
[2] 黃新革.基于Delphi的Windows 2000服務(wù)器定時(shí)關(guān)機(jī)程序[J].信息技術(shù),2003,27(3):72-74.