关于远教资源接收之解决方案

2009-03-11 10:10潘伟珍何浩平
中国教育信息化·基础教育 2009年1期
关键词:远程教育解决方案

潘伟珍 倪 坚 何浩平

摘 要:国家教育部近年进行的远程教育已遍及全国各地。远教设备已全部安装到位,在教育资源方面也给一线教育工作者提供了有力的支撑,给教学带来了便利与成效,但在资源接收方面仍存在一些困扰和问题。笔者在实践中不断摸索,针对问题设计了相应的解决方案供远程教育工作者参考。

关键词:远程教育;资源接收;解决方案

中图分类号:TP315文献标识码:A文章编号:1673-8454(2009)02-0064-03

国家教育部近年进行的远程教育已遍及全国各地。远教设备已全部安装到位,在教育资源方面也给一线教育工作者提供了有力的支撑,给教学带来了便利与成效。远程教育资源的接收工作是进行远教的基石,接收的情况好坏直接关系到此项工作的成败。

本人一直从事信息技术教学与远程教育工作,在多年的教学实践中,曾一直被以下一些问题所困扰:一个是每天要定时开机。另一个是无信息接收时为了设备的保护及省电等原因应及时关机。再一个更麻烦的是,自从本人将系统重做及添加了一些应用程序之后,可能是由于系统带的服务增多了,本来只需手动开机后即自动开始卫星锁定,再开始接收工作,这一切不需人工干预,可现在当接收软件运行时总是提示“卫星尚未锁定”错误(其实这时卫星已经锁定,你再手动进行锁定也没用)!而且点“确定”几次后仍是如此。需过一两分钟再点“确定”按钮,然后再点“开始”按钮。从开机到开始接收大约需要几分钟。

在实践中笔者经过不断摸索,终于解决了这一系列问题。现在,远教接收工作基本实现自动化。现抛出本人的解决方案与各位共勉,希望能给各位远教工作者带来方便。

一、定时开机

国家教育部配置的联想计算机主板支持定时开机功能(当然现今所有计算机几乎都支持此功能)。方法是在CMOS中进行设置:

Power Management FeaturesResume On RTC Alarm设为Enabled;

Date(of Month) Alarm设为0(0为每天,否则为每月某天);

Time(hh:mm:ss)Alarm设为开机时间(本人根据需要设为6∶00∶00, 即6点开机)。

二、来电启动

对于农村及偏远山区,停电几乎是不可避免的事情。笔者所工作的地区在用电紧张的夏季更是断电频繁,一天中时来时断。同时,有了后面所设的定时关机作保障,在不需开机的时间段来电开机后会自动关机。

其实,在CMOS中同样可以进行此项的设置。方法是:

进入Integrated PerigheralsSuperIO Device进行设置;

Restore On AC Power Loss 设为Power On (Power off 为来电保持关机,Power On 为来电启动,Last State为恢复停电前状态)。

三、远教接收与定时关机

部分计算机由于自带服务过多,使卫星尚未锁定时接收软件便已启动,于是报错,针对上述问题本人曾想,何不用程序来模拟人工做反复点击“确定”、“开始”按钮呢?可是实现起来有些麻烦,后来也认为没有必要。 找到问题的症结所在,我们直接在计算机启动一分钟后再启动接收软件不是更方便吗?先是从系统的“开始程序启动”中删除远教接收软件的快捷方式,再加入我的软件,让我的软件启动后开始计时,一分钟后再调用接收软件进行接收,这时系统自带的服务已基本到位,卫星也已经锁定,就不会再出现以上所说的问题。同时针对每周数据接收的时间规律,让程序接收数据后自动关机,这样也就解决了关机问题。

思路对了,问题就解决了一半。于是笔者利用业余时间编了一个远教辅助管理软件,对远教接收机进行自动化管理。软件可在我个人网站下载:http://flybase.51.net/YJFuZhu.exe。此软件的源文件也共享给各位:http://flybase.51.net/YJYuanMa.rar。截图如图1所示。

各个主要部分源码剖析于下:

