薛辉
摘 要:为了使演讲者讲解起来更加方便,提出了基于手机控制的电子教鞭系统,分析了系统的需求,研究了系统的体系结构,设计了系统的功能模块,通过socket进行手机端与电脑端的通信,给出了通信的关键代码,并实现了手机端和电脑端的功能。对比表明,该系统比电子教鞭功能更加强大,使用起来更加方便。
关键词:手机; 电子教鞭; 通信; 传输
中图分类号: TG409
文献标志码: A
Abstract:In order to make speaker more convenient to explain his speech, an electronic pointer system based on mobile phone control was proposed. The paper analyzed the requirements of the system, studied the structure, designed the functional modules, and realized the functions of the mobile phone terminal and the computer terminal. The communication among terminals was carried out through socket. The key code of communication was given. The comparison shows that the system is more powerful than the electronic pointer, and it is more convenient for use.
Key words:Mobile phone; Electronic pointer; Communication; Transmission
0 引言
电子教鞭已经普遍使用于教师上课、会议演讲、商家展演等场合,它可以扩大讲解者的活动范围,能够使讲解更加具有亲和力和感染力[1]。如今手机已经使用于生活的方方面面,如果能用手机实现电子教鞭的功能,讲解者就不用再购买和携带电子教鞭,工作更加方便[2]。经检索文献,目前已经有一些这方面的研究,高帅等人提出了基于局域网的电子教鞭系统[3],王魁生等人提出了基于Agent的电子教鞭系统[4],刘涛等人提出了集存储和控制于一体的手机教学助手[5],李旭东等人研究了兼具版权保护功能的电子教鞭系统[6],但目前对手机控制的电子教鞭系统的研究还不够深入,便利性和实用性仍显不足。基于此,本文设计和实现了一款基于手机控制的电子教鞭系统,现介绍如下:
1 系统的设计
1.1 系统需求分析
电子教鞭系统需要通过手机实现电子教鞭的功能,电子教鞭的功能主要包括以下四个方面:
(1)电子教鞭最主要的功能是控制PPT上下翻页播放;
(2)电子教鞭还可以发射激光,在屏幕上形成一个显著的提示点,提示讲解者当前解说的位置[7];
(3)有的电子教鞭还带有画笔功能,可以调用PPT自带的画笔圈出当前讲解的重点;
(4)还有些电子教鞭带有U盘功能,方便讲解者把PPT拷贝到电脑上。
除此之外,当听众较多,讲解的场地较大时,需要对讲解者的声音进行扩音,因此本系统在电子教鞭的基础上还增加了扩音功能。
1.2 系统的体系结构
要用手机实现电子教鞭的功能,主要是通过手机连接电脑控制PPT的播放,本文设计的系统体系结构如图1所示,给手机上制作APP,用来发出控制命令,手机通过无线局域网把控制命令发送给电脑,在电脑上制作控制软件,控制软件把接收到的控制信息发送给PPT,从而控制PPT的播放。
1.3 系统的功能模块
基于系统的需求分析,本系统设计的功能模块如图2所示。
系统分为手机端和电脑端,电脑端把本机的IP地址和端口号生成二维码,用手机扫码后进行连接。手机端提供一个人机交互界面,界面上显示控制PPT上下翻页的按钮、提示点功能的开关、通过手指划动可以移动画笔的区域、发送文件按钮以及扩音开关[8],操作这些控件后执行相关的程序,并把控制命令、文件或声音通过通信模块发送给电脑端。电脑端接收到控制命令后,根据命令控制PPT的播放、显示或消除提示点,以及绘制或擦除笔迹,接收到传输过来的文件后,可以直接打开,接收到传输过来的声音后,通过连在电脑上的音箱进行播放,形成扩音效果。
2 系统的实现
2.1 手机端与电脑端的通信
在本系统的体系结构中,手机端与电脑端的通信是系统实现的关键所在,包括如何通信和通信时传输什么信息。本系统手机端采用Android平台[9],电脑端采用java制作,通过socket来实现手机端与电脑端的通信[10]。通信时通过发送字符形式的命令实现对PPT的控制,通过发送字节流实现文件或声音的传输,并通过发送字符对文件或声音的传输进行控制。
2.1.1 Socket通信
在Socket通信中,把手机端看作客户端,电脑端看作服务器端,如图3所示。
连接时先在服务器端用ServerSocket类指定端口号并创建套接字,然后用accept()方法等待客户端的连接,接着在客户端连接socket,用getOutputStream()方法獲取输出的字节流,然后用OutputStream类的flush()方法把字节流发送给服务器端,服务器端用getInputStream()方法接收到字节流之后,用read()方法把字符读取出来,最后关闭socket连接[11]。由于在连接的过程中可能会出现
错误,所以要把代码写在try语句里。
服务器端的关键代码如下:
public void server(){
try {
serverSocket = new ServerSocket(PORT);//绑定端口
while (true) {
clientSocket = serverSocket.accept();
//用accept()方法等待客户端的连接
while (true) {//不断读取客户端Socket的消息
byte[] b = new byte[];
int n = clientSocket.getInputStream().read(b);
String string = new String(b, 0, n);
if (string.equals("close")) {//客户端通知关闭的标识,中止死循环,等待下个客户端Socket
break;
}
System.out.println(string);
}
}
}
catch (IOException e) {e.printStackTrace();}
}
客户端的关键代码如下:
public void client() {
try {
socket = new Socket(HOST,PORT);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(string.getBytes());
outputStream.flush();//将输入的文字发给服务端
}
catch (IOException e) {e.printStackTrace();}
}
2.1.2 信息传输
系统信息传输流示意图如图4所示。
本系统传输的信息主要包括两种,一种是对PPT的控制信息,比如控制PPT翻页、控制提示点是否显示,控制画笔是否绘制笔迹以及绘制时控制画笔移动等。这种信息可以通过自定义字符来表示。本系统自定义的命令字符如表1所示。
另外一种传输的信息是文件或者声音,也通过socket通信来实现。在socket通信里,可以采用字节流的方式用DataOutputStream传送文件或声音数据。传输时通过自定义命令字符控制文件或声音的传输,用“file(filename,filesize)”表示发送的文件名和文件的大小,用“voiceon”表示传输声音, “voiceoff”表示不传输声音。命令字符、传输文件和传输声音分别设置在不同的线程里,命令字符所在的线程控制文件和声音传输的线程。
手机端上传文件的关键代码如下:
public void upload() {
try {
Socket socket = new Socket(HOST,filePORT);
OutputStream outputStream = socket.getOutputStream();
File file = new File(filePath);
if (file.exists()) {
FileInputStream fileInputStream = new FileInputStream(filePath);
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
byte[] bytes = new byte[1024]; //每次傳输1024字节
int length = 0;
while ((length = fileInputStream.read(bytes)) != -1) {
dataOutputStream.write(bytes, 0, length);
}
socket.shutdownOutput(); //告诉服务端,文件已传输完毕
}
} catch (IOException e) {e.printStackTrace();}
}
2.2 手机端功能的实现
控制PPT播放通过传送命令字符来实现。手机端发出命令字符,电脑端接收到命令字符后根据命令字符控制PPT完成相应的动作。手机端人机交互界面如图5所示。
界面上的上下按钮用来控制PPT上下翻页,按钮按下时触发onClick事件,上按钮发出“up”字符,下按钮发出“down”字符,并通过Socket连接发送给电脑。提示点开关按钮控制是否显示提示点,当打开该按钮时,手机端发出“pointon”字符,当关闭该按钮时,手机端发出“pointoff”字符。画笔开关按钮控制在画笔区域划动手指时,是否在电脑屏幕上绘制笔迹[12],当打开该按钮时,手机端发出“penon”字符,当关闭该按钮时,手机端发出“penoff”字符。画笔的笔迹绘制在提示点所在的位置,所以只有提示点显示时该按钮才可以打开。当该按钮打开时,手机端根据手指的移动发出位移字符“x,y”,其中x和y可以为正值或者负值,用来表示提示点移动的距离和方向。
扩音开关按钮用来控制是否录制讲解者的语音并发送。发送文件按钮用来选择文件,选择好了之后通过Socket通信发送出去。
2.3 电脑端功能的实现
电脑端接收到手机端发送来的命令后,根据命令执行不同的操作,下面分别讲述:
2.3.1 上下翻页功能的实现
播放PPT时,可以通过键盘上的Up和Down键实现幻灯片上下翻页,所以,在本系统里,电脑端通过模拟键盘按下事件实现该功能。在Java里,可以使用Robot类的keyPress和keyRelease方法模拟键盘按下事件,从而控制PPT的播放。
2.3.2 提示点和画笔功能的实现
在本系统里,通过PPT自带的红色指针来实现提示点的功能。PPT自带的指针分为箭头、笔和荧光笔三种,其中笔的指针是一个红色的小圆点,按下ctrl+P快捷键可以把指针切换成笔,此时屏幕上显示该红色小圆点,通过鼠标可以移动红色小圆点的位置,实现提示点的功能,此时按下鼠标左键可以用画笔绘制,按下e键可以清除画笔的笔迹。电脑端采用模拟按键事件和模拟鼠标事件实现这些功能。模拟按键事件同2.3.1,使用Robot类的keyPress和keyRelease方法实现,模拟鼠标事件通过Robot类的mouseMove方法实现,配合mousePress和mouseRelease方法模拟鼠标左键按下和弹起,可以实现画笔功能。
2.3.3 文件传输和扩音功能的实现
把接收到的数据流写入文件即可在电脑端实现文件接收功能,如果传输过来的是PPT文件,电脑端直接打开它,方便讲解者使用,如果传输过来的数据流是音频数据,把传输过来的数据流通过电脑上的播放器播放即可实现扩音功能。
3 本系统与电子教鞭对比
本系统与电子教鞭的对比如表2所示。
电子教鞭是用硬件构成的[13],而本系统是用软件构成的,因此本系统的成本低于电子教鞭。一般的电子教鞭的传输距离只有10 m左右,功率大的也只有30 m左右,而本系统不受物理距离的限制,只要无线局域网覆盖的地方都可以连接,传输距离远大于电子教鞭。由于电子教鞭没有扩音的功能,需要讲解者单独佩戴无线麦克风,很不方便,而手机上本来就有声音输入部件,本系统利用手机的声音输入部件和连接在电脑上的音箱方便的实现了扩音功能。另外,电子教鞭需要单独携带,而本系统安装在手机上,不用单独携带。从这些对比可以看出来,本系统比电子教鞭功能更加强大,使用起来更加方便。
4 总结
讲解PPT时使用电子教鞭操作已经非常普遍,本文设计了一款基于手机控制的电子教鞭系统,通过手机实现电子教鞭的功能,使讲解者可以快捷的拷贝PPT文件,灵活的控制PPT播放,并具有扩音功能,使用起来非常方便。还可以给本系统增加讲解者和听众的互动功能,进一步活跃讲解气氛,增強讲解的感染力。
参考文献
[1] 夏炎.电子教鞭软件在计算机实验室管理中的应用[J].电子测试,2013(22):154-155.
[2] 刘仁贵,党建林,侯镇锋,等.基于Android手机的调光系统的设计与实现[J].电子设计工程,2018,26(21):175-179.
[3] 高帅,范金龙,武建芳,等.基于局域网的Android电子教鞭设计[J].软件导刊,2015,14(4):103-104.
[4] 王魁生,屈展.基于Agent的电子教鞭系统[J].计算机工程与应用,2003(30):112-113.
[5] 刘涛,张玲.集存储和控制于一体的手机教学助手[J].计算机系统应用,2017,26(12):240-243.
[6] 李旭东.兼具版权保护功能的多媒体教学电子教鞭系统设计[J].中国现代教育装备,2012(19):5-6.
[7] 刘钢,陈笑怡,李丹立.基于USB摄像头的激光笔辅助教学系统的设计与实现[J].计算机应用与软件,2011,28(10):77-79.
[8] 张屹峰. 多媒体教室的自制激光笔交互系统[D].上海:上海交通大学,2013.
[9] 殷涛,崔佳冬.基于Android软件开发组件化研究[J].计算机应用与软件,2019,36(9):16-20.
[10] 周波. 基于Socket的Android公司固定资产管理系统的设计和实现[D].杭州:浙江理工大学,2015.
[11] 胡晶晶.基于Socket的Android聊天室系统设计与实现[J].微处理机,2014,35(4):50-51.
[12] 王志华. 激光笔交互技术研究[D].大连:大连理工大学,2015.
[13] 张麒麟. 基于图像处理的人机交互激光笔设计与实现[D].武汉:华中科技大学,2016.
(收稿日期: 2019.11.05)