电化教育研究 n一 二:nOVSt JOn He:=:ral::O●U ; 基于嵌入式L i n u x的校园网络多媒体信息发布系统 李占岭 马丽洁 (内蒙古电子信息职业技术学院 呼和浩特01 0070) 摘要:随着社会信息的飞速发展,“数字化校园”已被提到各个学校的规划建设中,校固网络多媒体信息发布系统是校园信息宣传、沟 通互动的平台,依赖网络技术实现远程实时更新和控制多媒体信息,作者有幸作为设计者和开发者参与了该嘎目的整个研发过程。本文结 合嵌入式Linux应用开发,对校目同络多媒体信息发布系统的设计与开发工作展开论述。首先根据系统功能需求,对系统的整体框架进行 了说明,其次分别介绍了基于W eb的B/s模式的控制终端、校园多媒体信息显示终端.网路通讯模块的详细设计及关键算法。 关键词:嵌入式Linux 冈络多媒体信息发布 中图分类号:G 71 2 文献标识码:A 文章编号:1673—979 5(20I1)01(b)一o1 85-02 1课题背景 随着社会信息的飞速发展,“数字化校 www.busy.box.net下载使用BUSYBOX软 件进行功能裁减,产生一个最基本的根文 4.1控制终端模块详细设计 4.1.1描述 园”已被提到各个学校的规划建设中,校园 网络多媒体信息发布系统是校园信息宣 传、沟通互动的平台,学生可以通过该平台 了解社会的实时新闻、学校情况、教学状 况、专业知识、专业讲座等信息。 目前作者所在院校校园网络多媒体信 息发布系统已做为我院新校区“数字化校 园”规划建设之一提到了日程,作者有幸作 为设计者和开发者参与了该项目的整个研 发过程,校园内已安装了LED屏、液晶电视 以及拼接大屏等显示设备,主要用来发布 学校的宣传片、欢迎词、公告、通知等信息。 其目的是宣传贵校实力和形象。但是管理 不便,发布内容不能通过网络发布,而是靠 操作员在本地才能更换新的信息内容,极 为不便。我院软件工程系嵌入式工作室拟 开发校园网络多媒体信息发布系统使之可 以对现有的LED屏进行联网控制发布,提 高工作效率,减少劳动力。 2嵌入式Li ntlx应用程序开发流程 本系统在软件设计上,结合ARM2440 硬件环境及LINUX软件开发环境所设计的 嵌入式系统开发基本包括以下几个步骤。 (1)建立开发环境,操作系统一般使用 Redhat Linux,选择定制安装或全部安装, 通过网络下载相应的GCC交叉编译器进行 安装(比如,arm一1inux-gcc、arnl-uclibc- gcc)。 (2)配置开发主机,配置MIN1COM,一般 的参数为波特率ll 5200Baud/s,数据位8 位,停止位为l,9,无奇偶校验,软件硬件流 控设为无。MINICOM软件的作用是作为调 试嵌入式开发板的信息输出的监视器和键 盘输入的工具。配置网络主要是配置NFS 网络文件系统,需要关闭防火墙,简化嵌入 式网络调试环境设置过程。 (3)建立引导装载程序B00T p R,从网 络上下载一些公开源代码的B00TlDADER,如 U.BOCrr、BI 、ⅥⅥ、U 、ARM-E 0Crr、RⅡ卜 BO0T等,根据具体芯片进行移植修改。 (4)下载已经移植好的Linux操作系统, 再添加特定硬件的驱动程序,然后进行调 试修改,对于带MMU的CPU可以使用模块 方式调试驱动。 (5)建立根文件系统,可以从http:// 件系统,再根据自己的应用需要添加其他 命令发送:用户从浏览器登陆以后,可 的程序。由于默认的启动脚本一般都不会 在QT控制页面实现QT图形界面程序的远 符合应用的需要,所以就要修改根文件系 程控制,对应有三个控制按钮,分别对应的 统中的启动脚本,它的存放位置位于/etc 控制命令是打开,关闭,更新文字。当用户 目录下,包括:/etc/init.d/rc.S/etc/pro- 点击相应按钮时,浏览器会把用户在表单 file/etc/.profile等。 中输入的数据连同对应的CGI文件的请求 (6)建立应用程序的FLASH磁盘分区, 一起发送给HTTPD ̄务器,服务器判断对 使用JFFS2或YAFFS文件系统,这需要在内 应的CGI程序是一个可执行程序,会执行该 核中提供这些文件系统的驱动,本系统使 程序。播放器的远程控制同理,包括打开, 用非线性FLASH(NAND型)8MB~5 1 2MB。 关闭,暂停,下一首,重头开始按钮,当用户 (7)开发应用程序,可以放入根文件系 点击对应按钮是相应的CGI程序就会执行。 统中,也可以放入YAFFS、JFFS2文件系统 其中每个CGI程序实现一个客户端连接,通 中。 过网络通讯模块实现命令发送。 (8)烧写内核、根文件系统和应用程序, 文件上传:用户在文件上传的控制页 发布产品。 面,用户选定要上传的文件,通过CGI程序 建立的网络连接,上传到开发板上,同时打 3系统概述 开数据库将上传的文件信息存储在对应的 校园多媒体信息发布系统是一个使 表中。 用方便的校园信息发布平台。分为控制终 4.1.2 QT图形界面关键算法 端,网络通讯,显示终端三大模块。其中控 更新显示终端滚动字幕算法: 制终端提供用户界面实现对视频媒体的 表单部分:”<form action=’change_list. 播放控制,视频媒体文件和图片文件的 cgi’method=。post >” 上传,文本信息的更新。网络通讯负责将 对应change—list.cgi程序: 控制终端的命令和信息传递到显示终端。 int main(void) 显示终端则负责响应由网络通讯传递来 { 的控制命令和信息,实现校园多媒体信 int sfd=0I 息的发布。根据其功能需求,该系统业务 int srvport—SERVPORT} 流程如下。 char*servip:SERVIP; (1)管理员通过控制终端发布控制命令 char str[1024】=”QT—CHG—LIS”l// 或上传文件。 初始化控制命令 (2)控制命令控制校园多媒体视频文件 char*txtI 的播放。控制图形界面的开启,关闭。滚动 cgL/nit(); 字幕的实时更新。 cgi—init_headers()l (3)管理员从控制终端上传视频文件或 cgiprocess form()} 图片到显示终端。 txt cgL_param(”up_txt”);//获得管 (4)显示终端读取本地视频文件,图片 理员输入的文本内容 文件,文本文件,实现校园多媒体信息发 strcat(str,txt); 布。 sfd=netcli—socket(srvport,servip)I/ /与开发板上命令监听服务器建立连接 4模块设计 write(sfd,str,strlen(str))l//将控制命 根据业务流程将系统划分成三大模 令与文本内容写到网络套接字中 块,控制终端模块,主要功能为发布控制命 close(sfd); 令和上传文件,网络通讯模块,主要功能为 cgi—end(); 传输控制命令和传输文件;显示终端模块 return 0# 是运行Mplayer媒体播放程序和运行QT图 } 形界面程序。 4.1.3 Mplayer播放器控制关键算法 中国科教创新导刊China Education Innovation Herald 1 85 目 China EducatlOn lnnOVatfOn Herald …I I…u[ 电化教育研究 } 表单部分:”<form action=‘start mplayer. cgi method:’post >” int main(int argc,char*argv[1) { pidt pid; 对应start mplayer.cgi算法设计: int main(void) { int sfd=0; int srvport=SERVPORT; if(i-二=1) { execl(”./qt”, “qt”, ”一qws”,”一 nomouse”,int i,cmds,qtn; int qt socket fd; NULL);//执行qt图形界面程 for(i=0;i<2;i++) I 序 perror(”execl(qt)\n”)l pid=fork(); }} char*str ”FILMSTART”;//初始 qt pid[i】=pid; 4 3网路通讯模块详细设计 化控制命令,此处控制命令为播放 if(pid一…1)sys—exit(”forki()”); 此模块包含服务器和客户端部分。服 if(pid=一0)break; 务器有两个,都安装在开发板上,一个命令 cgLinit(); cgiinitheaders();}//创建两个子进程,为启动qt程序和 监听服务器端用来监听来自客户端的控制 sfd—netclis]mplayer播放器的命 ocket(srvport。servip、 , mplayer程序做准备。父进程负责监听qt图 命令请求,如果是控¥1char*servip=SERVIP{ —与显示终端服务端建立连接 形界面程序的本地套接字。 write(sfd,str,strlen(str))}//将控制命令 if(pid!=0)//此处为父进程 写到网路套按字中,实现命令传递 { close(sfd); qtinitcmd(); cgiend(); qt socket fd=get domain socket return 0; (”qt—sock”); } while(1)//循环监听qt本地套接字,并 4.1.4上传文件关键算法 作命令解析 表单部分:”<form action= add pic. { cgi。method=’post >” qt n = read d0main socket 对应add—pic.cg蹲法设计: (qt—socket—fd,qt—cmdstr,1 024);//?读取 if(cgLparam(”action”)) qt本地套接字 { if(qt n!=0&&qt n!一1) iflename=cgif param(”filename”); if(filename) qt cmdstr[qt n】= \O’; { } sprintf(buf。 ”./myscp%s/%s%s: else{ %s%c ,PACKS,filename,BOARD—IP, sleep(1); PICPATH,0); C0ntlnUe 0 // 调用mscp程序,也就是一hf#文件 的客户端程序,上传文件 cmds=qt get cmd(qt—cmdstr);//解 sqladd=sqlite3mprintf( ’insert into 析控制命令 srcpic(fiiename,sort,addtime)values(%Q, witch(cmds) %s,%Q);”,filename,sort,now()); { ret=sqlite3 exec(db,sql add,NULL, case 0: NULL,&err);//向数据库中添加添加上 qtdisable(qt—pid[1]); //关闭QT程序 传记录 break{ if(ret!=SQLITE OK) case l: { qtenable(); //开始QT程 puts(err); 序 puts( \n”); break; sqlite3close(db); case 2: exit(1); qt change txt list(qt pid[11);//实时 }}} 改变滚动字幕 4.2显示终端模块详细设计 break; 4.2.1模块描述 case 1: 该模块实现校园多媒体机的现实终端 sleep(1); 界面设计。根据存放在本地的配置文件, break; mplayer媒体播放器将读取本地的视频文 件进行循环播放。QT图形界面程序将读取 本地的图片文件和文本文件进行循环播 close(qt socket fd); 放。同时两个程序会分别监听各自的本地 } 套接字,来响应由网络通信模块传递来的 if(i=-u 0) 控制命令。实现更新滚动字幕,并根据控制 { 终端发送的命令来实时控制视频的暂停、 execl(”./playts”,”playts ,NULL); 播放和停止,打开或关闭QT图形程序。 //执行mplayer程序 4.2.2显示终端启动关键算法 . perror(”execl(mplayer)\n”); 86 中国科教创新导刊China Education Innovation Herald 令则创建mplayer媒体播放器程序的本地 套接字,通过该套接将命令传递 ̄Nmplayer 播放器。如果是QT图形程序的控制命令则 创建QT程序的本地套接字,通过该套接将 控制命令传递到QT图形程序。另一个文件 接收服务器端用来响应客户端上传文件的 请求,当控制终端发起上传文件文件请求, 服务器端将进行响应并建立连接,当文件 上传到开发板完毕之后,断开连接,服务器 继续监听,如此循环下去。客户端全部通过 控制终端的CGI程序调用。 本系统在开发过程中采用QT图形系 统、inplayer媒体播放程序作为校园多媒体 系统的显示终端,与一个B/S架构的客户控 制终端相结合,利用网络套按字作为信息 传递媒介,实现了系统的大部分需求。本系 统也将会在今后的应用中逐步完善,做到 尽善尽美。 参考文献 【1】吴岳.Linux C程序设计大全【M】.北京: 清华大学出版社,2009,2. [2](J/0)Blanchette,J.,Summerfield,M.[著], 闰锋欣[译】.c++GUI Qt 4编程(第2 版)[M】.北京:电子工业出版社,2008,8. f3】(FH)Raghavan P.【著】,宋劲杉,等[译1.著 嵌入式Linux系统设计与开发fM1.北京: 电子工业出版社,2008,l0. [4】韦东山.嵌入式Linux应用开发完全手 册[M】.北京:人民邮电出版社,2008,8. 【5】刘学勇,陈建伟.精通Linux C编程【M】. 北京:清华大学出版社,2009,7. [6】周建新.基于网络产品信息发布系统研 究与实现【D】.大连理工大学,2006.