1.开机时启动接收软件与关机倒计时

方法是软件启动后进行60秒倒计时,时间到了再调用接收软件。主要的源码于下:

……

void CHhpForYJDlg::OnTimer(UINT nIDEvent) //计时器

{

CTime curTime = CTime::GetCurrentTime();

switch(nIDEvent)

{

case 1: // 启动远教接收程序计时器

……

number60--;

if (number60<=0)

{

WinExec("C:\FileTray\FileTray.exe",1);// 调用接收软件

KillTimer (1);//停止计时器1

……

}

break;

case 2://定时关机计时器

……

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.定时关机

思路:远教资源每周卫星发送时间基本是固定的,而且每周一前就会推出资源播出表,一般如下:

周一08:00至23:59

周二08:00至23:59

周三08:00至17:30

周四6:00至8:00

周五无

周六周日重播

同时,由于远教资源传送是全国统一时间的,所以一般并不需要那么长的接收时间。(也要考虑那些老式计算机速度及卫星信号质量的影响)如我使用CPU为P4 3.06G的联想计算机,每次连续播出的资源均只需两三小时就可收完,如果不使用计算机的话,完全不必整天开机。并且,如果已接收完整,在重播时又重新接收的话(只要开机,就会重新接收,而不是验证与更新,这是卫星传输的一个特点),大量数据的读写对硬盘也是一种伤害。于是笔者根据资源播出时间表用软件来进行关机管理。

这部分功能可细分为以下几步:

(1)取系统时间,判断星期几

CTime t=CTime::GetCurrentTime ();//取当前时间

i=t.GetDayOfWeek ();//取当天的星期几

(2)读写文件进行关机时间设置

①读文件,取关机时间

void CHhpForYJDlg::OnReadFile()//读文件,从中确定关机时间.

{

……

m_Hour=atoi(m_XingQi[i-1].Mid(0,2));//时

m_Minute=atoi(m_XingQi[i-1].Mid(3,2));分

m_Second=atoi(m_XingQi[i-1].Mid(6,2));秒

UpdateData(false);//数据更新

fShutdownTime.Close();//关闭文件读写操作

}

②写文件,设置关机时间

void CHhpForYJDlg::OnWriteFile()//写文件,将每星期关机时间写入文件

{

……

CStdioFile fShutdownTime; //定时关机的时间表文件

fShutdownTime.Open(GetPath()+"\fShutdownTime.txt", CFile::modeWrite | CFile::modeCreate | CFile::typeText);

if(m_BUseStar)//是否用本软件来启动接收软件

str="1";

else

str="0";

fShutdownTime.WriteString(str+" ");

fShutdownTime.WriteString(s_FileName+" ");//写入要延迟启动的软件名

for ( i=0;i<7;i++)//将每天关机时间表写入关机时间表

fShutdownTime.WriteString(m_XingQi[i]+" ");

fShutdownTime.Close();//关闭文件读写操作

}

(3)关机

void CpwzForYJ:: OnShutDown()

{

……

//必须先取得关机权限

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");

// 进行关机

if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))

MessageBox("ExitWindowsEx");

::ExitProcess (0);

}

注:以上软件用VC6.0编译,在Windows XP、Windows 2000、Windows 2003下测试通过。

经过以上设置,并运用本人的辅助软件,远教资源接收工作可以说基本实现了自动化,达到事半功倍的效果。如果您也是从事远程教育的同行,希望对您的工作带来帮助,并敬请提出宝贵意见。

(编辑:王天鹏)

猜你喜欢
远程教育解决方案
艾默生自动化解决方案
解决方案和折中方案
S700K-C转辙机防水解决方案探讨
远程教育中教学交往策略探究
发挥远程教育平台优势?探索社区教育数字化学习模式
教育信息处理在远程教育中的应用
从《远程教育》35年载文看远程教育研究趋势
网络远程教育学习行为及效果的分析研究
基于IPoverDVB—S单向传输模式的远程终端系统与数据维护技术
4G LTE室内覆盖解决方案探讨