远程控制技术在实验教学中的探索与研究
0 引言
在计算机教学中,上机实验所占的比例越来越大。如何有效管理学生上机实验课,提高学生上实验课的主动性和积极性,显得尤为重要。以前的实验教学,常采用服务器共享的方式,收发作业,操作起来麻烦且效率低,并且还不能实时与学生沟通和有效进行监控。本文通过研究远程控制技术在实验教学中的应用,让学生专注于本节课所要做的实验,老师能方便地对实验课的进行管理,自动对学生上实验课的一些情况做好记录,作为老师对学生本次实验课评价的重要参考。使用visual studio 2010作为开发工具,数据库采用sql server 2008,利用网络编程、多线程编程、系统编程和远程控制技术,开发出一个实用高效的系统。
1 利用远程控制技术所开发的系统功能简介
系统在软件功能模块上分为两个部分:教师机/学生机程序。学生机会随系统自动启动,登录到教师机上。在教师机打开的主窗口上,老师可以进行所有功能操作。
??S屏幕广播
将教师机的屏幕画面同步广播给全体或部分学生。解决了以前学生上课时观看投影仪不清楚的问题。
??S文件发布
将本次课要用到的软件、课件或作业快速地发布到学生机上。
??S作业收取
学生可以向老师提交多个文件和目录等作业,配合教师机的“文件传输”功能,完全实现了学生和老师之间的文件交互,实现了学生作业的网上分发与提交。老师可以灵活地设置要收取作业的目录。
??S实时对话
老师和学生可以实时地进行消息传递。当学生有问题时,可以通过消息的形式发布给老师,老师可以在线解答或下去进行指导。
??S点名签到
学生在规定的时间内,将姓名和学号发送到教师机上,教师机将签到的学生自动记录到文件中。
??S遥控辅导
教师机可以遥控和操作已登录的学生的计算机,与学生进行双向交流,对学生进行辅导式的教学。
??S进程监控
可以即时查看每台学生机上已经打开的应用程序,以及正在运行的进程信息。如果发现学生上课私自玩游戏或聊天,又或者发现异常的进程,都可以随时远程终止它们。
??S屏幕锁定
锁定某个或全部学生机电脑的键盘和鼠标,让学生们认真听课。
??S远程关机
下课之后,可以统一将学生机关闭。
??S远程开机
需要对机房的微机进行维护时,可以将微机远程开机。
2 远程控制技术在实验教学中应用要用到的算法举例
远程控制实现的原理都是相似的:在控制端计算机上运行一个程序,在被控端计算机上也运行一个程序,这两个程序通过socket进行通信和传递数据,从而达到远程控制的目的。
2.1 屏幕截图算法
屏幕截图的基本功能是通过两个函数来实现的:Bmp2Stream和Screen2Bitmap。Screen2Bitmap的作用是将屏幕截图,并保存到一个位图中,然后返回这个位图的句柄;而Bmp2Stream则是为了网络传输作准备,它接收一个位图句柄,对这个位图进行编码,并拷贝到一个缓冲区里。下面是这两个函数的具体实现:
HBITMAP Screen2Bitmap()
{
HDC hscrdc, hmemdc; //屏幕和内存设备描述表
HBITMAP hbitmap, holdbitmap; //位图句柄
int nwidth, nheight; //位图宽度和高度
int xscrn, yscrn; //屏幕分辨率
//为屏幕创建设备描述表
hscrdc = CreateDC("display", NULL, NULL, NULL);
//为屏幕设备描述表创建兼容的内存设备描述表
hmemdc = CreateCompatibleDC(hscrdc);
//获得屏幕分辨率
xscrn = GetDeviceCaps(hscrdc, HORZRES);
yscrn = GetDeviceCaps(hscrdc, VERTRES);
nwidth = xscrn;
nheight = yscrn;
//创建一个与屏幕设备描述表兼容的位图
hbitmap = CreateCompatibleBitmap(hscrdc, nwidth, nheight);
// 把新位图选到内存设备描述表中
holdbitmap = (HBITMAP)SelectObject(hmemdc, hbitmap);
// 把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hmemdc, 0, 0, nwidth, nheight, hscrdc, 0, 0, SRCCOPY);
//得到屏幕位图的句柄
hbitmap = (HBITMAP)SelectObject(hmemdc, holdbitmap);
//清除
DeleteDC(hscrdc); DeleteDC(hmemdc);
// 返回位图句柄
return hbitmap;
}
BOOL Bmp2Stream( HBITMAP& hBmp, BYTE* &bBuf, long &size, DWORD type = CXIMAGE_FORMAT_JPG,int nWidth=0, int nHeight=0 )
{
if(hBmp != INVALID_HANDLE_VALUE)
{
CxImage img;
if(img.CreateFromHBITMAP(hBmp)) //位图句柄构建对象
{
if(nWidth <= 0)
{
nWidth = img.GetWidth();
}
if(nHeight <= 0)
{
nHeight = img.GetHeight();
if(!img.Resample(nWidth, nHeight)) //缩放位图(下转第186页)
(上接第150页)
{
return FALSE;
}
if(img.Encode(bBuf, size, type))
return TRUE;
}
}
return FALSE;
}
return 0;
}
3 远程控制技术在实验教学中需要改进提高的地方
利用远程控制技术开发的系统,如进一步与网络考试相结合,能在很大程度上提高实验教学的效率。在线发布试卷,学生做完后自动提交到教师机上。在教师机上,能够对某些科目的试卷自动批阅。
4 结束语
在上机实验中应用远程控制技术,可以大幅度提高课堂效率,激发学生的学习兴趣,提高教学效果。利用模块化方法设计开发的系统,可以针对具体情况,不断发展和完善。远程控制技术在实验教学中将会起到越来越重要的作用。