基于QT设计的串口通信系统实验报告

上传人:y****3 文档编号:13184534 上传时间:2020-06-06 格式:DOC 页数:31 大小:717.50KB
返回 下载 相关 举报
基于QT设计的串口通信系统实验报告_第1页
第1页 / 共31页
基于QT设计的串口通信系统实验报告_第2页
第2页 / 共31页
基于QT设计的串口通信系统实验报告_第3页
第3页 / 共31页
点击查看更多>>
资源描述
.串口通信系统姓 名: 马 亮 学 院: 电气与信息工程学院 专业班级: 物联网工程2015-01班 学 号: 2015444139 指导老师: 易 军 成 绩: 重庆科技学院二零一八年六月.大作业规则及要求规则1:同学们做一个题目,可以自拟题目,但必须经过任课老师同意,中途不得更改题目。规则2:任课老师将列出每个题目的具体功能及分值,完成后获得对应分数,发现代码抄袭或者现场答辩无法解释,记0分。规则3:鼓励增加新功能,并给予适当加分。规则4:大作业报告除遵守模板格式外,应按照需求分析、系统设计、详细设计、系统测试四个部分组织,其中需求分析应将本项目的功能需求、性能指标、界面、安全等因素考虑在内;系统设计应多画流程图说明设计意图;详细设计应包括关键代码或接口定义,数据表定义等;系统测试应包括功能实现情况(截图)、各性能指标完成情况(表格)。规则5:所有题目应以TQ2440为平台进行开发应用,否则答辩成绩扣30分。.摘要嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。随着Internet的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经成了最热门的技术之一。嵌入式Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点。目前正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。新一代嵌入式计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCP/IP通信协议是独立于任何厂家的硬件的,因此嵌入式环境下的适时网络通信成为嵌入计算技术研究的重点和热点。本文通过给予TQ2440的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。关键词:嵌入式 Linux操作系统 串口通信 TQ2440.前言串口通信是简单嵌入式系统的一个应用,串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通信方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序四个部分组成。用于实现对其他设备的控制,监视或管理等功能。嵌入式系统已经广泛应用与科学研究、工业制造、军事技术等领域,人们常用的手机,智能家电,GPS等均是嵌入式系统的典型代表。目录摘要I前言II目录III1 嵌入式串口通信概述11.1嵌入式串口通信的原理11.2嵌入式串口通信的开发工具11.2.1 TQ2440硬件平台简介21.2.2 ARM简介31.2.3 Linux系统简介41.3 嵌入式串口通信的基本任务71.4 嵌入式串口通信协议及实现72 需求分析92.1 功能需求92.2 性能指标93 系统设计123.1 系统功能设计123.2 通信流程设计124 详细设计144.1 设置串口属性144.2 客户端Qt设计174.2.1 报文格式174.2.2 部分操作函数175 系统调试及测试225.1 功能实现情况225.2各性能指标完成情况25表5-1 串口通信功能完成情况表256 总结267 致谢278 参考文献28.1 嵌入式串口通信概述所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。串口传输是二进制代码序列在一条信道上以位为单位,按时间顺序且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采用同步措施,否则接收端将不能正确区分出所传输的数据。串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制。若采用普通单片机,对外部设备的访问就需要利用复杂的汇编语言或者使用C51自己编写设备的初始化以及读写访问程序,这样的过程不仅复杂,而且不太利于大规模的开发与设计。ARM与普通单片机相比,具有开发简单、灵活,而且性能稳定、功能易于扩展等一系列的优势,因而在各个领域的嵌入式系统中得到广泛的应用。将Linux移植到ARM嵌入式处理器后,可以利用操作系统中提供的系统调用把串口及其他外设当成普通文件进行操作,读写方便,在进行相对应的开发时可以提高系统编程效率,而且还可以简化调试的复杂程度。1.1嵌入式串口通信的原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请打开串口,通信完成后必须释放资源,即关闭串口。1.2嵌入式串口通信的开发工具此次开发采用的硬件平台是以TQ2440为平台,ARM2410S嵌入式开发板作为被查询服务端,PC机为客户端和C语言来实现本次系统的开发。客户端在Linux下开发,系统基于客户/服务器结构来实现客户端和服务端之间通过串口通信。1.2.1 TQ2440硬件平台简介TQ2440是由广州天嵌计算机科技有限公司打造的一款开发板,如下图1.1所示。其以稳定的性能,过硬的质量,丰富的扩展接口,优质的售后服务和技术支持,赢得众多企业的青睐和支持。开创众多第一,引领嵌入式潮流。图1.1移植最新的Linux 2.6.30 系统到TQ2440 开发板,并配有相关移植教程。将Nandflash 升级为256MB(核心板Nandflash支持升级到1GB,SDRAM 可扩展到128MB)。推广开源的厂家,除了提供平台性软件,还免费提供厂家移植教程,并可在网上下载,非TQ2440 的用户一样受益。不断更新软件,提供Wince 5.0/6.0原生BSP 包,wince 开发教程,QT 开发教程等厂家一手的移植教程(并在不断更新)。TQ2440硬件特性如下表所示。TQ2440开发板底板硬件特性 说明串口板载五线异步串行口(UART0),可外接串口扩展板引出另两个串口(UART1和UART2);WINCE和Linux均有三串口驱动。网络接口板载100M DM9000网卡,带联接和传输指示灯;USB接口USB HOST接口;USB Device接口。存储接口一个SD卡接口,支持32 G SD卡。音频接口采用芯片UDA1341,立体声音频输出,可录音。LCD接口集成了4线电阻式触摸屏接口;支持800600、640480、240320、320240等不同分辨率的TFT LCD,(目前实测最大的屏10.4寸屏,800600的分辨率),可接VGA转接板Camera130W像素摄像头(标配驱动),可支持AV信号视频输入或更高像素的摄像头时钟源内部实时时钟(带有后备锂电池)调试JtagJTAG接口,支持ADS1.2,keil等软件的单步调试功能复位电路采用专业复位芯片811进行复位,稳定可靠电源接口高电流带载的5V电源供电,带电源开关指示灯AD功能可调电阻接到ADC引脚上用来验证模数转换IIC功能提供AT24C02的EEPROM验证IIC功能蜂鸣器测试PWM功能的蜂鸣器用户按键4个用户按键,使用外部中断用户LED灯4个用户LED灯,使用GPIO口控制底板尺寸105mm128mm1.2.2 ARM简介ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。1991 年 ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。采用 ARM技术知识产权( IP )核微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于 ARM 技术的微处理器应用约占据了 32 位 RISC 微处理器 75 %以上的市场份额, ARM 技术正在逐步渗入到我们生活的各个领域。ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的 ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 ARM 微处理器芯片。目前,全世界有几十家大的半导体公司都使用 ARM 公司的授权,因此既使得 ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。ARM微处理器一般具有如下特点:(1) 体积小、低功耗、低成本、高性能;(2) 支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8/16位器件;(3)大量使用寄存器,指令执行速度更快;(4)大多数数据操作都在寄存器中完成;(5)寻址方式灵活简单,执行效率高;(6)指令长度固定。1.2.3 Linux系统简介Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,它的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近,所以说它是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991 年10 月5 日。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux一般有四个主要部分:内核、Shell、文件结构和实用工具。内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行。(2)Linux ShellShell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。(3) Linux文件结构文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。(4) Linux 实用工具标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux的主要特性有以下几点:(1)完全免费Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。 (2)完全兼容POSIX1.0标准这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。 (3)多用户、多任务Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。(4)良好的界面Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。 (5)支持多种平台Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。1.3 嵌入式串口通信的基本任务通信接口的基本任务是:(1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。(2)进行串并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。(3)控制数据传输速率:串行通信接口电路应具有对数据传输速率波特率进行选择和控制的能力。(4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。(5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。(6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。1.4 嵌入式串口通信协议及实现串行端口的本质功能是作为CPU和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS-232C串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信,采用的宿主机是PC机,而目标机是RAM架构的开发板。本系统中目标机的开发板是ARM2410S,串口线采用常用的RS-232C型接口模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口通信采用EIA RS-232C标准。.2 需求分析2.1 功能需求本系统基于客户/服务器结构,ARM2410S嵌入式开发板作为被查询服务端,PC机为客户端。客户端在Linux下开发,客户端和服务端之间通过串口进行通信,可查询相应的内容。2.2 性能指标(1) 串口通信协议:PC与开发板通信报文基本格式如下:其中:头(header):4个字节的0xff。长度(len):2个字节的信息长度,从信息类型开始,到信息内容结束,采用网络字节顺序长度校验和(lcs):1个字节的长度校验和。len0 + len1 + lcs = 0。信息类型(type):1个字节,0x02。信息内容(data):n字节的信息内容。信息校验和(dcs):1个字节的信息内容校验和。type + data0 + data1 + + data(n-1) + dcs = 0。信息类型分配如下表所示:0x00查询0x01诊断(保留)0x02下载参数(保留)PC发送给开发板的基本格式如下:开发板反馈给PC的基本格式如下:系统必须支持的查询命令如下表所示: 说明命令字响应字说明开发板ID设置0x000x01开发板唯一编号开发板MAC地址设置0x020x03本机MAC地址本机IP、掩码设置、网关IP设置0x040x05本机IP、掩码、网关设置开发板密码设置0x060x07登录密码网络连接方式设置0x080x09只允许下载局域网0x4c(L)、 或者GRPS 0x47(G)两种方式蜂鸣器开关设置0x0a0x0b打开 0x4e(N)或者关闭0x46(F)两种方式LCD对比度设置0x0c0x0d合法值在0x000x3f之间(供参考)开发板CPU配置0x0e0x0f芯片型号(2)QT查询界面:界面包括分类显示区域(含保留类型),每种查询表项可选择或者输入,其返回结果能正确显示到文本框。(3)串口驱动程序实现。3 系统设计3.1 系统功能设计系统功能如下图3.1所示。图3.1 系统功能图3.2 通信流程设计利用串口进行通信的流程图如下3.2所示。图3.2串口通信流程图4 详细设计4.1 设置串口属性1、保持原先串口设置为了安全起见和以后调试程序方便,可以先保存原先串口的配置,在这里 可以使用函数 tcgetattr(fd, &old_cfg)。该函数得到 fd 指向的终端的配置参数,并将它 们保存于 termios 结构变量 old_cfg 中。该函数还可以测试配置是否正确、该串口是否 可用等。若调用成功,函数返回值为 0,若调用失败,函数返回值为-1,其使用如下 所示: if(tcgetattr(fd, &old_cfg) != 0)perror(tcgetattr); return -1;2、激活选项 CLOCAL 和 CREAD 分别用于本地连接和接受使能,因此,首先要通过位掩码的方式激活这两个选项。 newtio.c_cflag |= CLOCAL | CREAD; 调用 cfmakeraw()函数可以将终端设置为原始模式,在后面的实例中,采用原始模式进行串口数据通信。cfmakeraw(&new_cfg); 3设置波特率设置波特率有专门的函数,用户不能直接通过位掩码来操作。设置波特率的主要函数有:cfsetispeed()和 cfsetospeed()。这两个函数的使用很简单,如下所示:cfsetispeed(&new_cfg, B115200); cfsetospeed(&new_cfg, B115200); 一般地,用户需将终端的输入和输出波特率设置成一样的。这几个函数在成功时返回 0,失败时返回-1。4设置字符大小 特率不同,设置字符大小并没有现成可用的函数,需要用位掩码。一般首先去除数据位中的位掩码,再重新按要求设置。如下所示: new_cfg.c_cflag &= CSIZE; /* 用数据位掩码清空数据位设置 */ new_cfg.c_cflag |= CS8;5设置奇偶校验位 校验位需要用到 termios 中的两个成员:c_cflag 和 c_iflag。首先要激活 c_cflag 中的校验位使能标志 PARENB 和是否要进行偶校验,同时还要激活 c_iflag 中 的对于输入数据的奇偶校验使能(INPCK)。无校验位,代码如下: new_cfg.c_cflag &= PARENB; 校验时,代码如下所示:new_cfg.c_cflag |= (PARODD | PARENB); new_cfg.c_iflag |= INPCK; 而使能偶校验时,代码如下所示:new_cfg.c_cflag |= PARENB;new_cfg.c_cflag &= PARODD;/* 清除偶校验标志,则配置为奇校验*/ new_cfg.c_iflag |= INPCK;6设置停止位设置停止位是通过激活 c_cflag 中的 CSTOPB 而实现的。若停止位为一个,则清除CSTOPB,若停止位为两个,则激活 CSTOPB。以下分别是停止位为一个和两个比特时的代码:new_cfg.c_cflag &= CSTOPB; /* 将停止位设置为一个比特 */new_cfg.c_cflag |= CSTOPB; /* 将停止位设置为两个比特 */7设置最少字符和等待时间在一般的情况下,可以设置设置为阻塞等待,直read到数据才返回termios_new.c_ccVTIME = 0;termios_new.c_ccVMIN = 4;8清除串口缓冲由于串口在重新设置之后,需要对当前的串口设备进行适当的处理,这时就可调用在中声明的 tcdrain()、tcflow()、tcflush()等函数来处理目前串口缓冲中的数据,它们的格式如下所示。int tcdrain(int fd); /* 使程序阻塞,直到输出缓冲区的数据全部发送完毕*/int tcflow(int fd, int action) ; /* 用于暂停或重新开始输出 */int tcflush(int fd, int queue_selector); /* 用于清空输入/输出缓冲区*/本实例中使用 tcflush()函数,对于在缓冲区中的尚未传输的数据,或者收到的,但是尚未读取的数据,其处理方法取决于 queue_selector 的值,它可能的取值有以下几种。TCIFLUSH:对接收到而未被读取的数据进行清空处理。 TCOFLUSH:对尚未传送成功的输出数据进行清空处理。TCIOFLUSH:包括前两种功能,即对尚未处理的输入输出数据进行清空处理。如在本例中所采用的是第一种方法:tcflush(fd, TCIFLUSH);9、激活配置在完成全部串口配置之后,要激活刚才的配置并使配置生效。这里用到的函数是tcsetattr(),它的函数原型是:tcsetattr(int fd, int optional_actions, const struct termios*termios_p);其中参数 termios_p 是 termios 类型的新配置变量。参数 optional_actions 可能的取值有以下 3 种:TCSANOW:配置的修改立即生效。TCSADRAIN:配置的修改在所有写入 fd 的输出都传输完毕之后生效。TCSAFLUSH:所有已接受但未读入的输入都将在修改生效之前被丢弃。该函数若调用成功则返回 0,若失败则返回-1,代码如下所示:if (tcsetattr(fd, TCSANOW, &new_cfg) != 0)perror(tcsetattr);return -1;4.2 客户端Qt设计4.2.1 报文格式PC与开发板通信报文基本格式:struct Message QByteArray Header; QByteArray Len; QByteArray Lcs; QByteArray Infotype; Info Infodata; QByteArray Dcs;PC发送给开发板的基本格式:struct Info QByteArray Cmmd; QByteArray Data;4.2.2 部分操作函数(1)绑定发送选项的radiobutton 的click信号 到 Check槽函数 connect(ui-Id_check,SIGNAL(clicked(),this,SLOT(Check(); connect(ui-Ip_check,SIGNAL(clicked(),this,SLOT(Check(); connect(ui-Mac_check,SIGNAL(clicked(),this,SLOT(Check(); connect(ui-Passwd_check,SIGNAL(clicked(),this,SLOT(Check(); connect(ui-Net_check,SIGNAL(clicked(),this,SLOT(Check(); connect(ui-Buzzer_check,SIGNAL(clicked(),this,SLOT(Check(); connect(ui-Cpu_check,SIGNAL(clicked(),this,SLOT(Check();connect(ui-Lcd_check,SIGNAL(clicked(),this,SLOT(Check();(2)将发送选项加入到buttonGroup中并绑定。 buttonGroup.addButton(ui-Id_check,0); buttonGroup.addButton(ui-Mac_check,1); buttonGroup.addButton(ui-Ip_check,2); buttonGroup.addButton(ui-Passwd_check,3); buttonGroup.addButton(ui-Net_check,4); buttonGroup.addButton(ui-Buzzer_check,5); buttonGroup.addButton(ui-Lcd_check,6);buttonGroup.addButton(ui-Cpu_check,7);(3)在Check槽函数中,根据选择的发送选项设置,定义要发送的msg中的cmmd命令字。void MainWindow:Check() msg.Infodata.Data.clear(); switch(buttonGroup.checkedId() case 0: msg.Infodata.Cmmd0=0x01; qDebug() QString:fromLocal8Bit(0); break; case 1: msg.Infodata.Cmmd0=0x02; qDebug() QString:fromLocal8Bit(1); break; case 2: msg.Infodata.Cmmd0=0x04; qDebug() QString:fromLocal8Bit(2); break; case 3: msg.Infodata.Cmmd0=0x06; qDebug() QString:fromLocal8Bit(3); break; case 4: msg.Infodata.Cmmd0=0x08; qDebug() QString:fromLocal8Bit(4); break; case 5: msg.Infodata.Cmmd0=0x0a; qDebug() QString:fromLocal8Bit(5); break; case 6: msg.Infodata.Cmmd0=0x0c; qDebug() QString:fromLocal8Bit(6); break; case 7: msg.Infodata.Cmmd0=0x0e; qDebug() lineEdit_send-text().toLatin1(); mess.append(msg.Header); mess.append(msg.Len); mess.append(msg.Lcs); mess.append(msg.Infotype); mess.append(msg.Infodata.Cmmd); mess.append(msg.Infodata.Data); mess.append(msg.Dcs); mess.append(r); mSerialPort-write(mess); /向串口写入数据 msg.Infodata.Data.clear(); mess.clear();(5)开发板端对接受的数据进行解析,并且回传数据。while(1)U8 idx;Uart_Printf(nPlease select function : n);Uart_GetString(buff);cmmd=buff8;if(strlen(buff)=10)switch(cmmd)case 0x01:Uart_Printf(nID:);Uart_Printf(%sn,id);break;case 0x02:Uart_Printf(nMac:);Uart_Printf(MacAddress);break;case 0x0a:Beep(2000, 100);break;case 0x06:Uart_Printf(nPassWord:);Uart_Printf(%sn,passwd);break;default:break;elseswitch(cmmd)case 0x01:Uart_Printf(nNewID:);strncpy(id,buff+9,strlen(buff);idstrlen(id)-1=0;Uart_Printf(%sn,id);break;case 0x02:Uart_Printf(nMac:);Uart_Printf(MacAddress);break;case 0x06:Uart_Printf(nNewPassWord:);strncpy(passwd,buff+9,strlen(buff);idstrlen(passwd)-1=0;Uart_Printf(%sn,passwd);break;case 0x0a:Beep(2000, 100);break;default:break;.5 系统调试及测试5.1 功能实现情况(1)在Qt中对界面的设计如下图5.1所示,在该界面上可选择发送的查询选项,也可输入发送数据并发送到开发板上,在显示框上可以看到开发板反馈的信息。图5.1 初始化界面(2)查询开发板ID,在发送选项中选择“开发板ID”,点击“发送”到开发板上,界面显示开发板ID为“ID:tq2440bord0001”,如下图5.2所示。图5.2(3)查询开发板ID,在发送选项中选择“开发板ID”,输入发送数据“test”,点击“发送”到开发板上,界面显示开发板ID为“NewID:test”,如下图5.3所示。图5.3(4)查询开发板密码,在发送选项中选择“开发板密码”,点击“发送”到开发板上,界面显示开发板密码为“PassWord:123456”,如下图5.4所示。图5.4获取密码(5)查询开发板密码,在发送选项中选择“开发板密码”,输入发送数据“passwd”,点击“发送”到开发板上,界面显示开发板ID为“NewPassWord:passwd”,如下图5.5所示。图5.5设置密码(6)选择“蜂鸣器开关”,发送到开发板上时。会听到蜂鸣器鸣叫0.1秒。5.2各性能指标完成情况项目名称完成情况开发板ID实现开发板MAC地址实现IP、掩码、网关IP未实现开发板密码未实现网络连接方式实现蜂鸣器开关实现LCD对比度未实现开发板CPU实现表5-1 串口通信功能完成情况表6 总结这次的嵌入式Linux应用与开发我做的是串口通信实验,易军老师给我们讲课的时候,很认真很仔细,在我们犯困注意力你集中的时候老师都会提醒我们,即使这样我也觉得自己可能在这门课程的学习上可能学得还不是很好,所以在这次的大作业上,我遇到了许多问题,感觉要完整的做出来一个实验真难。不过好在有老师和同学的帮助,老师也在很早之前就开始给我们讲了大作业题目,让我们有足够的时间消化并构思设计实验方案。串口通信实验,就如它的名称一样,我从中所学到的最多的知识就是关于串口及相关的配置、设置属性等方面。感觉以前都只能算是了解它,在实验中的运用才会说是主动去熟悉学习它,感觉学到了很多知识,也是非常开心的。到最后截止答辩时,我的实验卡在很小的一个点上,老师通情达理的让我延迟一天再答辩,并且详细询问了我遇到的问题,提出了建议,并且对我给予了鼓励,当天晚上我终于实现了大作业要求的功能。学习是一个逐渐积累的过程,到最后你会发现它是有一定规律的。老师让我们在课堂上练习的每个知识点到最后其实在大作业中都有可能会用到,所以说大作业是一个综合考验我们本学期学习成果的一个实验,虽然会遇到很多问题,出现许多的错误,但我们的成长不就是在错误中积累的吗,从中所犯的错让我又从头再学习了一遍之前的知识,感觉很充实。7 致谢一学期的嵌入式Linux应用与开发的学习课程已经结束,在老师讲的课堂上和自我练习的实验中我也学到了许多,在这里我要感谢帮助过我学习和成长的一切。首先我要感谢学校,为我们提供了良好的学习环境。不管是多媒体教室还是实验室,都是利于我们学习知识的,实验室即使没课也为我们开放供我们学习,还为我们提供实验器材。让我可以在实践中更加深刻的体会到所学知识的运用,感谢学校!感谢我的课程老师易军,他在理论课堂上认真详细的给我们讲解了嵌入式Linux应用与开发的相关知识,实验中他也同样的把知识点给我们讲得很透彻,甚至是代码,老师都是一句一句详细的给我们讲解了的。从一开始的实验步骤到添加功能知识点的讲解,他都会确认我们是否听懂,询问我们的意见,如果没有他再重复为我们讲解。易老师很有耐心和责任感,感谢老师悉心的教育,让我对嵌入式Linux有了一定的了解和认识,并且可以把这门课程学好。感谢帮助过我的同学,在我做实验有不懂的地方或者是实验中遇到什么错误的时候,只要是我虚心请教,同学都会耐心给我讲解。有时候他们也不一定会,但是他们还是愿意来帮助我,尽最大努力帮我找出问题解决问题,真的很感谢他们,谢谢。在这已过的几周里,我们每一天在寝室-机房-食堂这三点一线的生活里,让我回忆起高中时代的点点滴滴。虽然每天早中晚都在机房,但是有小组同伴相伴还是很愉快! 8 参考文献1 陆桂来,梁芳,张波.嵌入式Linux从入门到精通.电子工业出版社.20152 杨水清.精通ARM嵌入式Linux系统开发电子工业出版社出版.20123 杨海清,周安栋,罗勇,陈牧.嵌入式系统实时网络通信中的LCD显示设计方法J.计算机与数字工程.2010年02期4 韦东山.嵌入式Linux应用开发完全手册.人民邮电出版社出版.20085 张晓林.嵌入式系统技术.高等教育出版社.20086P.Raghavan(印度),SriramNeelakandan(印度).嵌入式Linux系统设计与开发.电子工业出版社出版.20087 李亚锋.ARM嵌入式Linux系统开发从入门到精通.清华大学出版社出版.20078 秦立春,周中孝.嵌入式Linux系统编程.电子工业出版社出版.20049 田泽.嵌入式系统开发与应用实验教程M.北京航空航天大学出版社.200410李现勇.Visual C+串口通信技术与工程实践M.人民邮电出版社.200411 邹思铁.嵌入式Linux设计与应用M.北京清华大学出版社.200212 Alessandro Rubini,Jonathan Corbet.Linux设备驱动程序M.中国电力出版社.2002.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!