还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2.1助手总体规划需要实现串口的参数设置,接受数据以及发送数据,文件传输的模块通过来进qtcreator行界面的规划,使用布局管理器以及的控件来进行串口助手的界面实现通过编辑文qt ui件,添加相应的控件来进行的设计通过布局管理器,把分成几块使用ui mainwindow了一个显示要接收的数据通过来进行串口参数的设置串口qtextbrowser qcombobox需要设置的参数为串口号、波特率、数据位、校验位、停止位、是否连续发送、发送间隔为多少
2.2功能按钮设计需要实现对应功能的按钮,打开串口,关闭串口,添加串口,读取间隔,读取文件,写入文件、保存数据、计数清零、清空串口,这些功能按钮的实现使串口助手能通过点击对应按钮来使用对应的功能打开串口需要通过设置对应的qcombobox设置对应的参数来打开串口添加串口用来关闭当前使用的串口添加串口用来添加串口读取间隔是用来设置读取串口数据的时间间隔读取文件是将外部文件载入作为发送内容写入文件是吧读取数据写入文件保存数据是用来保存收发框的内容计数清零是用来清零应经收到的字节数清空串口是用来清空串口中的I/O数据
2.3技术指标
2.4主要芯片的选型
2.
2.
2.5其他芯片的简介o本设计是……
1.
5.1ATMEL93C46IC:93c46是储存器件(如图2・6示),负责储存机器人系统中温度采集系统采集到的温度参数
2.
5.2LCD
16023.
5.374HC
5404.
4.1打开串口以及串口参数设置部分的实现首先获取串口名,并且以Polling方式来查询串口,尝试打开串口,相关代码如下QString portName=ui-portNameComboBox-currentText;〃获取串口名myCom=new WinQextSerialPortportName,QextSerialBase::Polling;〃这里QextSerialBase::QueryMode应该使用QextSerialBase::Polling ifmyCom-openQlODevice::ReadWrite{QMessageBox::information this,tr〃打开成功〃,tr〃已成功打开串口〃+portName,QMessageBox::0k;}else{QMessageBox::critical this,tr〃打开失败〃,tr〃未能打开串口〃+portName+tr〃\n该串口设备不存在或已被占用〃,QMessageBox::0k;return;设置串口的参数,包括波特率,数据位,校验位,停止位,先关代码如下〃设置波特率myCom-setBaudRate BaudRateTypeui-baudRateComboBox-currentIndex;〃设置数据位myCom-setDataBitsDataBitsTypeui-dataBitsComboBox-currentIndex;〃设置校验myCom-setParityParityTypeui-parityComboBox-currentIndex;〃设置停止位myCom-setStopBitsStopBitsTypeui-stopBitsComboBox-currentIndex;〃界面控制默认以间隔读取来读取串口数据,相关代码如下setActionsEnabled true;〃开启读取定时器timer-starttimerdly;〃设置数据流控制myCom-setFlowControlFL0W0FF;〃设置延时myCom-setTimeoutTIME OUT;
5.2读取数据模块的实现使用一个QByteArray类型的临时变量temp变量来读取串口的数据,当temp不为空时,就把读取到的数据显示到用来接收数据的qtextbrowser上面并且根据设定的显示方式显示出来部分实现代码如下QByteArray temp=myCom-readAll;if!temp.isEmpty{if write2fileName.isEmpty{ui-textBrowser-setTextColor Qt::lightGray;ui-textBrowser-append tr〃接收〃;ui-textBrowser-setTextColorQt::black;if ui-ccradioButton-isChecked{ui-textBrowser-appendtemp;}else if ui-chradioButton-isChecked{ui-textBrowser-append tr/z,,+temp.tollex;}else{ui-textBrowser-append trzz//+temp.tolnt;
3.3发送数据模块的实现先判断当前是否在发送数据,如果正在发送,将会暂停发送,如果发送的数据位空,将出现提示,并且根据用户设置是否连续发送来进行发送,部分相关能代码如下//如果当前正在连续发送数据,暂停发送if ui-sendmsgBtn-text==tr〃暂停〃{obotimer-stop;return;}〃如果发送数据为空,给出提示并返回ifui-sendMsgLineEdit-text.isEmpty{QMessageBox::information this,tr〃提示消息〃,tr〃没有需要发送的数据〃,QMessageBox::0k;return;〃发送数据myCom-writeui-sendMsgLineEdit-text.toAscii;
3.4测温系统设计本设计采用LCD1602作为显示器件,相比数码管显示,显示内容丰富更加丰富、显示方式更为灵活,而且硬件电路得到简化LCD1602作为一款非常经典的液晶显示模块,具有良好的性价比,完全符合和满足本设计的要求
3.5电源
3.
5.1电源的选型由于本系统需要电池供电,我们考虑了如下集中方案为系统供电
3.
5.2稳压电路设计
3.
12.高稚允,高岳.光电检测技术[M].北京国防工业出版社,
1995.[
13.金篆芷,王明时.现代传感技术[M].北京电子工业出版社,1995
[14]罗志增.简易红外接近觉传感器[C].全国青年第三届机器人学研讨会论文集,
1990.[
15.Bria.W.Kernigha..Denni.M.Ritchi..Th..Programmin.Languag.Th.secon.Edition.Prentice-H al..
72.
72.
82.
5.1ATMEL93C
83.
5.2LCD
84.
5.374HC
85.
5.474HC
85.
6.
103.
103.
113.
141.1接口类型
1.并行接口并行接口又简称为“并口”目前,计算机中的并行接口主要作为打印机端口,使用的不再是36针接头而是25针D形接头所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错现在有5种常见的并口4位、8位、半8位、EPP和ECP,大多数PC机配有4位或8位的并口,支持全部IEEE1284并口规格的计算机基本上都配有ECP并口、串行接口2计算机的标准接口叫做串行接口,简称为“串口”现在的机一PC般有两个串行口和串行口不同于并行口之处COM1COM2o在于它的数据和控制信息是一位接一位地传送出去的虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口通常使用的是针形连接COM19D器,而有的使用的是老式的针连接器COM2DB
25、接口3USB即”,中文名称为通用串行总线USB UniversalSerial Bus这是近两年逐步在领域广为应用的新型接口技术理论上讲,PC技术由部分组成:具备接口的系统、能够支持USB3USB PC系统软件和使用接口的设备USB USB、接口4IEEE1394接口具有高速、可热插拔等特点,在视频系统中被广泛IEEE1394应用由于电脑的飞速发展,现在已经在机上看到的身影PC1394了,如技嘉推出的・・主板就具有个接口GA6VX7139431394的主板可广泛利用在各种视频系统中,可通过IEEE1394IEEE1394接口简单地将数码相机里的数据直接送到机里进行处理,VCR PC或通过接口传输到硬盘里保存而且IEEE13941394接口还可以用于网络连接,所有的设备均可通过IEEE1394IEEE接口高速传输数据
1394、硬盘中的接口5SATA使用()口的硬盘又叫串口硬盘,是未来机硬SATA Serial ATA PC盘的趋势年,由、、旧、希捷、迈拓这几2001InteK APTDell M商组成的委员会正式确立了规范,Serial ATA Serial ATA
1.0年,虽然串行的相关设备还未正式上市,但委2002ATA Serial ATA员会已抢先确立了规范采用串行连Serial ATA
2.0Serial ATA接方式,串行总线使用嵌入式时钟信号,具备了更强的纠错能力,ATA与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性串行接口还具有结构简单、支持热插拔的优点串口硬盘是一种完全不同于并行的新型硬盘接口类型,由于采用ATA串行方式传输数据而知名相对于并行来说,就具有非常多的ATA优势首先,以连续串行的方式传送数据,一次只会传SerialATA送位数据这样能减少接口的针脚数目,使连接电缆数目变1SATA少,效率也会更高实际上,仅用四支针脚就能完成SerialATA所有的工作,分别用于连接电缆、连接地线、发送数据和接收数据,同时这样的架构还能降低系统能耗和减小系统复杂性其次,Serial的起点更高、发展潜力更大,定义的数据传输率ATASerialATA
1.0可达这比目前最新的并行(即)所能达到150MB/S,ATA ATA/133的最高数据传输率还高,而在的数据传输率133MB/S SerialATA
2.0将达到最终将实现的最高数据传输率300MB/S,SATA600MB/S串行接口Serial Interface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯串行通讯的特点是数据位传送,传按位顺序进行,最少只需一根传输线即可完成;成本低但送速度慢串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种串口的出现是在年前后,数据传输率是〜1980115kbps230kbpso串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置以及老式摄像头和写字板等设备串口也Modem可以应用于由于两台计算机(或设备)之间的互联及数据传输由于串口()不支持热插拔及传输速率较低目前部分新主板和大部COM分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中
1.3串口通信(串口通信的概念非常简单,串口按位)发送和接收字节尽管比按字节()的bit byte并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据它很简单并且能够实现远距离通信比如定义并行通行状态时,规定设备线总常不得超过IEEE48820米,并且任意两个设备间的长度不得超过米;而对于串口而言,长度可达米21200((典型地,串口用于码字符的传输通信使用根线完成)地线,)发送,()ASCII3123接收由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据其他线用于握手,但是不是必须的串口通信最重要的参数是波特率、数据位、停止位和奇偶校验
1.4qextser ia Iport类简介在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,这里也使用了该类qextserialport类由以下文件组成posix_qextserialport.posix_qextserialport.cpp qextserialbase.hqextserialbase.cpp、qextserialenumerator.hqextserialenumerator.cpp、qextserialport.h、qextserialport.cpp、win_qextserialport.h win_qextserialport.cppoqextserialbase.cpp和qextserialbase.h文件定义了——个QextSerialBase类,winqextserialport,cpp和win qextserialport,h文件定义了——个Win QextSerialPort类,posixqextserialport,cpp和posix qextserialport,h文件定义了——个Posix QextSerialPort类,qextserialport.cpp和qextserialport.h文件定义了——个QextSerialPort类这个QextSerialPort类就是上面所说的那个,它是所有这些类的子类,是最高的抽象,它屏蔽了平台特征,使得在任何平台上都可以使用它下面是几个类的关系图可以看到它们都继承自QIODevice类,所以该类的一些函数也可以直接来使用图中还有一个QextBaseType类,其实它只是一个标识,没有具体的内容,它用来表示Win QextSerialPort或Posix QextSerialPort中的一个类,因为在QextSerialPort类中使用了条件编译,所以QextSerialPort类既可以继承自Win QextSerialPort类,也可以继承自PosixQextSerialPort类,所以使用了QextBaseType来表示这一点可以在qextserialport.h文件中看到再说QextSerialPort类,其实它只是为了方便程序的跨平台编译,使用它可以在不同的平台上,根据不同的条件编译继承不同的类所以它只是一个抽象,提供了几个构造函数而已,并没有具体的内容在qextserialport.h文件中的条件编译内容如下APOS IXCODE*/ttifdef_TTY_POSIX_^include^posix qextserialport,h”#define QextBaseTypePosixQextSerialPort/*MS WINDOWSCODE*/#else^include^win qextserialport,h”#define QextBaseTypeWin QextSerialPortttendif所以,其实没有必要使用这个类,直接使用Win_QextSerialPort或Posix_QextSerialPort就可以了当然如果你想使用这个类,实现同样的源程序可以直接在Windows和Linux下编译运行,那么一定要注意在Linux下这里需要添加#def ine_TTY_POSIX_oQextSerialBase类继承自QIODevice类,它提供了操作串口所必需的一些变量和函数等,而Win_QextSerialPort和Posix QextSerialPort均继承自QextSerialBase类,Win QextSerialPort类添加了Windows平台下操作串口的一些功能,Posix_QextSerialPort类添加了Linux平台下操作串口的一些功能所以说,在Windows下使用WinQextSerialPort类,在Linux下使用Posix_QextSerialPort类在QextSerialBase类中还涉及到了一个枚举变量QueryMode它有两个值Polling和EventDrivenQueryMode指的是读取串口的方式,下面我们称为查询模式,我们将Polling称为查询方式Polling,将EventDriven称为事件驱动方式事件驱动方式EventDriven就是使用事件处理串口的读取,一旦有数据到来,就会发出readyRead信号,我们可以关联该信号来读取串口的数据在事件驱动的方式下,串口的读写是异步的,调用读写函数会立即返回,它们不会冻结调用线程而查询方式Polling则不同,读写函数是同步执行的,信号不能工作在这种模式下,而且有些功能也无法实现但是这种模式下的开销较小我们需要自己建立定时器来读取串口的数据。
个人认证
优秀文档
获得点赞 0