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