基于QT设计的串口通信系统实验报告.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 设计 串口 通信 系统 实验 报告 完整 资料
- 资源描述:
-
基于QT设计的串口通信系统实验报告(完整资料) (可以直接使用,可编辑 优秀版资料,欢迎下载) 串口通信系统 姓名:马亮 学院:电气与信息工程学院 专业班级:物联网工程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 目录III 1 嵌入式串口通信概述1 1.1嵌入式串口通信的原理1 1。2嵌入式串口通信的开发工具1 1。2.1 TQ2440硬件平台简介2 1.2。2 ARM简介3 1.2.3 Linux系统简介4 1.3 嵌入式串口通信的基本任务7 1。4 嵌入式串口通信协议及实现7 2 需求分析9 2.1 功能需求9 2。2 性能指标9 3 系统设计12 3.1 系统功能设计12 3。2 通信流程设计12 4 详细设计14 4。1 设置串口属性14 4。2 客户端Qt设计17 4.2.1 报文格式17 4.2.2 部分操作函数17 5 系统调试及测试22 5.1 功能实现情况22 5.2各性能指标完成情况25 表5-1 串口通信功能完成情况表25 6 总结26 7 致谢27 8 参考文献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线电阻式触摸屏接口;支持800×600、640×480、240×320、320×240等不同分辨率的TFT LCD,(目前实测最大的屏10。4寸屏,800×600的分辨率),可接VGA转接板 Camera 130W像素摄像头(标配驱动),可支持AV信号视频输入或更高像素的摄像头 时钟源 内部实时时钟(带有后备锂电池) 调试Jtag JTAG接口,支持ADS1.2,keil等软件的单步调试功能 复位电路 采用专业复位芯片811进行复位,稳定可靠 电源接口 高电流带载的5V电源供电,带电源开关指示灯 AD功能 可调电阻接到ADC引脚上用来验证模数转换 IIC功能 提供AT24C02的EEPROM验证IIC功能 蜂鸣器 测试PWM功能的蜂鸣器 用户按键 4个用户按键,使用外部中断 用户LED灯 4个用户LED灯,使用GPIO口控制 底板尺寸 105mm×128mm 1.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 Shell Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行.实际上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设置 0x00 0x01 开发板唯一编号 开发板MAC地址设置 0x02 0x03 本机MAC地址 本机IP、掩码设置、网关IP设置 0x04 0x05 本机IP、掩码、网关设置 开发板密码设置 0x06 0x07 登录密码 网络连接方式设置 0x08 0x09 只允许下载局域网0x4c('L’)、 或者GRPS 0x47('G')两种方式 蜂鸣器开关设置 0x0a 0x0b 打开 0x4e(’N')或者关闭0x46('F')两种方式 LCD对比度设置 0x0c 0x0d 合法值在0x00~0x3f之间(供参考) 开发板CPU配置 0x0e 0x0f 芯片型号 (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_cc[VTIME] = 0; ﻩtermios_new。c_cc[VMIN] = 4; 8.清除串口缓冲 由于串口在重新设置之后,需要对当前的串口设备进行适当的处理,这时就可调用在<termios.h>中声明的 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.Cmmd[0]=0x01; qDebug() << QString::fromLocal8Bit(”0"); break; case 1: msg.Infodata.Cmmd[0]=0x02; qDebug() 〈〈 QString::fromLocal8Bit("1"); break; case 2: msg.Infodata.Cmmd[0]=0x04; qDebug() << QString::fromLocal8Bit("2"); break; case 3: msg.Infodata.Cmmd[0]=0x06; qDebug() << QString::fromLocal8Bit(”3"); break; case 4: msg。Infodata.Cmmd[0]=0x08; qDebug() <〈 QString::fromLocal8Bit("4”); break; case 5: msg.Infodata.Cmmd[0]=0x0a; qDebug() << QString::fromLocal8Bit("5"); break; case 6: msg.Infodata。Cmmd[0]=0x0c; qDebug() << QString::fromLocal8Bit("6”); break; case 7: msg。Infodata。Cmmd[0]=0x0e; qDebug() << QString::fromLocal8Bit("7"); break; } } (4)发送按钮按下后,填充mess字符串,通过串口发送 void MainWindow::on_pushButton_send_clicked() { msg。Header.resize(4); msg。Len.resize(2); msg.Lcs。resize(1); msg.Infotype.resize(1); msg.Infodata。Cmmd.resize(1); msg.Dcs.resize(1); msg.Header[0]=0xff; msg.Header[1]=0xff; msg.Header[2]=0xff; msg.Header[3]=0xff; msg。Len[0]=0xaa; msg.Len[1]=0xbb; msg.Lcs[0]=0-msg。Len[0]-msg。Len[1]; msg。Infotype[0]=0x02; msg。Dcs[0]=0xff; msg。Infodata.Data.append(ui->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=buff[8]; ﻩif(strlen(buff)==10){ switch(cmmd){ case 0x01: Uart_Printf("\nID:”); ﻩUart_Printf("%s\n",id); ﻩbreak; ﻩcase 0x02: Uart_Printf(”\nMac:"); ﻩUart_Printf("MacAddress”); break; ﻩcase 0x0a: ﻩBeep(2000, 100); ﻩbreak; case 0x06: ﻩUart_Printf("\nPassWord:"); Uart_Printf("%s\n",passwd); ﻩbreak; ﻩdefault: ﻩbreak; } }else{ switch(cmmd){ case 0x01: ﻩUart_Printf("\nNewID:”); ﻩstrncpy(id,buff+9,strlen(buff)); ﻩid[strlen(id)-1]=0; Uart_Printf("%s\n",id); break; ﻩcase 0x02: ﻩUart_Printf("\nMac:"); Uart_Printf("MacAddress"); ﻩbreak; case 0x06: ﻩUart_Printf("\nNewPassWord:"); strncpy(passwd,buff+9,strlen(buff)); id[strlen(passwd)—1]=0; ﻩUart_Printf("%s\n”,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所示。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




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



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4539645.html