《基于嵌入式系统的聊天程序的设计说明》由会员分享,可在线阅读,更多相关《基于嵌入式系统的聊天程序的设计说明(21页珍藏版)》请在金锄头文库上搜索。
1、 . . . 课程设计报告书设计名称: 基于嵌入式系统的聊天程序设计 课程名称: 嵌入式系统开发 / 摘要随着IT技术的日益发展,嵌入式设备的功能越来越强大。 嵌入式设备决不再只是充当一个小小的个人信息管理工具了,更重要的是可以上网浏览、收发,在线聊天等。然而就目前国市场来说,并不是所有的嵌入式设备都具备以上所有的功能,即使具备,也可能由于缺乏相应的服务而不能实现。但可以预见,嵌入式设备发展的趋势和潮流就是计算、通信、网络、存储等功能的融合。目前市场上大多数的嵌入式系统都是商业化产品,价格昂贵,因此在开发过程中有必要使用一个模拟器,使得在PC上可以模拟一个嵌入式设备。在Pc机上可以方便的开发和
2、测试程序,并且可以帮助工程师快速的进行分析和改进,提高了工作效率和降低了项目的开发成本。在嵌入式操作系统的领域中,Linux以其特有的魅力得到了众多开发商的亲睐。Linux这些特性包括可以移植到多个同结构的CPU和硬件平台上,有很好的稳定性以及各种性能的升级能力。嵌入式linux在电子行业的应用很广泛,学习嵌入式linux显得非常重要。这次课程设计的主要目的是检验上学期学习linux后的效果。通过基础题的代码编写,熟悉linux C语言编程技巧。通过完成聊天程序的设计,熟悉linux底层编程。利用QT设计界面,缩短开发时间。关键字:嵌入式linux;基础题;聊天程序;QT 一、引言1二、 系统
3、分析22.1开发背景22.2聊天程序的基本需求22.3需实现的主要功能2三、需求分析33.1 QT设计33.1.1 客户端QT界面设计43.2服务器端和客户端的数据传输方式43.3 服务器端功能设计53.4客户端功能设计5四、总体设计54.1 总体功能5五、 详细设计65.1 功能分析和描述65.2 客户端功能模块65.2.1 连接服务器65.2.2发送消息功能65.2.3接收消息模块75.3 服务器功能模块8六、代码实现86.1 客户端代码86.1.1 QT构造和析构函数86.1.2 创建套接字106.1.3 创建线程116.2 服务器端代码11七、功能的实现过程13八、总结13一、引言随着
4、IT技术的飞速发展,特别是互联网的迅速普及,3C合一的加速,数字化时代已经来临。嵌入式系统是数字化时代的一大主流产品,世界各国在此领域开始了激烈竞争,以争取获得主导地位。嵌入式系统是数字化产品的核心。为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCPIP协议族软件支持;由于家用电器相互关联及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEEl394、USB、Bluetooth或Ir DA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编
5、程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML、WML等。可以想象,如果一个体积很小的嵌入式系统能够进行在线聊天,HrrP通信,这将是会一件充满意义的事情。但是现在大多数的嵌入式系统都是商业化产品,价格昂贵。所以嵌入式系统开发前期投入比较大,开发工具投入高。为了改变这种状况,有必要设计一个模拟器,使得在PC上可以模拟一个嵌入式设备。在PC机上可以方便的开发和测试程序,并且可以帮助工程师快速的进行分析和改进,提高了工作效率和降低了项目的开发成本。随着自由软件理念日益为大众广为接受,一批自由软件在IT的各个领域取得了巨大成功,Linux是其中最具代表性的一个。其自由、开放的特
6、性吸引了大批软件厂商和独立开发人员。多年的发展和业界的共同努力已使其成为高效、稳定、低成本的操作系统。而且由于Linux开放源代码,任何人都可以对其进行裁减、修改,以适应自行开发的需要。二、 系统分析2.1开发背景IRCIntemet Relay Chat,网络中继聊天协议用于文本交谈被设计出来已经有许多年了。IRc协议是基于客户服务器模型的,可以很好地分布式地在许多机器上运行。一个典型的设置涉及一个进程,它作为中心点接受客户的连接,并且实现要求的消息传送多元技术和其它的功能。这种分布模型,由于它要求每个服务器都拥有全局状态信息,限制了一个网络所能达到的最大规模。因此是此协议最令人不能容忍的问
7、题。现存的网络能够以难以置信的速度持续增长,我们必须感硬件制造商们给了我们比以往更加强大的系统。IRC协议本身就是个会议系统,所以非常适合分布式的多个机器上使用。一个典型的建立包括一个单一的处理器形成一个中心节点,客户机连接这个节点去获取消息或发送,群发等功能。IRC协议已经在使用TCPIP网络协议的系统中应用了。虽然TCPIP协议并不是必须的,但是现在IRC操作仅使用在这个方面。2.2聊天程序的基本需求1、在QT或miniGUI编写聊天程序,交叉编译后下载到目标机,可实现两台目标机可发送文本聊天。2、QT或miniGUI界面设计至少包括发送,重置两个按钮,要求必须把目标机的硬件键盘映射到QT
8、设计的软件界面中,实现软件按钮的功能。2.3需实现的主要功能 客户端输入服务器IP和端口号。 服务器必须成功启动。 每一个客户端可以寻找服务器,并且与服务器建立连接。 客户端和服务器可以实现通信。 通信的容可以显示在面板上。 利用QT设计界面,并下载到MagicARM2410上面。三、需求分析3.1 QT设计QT设计编写和调试阶段使用周立功MagicARM2410箱子提供的QT for PC编译器,运行测试阶段使用QT for ARM编译器。使用QT for PC阶段编译程序的步骤如下以编译hello.cpp程序为例:1进入/x86-qtopia目录,运行set-env脚本,设置环境变量。$
9、. set-env2进入hello目录,然后用progen工具生成工程文件hello.pro。$ cd hello$ vi hello.cpp$ progen t app.t o hello.pro3使用tmake工具,生成hello工程的Makefile文件。$ tmake -o Makefile hello.pro4修改Makefile文件,在LIBS变量中增加需要用到的库,然后输入make命令编译。LIBS = $ -L$/lib -lqte -lm -lstdc+$ make5启动虚拟控制台,运行hello程序主机须启动帧缓冲,必须能够访问/dev/fb0。$ cd /zylinux/
10、x86-qtopia$ . set-env$ cd hello$ ./hello qws如果要将Hello程序发布到MagicARM2410上运行,还需进行以下工作:6进入/zylinux/arm-qtopia目录,并将hello工程复制到当前目录下。$ cd /zylinux/arm-qtopia$ cp av /zylinux/x86-qtopia/hello 7运行当前目录下的set-env文件,重新设置环境变量,进入hello目录,使用tmake工具,重新生成Makefile文件。$ . set-env$ cd hello$ tmake -o Makefile hello.pro8按照
11、步骤的方法修改包含库,编译,得到可执行文件hello,将hello文件添加到文件系统中,更新文件系统。9插入USB鼠标和USB键盘,启动MagicARM2410。启动Qtopia的终端,运行hello程序。利用同样的编译方法,客户端QT程序进行编译和调试。3.1.1 客户端QT界面设计客户端QT需要以下基本组件:1两个QEditLine,一个用于输入服务器IP地址可读可写,另一个用于输入服务器端口号可读可写。2三个按钮,一个用于连接服务器,另一个用于发送消息,最后一个用于清空发送区域数据。3四个标签,用于显示不用组件的容。4两个MultiLineedit,一个用于显示通信容只读,一个作为发送区
12、域可读可写。3.2服务器端和客户端的数据传输方式 服务器端和客户端的数据是用TCP套接字来传输的。IP地址表示Internet上的计算机,端口号标识正在计算机运行的进程。端口号与IP地址的组合得出一个网络套接字。客户端使用linux C 函数socket建立到服务器的套接字连接。 当套接字连接socket建立后,可以利用linux C语言中的send函数和recv函数来实现简单的发送和接收消息。3.3 服务器端功能设计由于时间有限,服务器并没有用QT来编写界面,只是实现一个简单的控制程序。服务器主要实现有:1创建套接字2对套接字、IP地址和端口号进行绑定3进行监听4等待客户端的连接5对客户端接
13、收和发送数据3.4客户端功能设计客户端使用QT设计界面,客户端实现的功能如下: 1创建套接字 2连接服务器 3与服务器通信四、总体设计4.1 总体功能根据对需求所做的分析,聊天程序需要实现的基本功能应包括以下几个方面: 客户端输入服务器IP和端口号。 服务器必须成功启动。 每一个客户端可以寻找服务器,并且与服务器建立连接。 客户端和服务器可以实现通信。 通信的容可以方便查看。 使用QT设计的界面简洁,大方,操作简单,方便,容易上手,用户可以快速掌握操作流程。五、 详细设计5.1 功能分析和描述 聊天工具包括两大功能模块:客户端和服务器端。具体实现的功能创建套接字、连接通信、接收数据显示和发送数
14、据。5.2 客户端功能模块5.2.1 连接服务器连接服务器之前需要解析服务器地址、创建套接字、设置sockaddr_in 结构体中相关参数。5.2.2发送消息功能连接功能是开始聊天前必须进行的步骤,连接成功之后,就可以进行发送消息了。发送消息功能流程图如图2-5所示: 图2-5 发送消息功能流程图5.2.3接收消息模块连接成功后,就可以接收服务器发送过来的数据。5.3 服务器功能模块服务器的设计并没有使用QT编写界面,服务器端实现的功能有: 图2-8 服务器模块流程图六、代码实现6.1 客户端代码6.1.1 QT构造和析构函数EditDemo:EditDemo:QWidgetQGridLayout *grid = new QGridLayout;/IP add