潘偉珍 倪 堅(jiān) 何浩平
摘 要:國(guó)家教育部近年進(jìn)行的遠(yuǎn)程教育已遍及全國(guó)各地。遠(yuǎn)教設(shè)備已全部安裝到位,在教育資源方面也給一線教育工作者提供了有力的支撐,給教學(xué)帶來(lái)了便利與成效,但在資源接收方面仍存在一些困擾和問(wèn)題。筆者在實(shí)踐中不斷摸索,針對(duì)問(wèn)題設(shè)計(jì)了相應(yīng)的解決方案供遠(yuǎn)程教育工作者參考。
關(guān)鍵詞:遠(yuǎn)程教育;資源接收;解決方案
中圖分類號(hào):TP315文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1673-8454(2009)02-0064-03
國(guó)家教育部近年進(jìn)行的遠(yuǎn)程教育已遍及全國(guó)各地。遠(yuǎn)教設(shè)備已全部安裝到位,在教育資源方面也給一線教育工作者提供了有力的支撐,給教學(xué)帶來(lái)了便利與成效。遠(yuǎn)程教育資源的接收工作是進(jìn)行遠(yuǎn)教的基石,接收的情況好壞直接關(guān)系到此項(xiàng)工作的成敗。
本人一直從事信息技術(shù)教學(xué)與遠(yuǎn)程教育工作,在多年的教學(xué)實(shí)踐中,曾一直被以下一些問(wèn)題所困擾:一個(gè)是每天要定時(shí)開(kāi)機(jī)。另一個(gè)是無(wú)信息接收時(shí)為了設(shè)備的保護(hù)及省電等原因應(yīng)及時(shí)關(guān)機(jī)。再一個(gè)更麻煩的是,自從本人將系統(tǒng)重做及添加了一些應(yīng)用程序之后,可能是由于系統(tǒng)帶的服務(wù)增多了,本來(lái)只需手動(dòng)開(kāi)機(jī)后即自動(dòng)開(kāi)始衛(wèi)星鎖定,再開(kāi)始接收工作,這一切不需人工干預(yù),可現(xiàn)在當(dāng)接收軟件運(yùn)行時(shí)總是提示“衛(wèi)星尚未鎖定”錯(cuò)誤(其實(shí)這時(shí)衛(wèi)星已經(jīng)鎖定,你再手動(dòng)進(jìn)行鎖定也沒(méi)用)!而且點(diǎn)“確定”幾次后仍是如此。需過(guò)一兩分鐘再點(diǎn)“確定”按鈕,然后再點(diǎn)“開(kāi)始”按鈕。從開(kāi)機(jī)到開(kāi)始接收大約需要幾分鐘。
在實(shí)踐中筆者經(jīng)過(guò)不斷摸索,終于解決了這一系列問(wèn)題?,F(xiàn)在,遠(yuǎn)教接收工作基本實(shí)現(xiàn)自動(dòng)化?,F(xiàn)拋出本人的解決方案與各位共勉,希望能給各位遠(yuǎn)教工作者帶來(lái)方便。
一、定時(shí)開(kāi)機(jī)
國(guó)家教育部配置的聯(lián)想計(jì)算機(jī)主板支持定時(shí)開(kāi)機(jī)功能(當(dāng)然現(xiàn)今所有計(jì)算機(jī)幾乎都支持此功能)。方法是在CMOS中進(jìn)行設(shè)置:
Power Management FeaturesResume On RTC Alarm設(shè)為Enabled;
Date(of Month) Alarm設(shè)為0(0為每天,否則為每月某天);
Time(hh:mm:ss)Alarm設(shè)為開(kāi)機(jī)時(shí)間(本人根據(jù)需要設(shè)為6∶00∶00, 即6點(diǎn)開(kāi)機(jī))。
二、來(lái)電啟動(dòng)
對(duì)于農(nóng)村及偏遠(yuǎn)山區(qū),停電幾乎是不可避免的事情。筆者所工作的地區(qū)在用電緊張的夏季更是斷電頻繁,一天中時(shí)來(lái)時(shí)斷。同時(shí),有了后面所設(shè)的定時(shí)關(guān)機(jī)作保障,在不需開(kāi)機(jī)的時(shí)間段來(lái)電開(kāi)機(jī)后會(huì)自動(dòng)關(guān)機(jī)。
其實(shí),在CMOS中同樣可以進(jìn)行此項(xiàng)的設(shè)置。方法是:
進(jìn)入Integrated PerigheralsSuperIO Device進(jìn)行設(shè)置;
Restore On AC Power Loss 設(shè)為Power On (Power off 為來(lái)電保持關(guān)機(jī),Power On 為來(lái)電啟動(dòng),Last State為恢復(fù)停電前狀態(tài))。
三、遠(yuǎn)教接收與定時(shí)關(guān)機(jī)
部分計(jì)算機(jī)由于自帶服務(wù)過(guò)多,使衛(wèi)星尚未鎖定時(shí)接收軟件便已啟動(dòng),于是報(bào)錯(cuò),針對(duì)上述問(wèn)題本人曾想,何不用程序來(lái)模擬人工做反復(fù)點(diǎn)擊“確定”、“開(kāi)始”按鈕呢?可是實(shí)現(xiàn)起來(lái)有些麻煩,后來(lái)也認(rèn)為沒(méi)有必要。 找到問(wèn)題的癥結(jié)所在,我們直接在計(jì)算機(jī)啟動(dòng)一分鐘后再啟動(dòng)接收軟件不是更方便嗎?先是從系統(tǒng)的“開(kāi)始程序啟動(dòng)”中刪除遠(yuǎn)教接收軟件的快捷方式,再加入我的軟件,讓我的軟件啟動(dòng)后開(kāi)始計(jì)時(shí),一分鐘后再調(diào)用接收軟件進(jìn)行接收,這時(shí)系統(tǒng)自帶的服務(wù)已基本到位,衛(wèi)星也已經(jīng)鎖定,就不會(huì)再出現(xiàn)以上所說(shuō)的問(wèn)題。同時(shí)針對(duì)每周數(shù)據(jù)接收的時(shí)間規(guī)律,讓程序接收數(shù)據(jù)后自動(dòng)關(guān)機(jī),這樣也就解決了關(guān)機(jī)問(wèn)題。
思路對(duì)了,問(wèn)題就解決了一半。于是筆者利用業(yè)余時(shí)間編了一個(gè)遠(yuǎn)教輔助管理軟件,對(duì)遠(yuǎn)教接收機(jī)進(jìn)行自動(dòng)化管理。軟件可在我個(gè)人網(wǎng)站下載:http://flybase.51.net/YJFuZhu.exe。此軟件的源文件也共享給各位:http://flybase.51.net/YJYuanMa.rar。截圖如圖1所示。
各個(gè)主要部分源碼剖析于下:
1.開(kāi)機(jī)時(shí)啟動(dòng)接收軟件與關(guān)機(jī)倒計(jì)時(shí)
方法是軟件啟動(dòng)后進(jìn)行60秒倒計(jì)時(shí),時(shí)間到了再調(diào)用接收軟件。主要的源碼于下:
……
void CHhpForYJDlg::OnTimer(UINT nIDEvent) //計(jì)時(shí)器
{
CTime curTime = CTime::GetCurrentTime();
switch(nIDEvent)
{
case 1: // 啟動(dòng)遠(yuǎn)教接收程序計(jì)時(shí)器
……
number60--;
if (number60<=0)
{
WinExec("C:\FileTray\FileTray.exe",1);// 調(diào)用接收軟件
KillTimer (1);//停止計(jì)時(shí)器1
……
}
break;
case 2://定時(shí)關(guān)機(jī)計(jì)時(shí)器
……
if(curTime.GetHour()>m_Hour )
OnShutDown();
else if(curTime.GetHour()>=m_Hour && curTime.GetMinute() >m_Minute )
OnShutDown();
else if(curTime.GetHour()>=m_Hour && curTime.GetMinute()>=m_Minute && curTime.GetSecond ()>=m_Second)
OnShutDown();
break;
}
}
……
2.定時(shí)關(guān)機(jī)
思路:遠(yuǎn)教資源每周衛(wèi)星發(fā)送時(shí)間基本是固定的,而且每周一前就會(huì)推出資源播出表,一般如下:
周一08:00至23:59
周二08:00至23:59
周三08:00至17:30
周四6:00至8:00
周五無(wú)
周六周日重播
同時(shí),由于遠(yuǎn)教資源傳送是全國(guó)統(tǒng)一時(shí)間的,所以一般并不需要那么長(zhǎng)的接收時(shí)間。(也要考慮那些老式計(jì)算機(jī)速度及衛(wèi)星信號(hào)質(zhì)量的影響)如我使用CPU為P4 3.06G的聯(lián)想計(jì)算機(jī),每次連續(xù)播出的資源均只需兩三小時(shí)就可收完,如果不使用計(jì)算機(jī)的話,完全不必整天開(kāi)機(jī)。并且,如果已接收完整,在重播時(shí)又重新接收的話(只要開(kāi)機(jī),就會(huì)重新接收,而不是驗(yàn)證與更新,這是衛(wèi)星傳輸?shù)囊粋€(gè)特點(diǎn)),大量數(shù)據(jù)的讀寫對(duì)硬盤也是一種傷害。于是筆者根據(jù)資源播出時(shí)間表用軟件來(lái)進(jìn)行關(guān)機(jī)管理。
這部分功能可細(xì)分為以下幾步:
(1)取系統(tǒng)時(shí)間,判斷星期幾
CTime t=CTime::GetCurrentTime ();//取當(dāng)前時(shí)間
i=t.GetDayOfWeek ();//取當(dāng)天的星期幾
(2)讀寫文件進(jìn)行關(guān)機(jī)時(shí)間設(shè)置
①讀文件,取關(guān)機(jī)時(shí)間
void CHhpForYJDlg::OnReadFile()//讀文件,從中確定關(guān)機(jī)時(shí)間.
{
……
m_Hour=atoi(m_XingQi[i-1].Mid(0,2));//時(shí)
m_Minute=atoi(m_XingQi[i-1].Mid(3,2));分
m_Second=atoi(m_XingQi[i-1].Mid(6,2));秒
UpdateData(false);//數(shù)據(jù)更新
fShutdownTime.Close();//關(guān)閉文件讀寫操作
}
②寫文件,設(shè)置關(guān)機(jī)時(shí)間
void CHhpForYJDlg::OnWriteFile()//寫文件,將每星期關(guān)機(jī)時(shí)間寫入文件
{
……
CStdioFile fShutdownTime; //定時(shí)關(guān)機(jī)的時(shí)間表文件
fShutdownTime.Open(GetPath()+"\fShutdownTime.txt", CFile::modeWrite | CFile::modeCreate | CFile::typeText);
if(m_BUseStar)//是否用本軟件來(lái)啟動(dòng)接收軟件
str="1";
else
str="0";
fShutdownTime.WriteString(str+" ");
fShutdownTime.WriteString(s_FileName+" ");//寫入要延遲啟動(dòng)的軟件名
for ( i=0;i<7;i++)//將每天關(guān)機(jī)時(shí)間表寫入關(guān)機(jī)時(shí)間表
fShutdownTime.WriteString(m_XingQi[i]+" ");
fShutdownTime.Close();//關(guān)閉文件讀寫操作
}
(3)關(guān)機(jī)
void CpwzForYJ:: OnShutDown()
{
……
//必須先取得關(guān)機(jī)權(quán)限
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_
QUERY, &hToken))
MessageBox("OpenProcessToken");
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL , SE_SHUTDOWN_ NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;// one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
// Cannot test the return value of AdjustToken Privileges.
if (GetLastError() != ERROR_SUCCESS)
MessageBox("AdjustTokenPrivileges");
// 進(jìn)行關(guān)機(jī)
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
MessageBox("ExitWindowsEx");
::ExitProcess (0);
}
注:以上軟件用VC6.0編譯,在Windows XP、Windows 2000、Windows 2003下測(cè)試通過(guò)。
經(jīng)過(guò)以上設(shè)置,并運(yùn)用本人的輔助軟件,遠(yuǎn)教資源接收工作可以說(shuō)基本實(shí)現(xiàn)了自動(dòng)化,達(dá)到事半功倍的效果。如果您也是從事遠(yuǎn)程教育的同行,希望對(duì)您的工作帶來(lái)幫助,并敬請(qǐng)?zhí)岢鰧氋F意見(jiàn)。
(編輯:王天鵬)