C++课程设计 串口调试助手_第1页
C++课程设计 串口调试助手_第2页
C++课程设计 串口调试助手_第3页
C++课程设计 串口调试助手_第4页
C++课程设计 串口调试助手_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录【内容摘要】2【关键词】21 开发语言及开发平台简介31.1 开发语言31.1.1 C语言31.1.2 C+语言31.2 开发平台41.2.1 Microsoft Visual C+41.2.2 C+ Builder42 软件开发过程52.1 开发所需要的控件52.1.1 按钮控件52.1.2 文本控件52.1.3 串口控件52.1.4 选择控件62.2 数据发送设计62.3 数据接收设计83 软件使用说明94 软件测试104.1 辅助工具104.2 发送测试104.3 接收测试105 总结11致谢12参考文献13附录 主要程序14串口发送程序14串口接收程序15【Abstract】17

2、【Key Words】1718串口调试助手设计专业:电子科学与技术 学号:XXXXXXXXXXX学生姓名:X X X 指导老师姓名:X X X【内容摘要】串口调试助手是串口调试相关工具,网络上有很多串口调试助手,界面不同,功能各异,使用的开发语言和开发平台也不相同。有的使用C语言开发,有的使用C+语言开发,还有的即使用C语言也使用C+语言;开发平台有的使用Visual C+,有的使用C+ Builder等。本软件使用C语言和C+语言,开发平台使用C+Builder软件。该串口调试助手串口调试助手版支持常用的110 256000bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制

3、接收或发送数据或字符(包括中文),能发送文本文件(*.txt文本),可以任意设定自动发送周期,并能将接收数据保存成文本文件(*.txt),是做项目开发调试串口的好工具。【关键词】串口;C+;C+ Builder;控件;测试;1 开发语言及开发平台简介1.1 开发语言1.1.1 C语言C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔实验室的Dennis M. Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的

4、应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。1随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准, 使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,以前有许多大型应用软件都是用C语言编写的(由于面向对象编程技术的出现,大型软件转由C+、JAVA、C#再配合C语言开发;C语言在面对

5、大型的软件开发时,会显得有些吃力)。21.1.2 C+语言计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。世界上第一种计算机高级语言诞生于1954年,它是FORTRAN语言。先后出现了多种计算机高级语言。其中使用最广泛、影响最大的当推BASIC语言和C语言:BASIC语言是1964年在FORTRAN语言的基础上简化而成的, 它是为初学者设计的小型高级语言;C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的。它不是为初学者设计的,而是为计算机专业人员设计的。大多数系统软件和许多应用软件都是用C语言编写的,但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力

6、了。3在C基础上,1983年又由贝尔实验室的Bjarne Stroustrup推出了C+。 C+进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C+目前流行的编译器最新版本是GCC 4.8.2和Microsoft Visual Studio 2013。C+提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。4C+由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“

7、C with Classes”,即“带类的C”)。 C+保留了C语言原有的所有优点,增加了面向对象的机制。开始,C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(Operator Overloading)、多重继承(Multiple Inheritance)、模板(Template)、异常(Exception)、RTTI、命名空间(namespace)逐渐被加入标准。5C+是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C+。从C+的名字可以看出它是C的超越和集中。C+既可用于面向过程的结构化程序

8、设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。1.2 开发平台1.2.1 Microsoft Visual C+Microsoft Visual C+是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户

9、在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。61.2.2 C+ BuilderC+ Builder是由Borland公司推出的一款可视化集成开发工具。C+ Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C+ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可

10、重用控件;C+ Builder具有一个专业C+开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化的编程环境和功能强大的编程语言(C+)的完美结合。72 软件开发过程2.1 开发所需要的控件2.1.1 按钮控件按钮控件为中用的Button,它允许用户通过单击来执行操作。Button 控件既可以显示文本,又可以显示图像。当该按钮被单击时,它看起来像是被按下,然后被释放。该控件经常用来进行事件的触发使用,当在程序界面中拖出一个该控件,内部将会自动生成该控件对应的函数,当点击一下该控件时,将会执行该控件对应的函数,因此在该程序中,数据发送等操作

11、都使用该控件。按钮控件的如图2.1所示。图2.1 按钮控件2.1.2 文本控件文本控件为Edit,给文本控件添加字符串的操作为s为字符串数据,Edit1->Text=s;读取字符串数据的操作为s=Edit1->Text,如果想要把读取到的字符串数据转换为整数时,必须调用函数StrToInt(),例如t为整型变量t=StrToInt(Edit1->Text),如果想要把读取到的字符串数据转换为十六进制数时,必须调用函数StrToHHex(),例如t为整型变量t=StrToHex(Edit1->Text)。文本控件如图2.2所示。图2.2 文本控件2.1.3 串口控件串口控

12、件的为YbCommDevice1,内部已嵌入端口的选择、波特率的设定、以及奇偶校验位、停止位的设置等串口通讯协议需要设置的参数,串口控件设置如图2.3所示。图2.3 串口控件设置界面2.1.4 选择控件选择控件CheckBox,就是我们一般所说的选择框,通常用于某选项的打开或关闭。大多数应用程序的“设置”对话框内均有此控件。我们看到的可以打勾的就是CheckBox。该控件表明一个特定的状态(即选项)是选定 (on,值为true) 还是清除 (off,值为false)。在应用程序中使用该控件为用户提供True/False”或“yes/no”的选择。进行选项组合。在程序中通过对此控件属性的Chec

13、ked来进行判断是否是true或者false,然后在对程序进行数据处理。选择控件如图2.4所示。图2.4 选择控件2.2 数据发送设计该软件的数据发送可以实现自动发送和手动发送,手动发送通过按键按钮来实现,自动发送通过定时器控件实现。发送时主要的是实现对字符数据或者对十六进制数据进行处理成单字节给串口缓冲区发送出去,此时首先提取控件Memo1填入的数据,然后进行要判断是否要按十六进制数或者是字符数发送数据,处理数据之后在发送出去。本助手还可以发送*.txt文件,其发送原理是先把*.txt文件的内容提取出来放入Memo1中,然后进行要判断是否要按十六进制数或者是字符数发送数据,处理数据之后在发送

14、出去。数据发送的流程图如图2.5所示。图2.5 数据发送的程序流程图发送数据界面如图2.6所示。图2.6 发送数据界面2.3 数据接收设计该软件实现数据的接收采用的方式是用定时器间隔的检查串口接收缓冲区,如果检查到串口接收缓冲区数据接收标志位为1,就开始接收数据,否则标志位为0,将不接收任何数据。当检查到有数据接收时,首先读取接收到数据的长度,然后判断数据时按十六进制显示在接收区还是按字符数据显示在接收区,再对数据进行十六进制处理或者字符处理。如果要求清空接收区,点击清空按钮讲调用Memo1->Clear()对接收区进行清空。还可以对接收的数据进行保存为*.txt文件,默认名字为wqy.

15、txt,默认路径为D盘。接收数据程的序流程图如图2.7所示。图2.7 数据接收的程序流程图接收数据界面如图2.8所示。图2.8 数据接收界面3 软件使用说明整个使用说明分成四部分来介绍:(1)串口设置本;(2)通讯状态;(3)发送;(4)接收。整个软件打开后界面如图3.1所示。图3.1 整个软件界面(1)串口设置先点击串口设置,会弹出串口设置界面,设置好端口、波特率、奇偶校验、数据位、停止位,然后点击打开串口就可以了。(2)通讯状态通讯状态主要是看串口的状态,发送的字节数,接收的字节数,还可以清除计数。(3)发送发送可以分为手动发送和自动发送,两种发送都可以选择是字符发送还是选择十六进制发送,

16、先在数据发送区域输入要发送的数据,如果选择自动发送在自动发送的控件上打钩就可以了,还可以选择自动发送的周期,默认周期是1000ms,手动发送点击手动发送按钮就可以发送了。还可以发送*txt的文件,点击选择发送文件按钮,选好要发送的*txt文件,然后点击发送文件按钮。(4)接收接收界面比较简单,选择显示方式就可以了,可以选择字符显示和十六进制显示,还可以清空接收区,也可以保存显示的数据,默认保存在D盘,文件名为wqy.txt。4 软件测试软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行

17、操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。一个软件做好后,必须要进行软件测试。主要是测试内容为:81)确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。2)程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。3)评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。94.1 辅助工具要进行串口调试助手软件的测试,必须要有辅助的工具,测试该软件的辅助工具使用了STC89C52单片机,通过USB转串口线与电脑连接,写好单片机程序,其功能是单片机接收到上位机电脑串口发来的数据

18、,然后发回给上位机,通过串口调试助手显示出来。4.2 发送测试在发送数据的区域输入要发送的数据,选择自动发送或者手动发送,选择字符发送或者十六进制发送,还可以发送*.txt文件,打开要发送的*.txt文件,然后点击发送文件。4.3 接收测试在接受区看从单片机发送来的数据,可以选择字符显示,也可以选择十六进制显示,还可以保存显示的数据,默认保存在D盘,文件名为wqy.txt。测试结果如图4.1所示。图3.1 测试时整个软件界面5 总结学习的目的在于应用,我们学习C+也是这样,而且更看重应用,将来去企业,更是要自己动手,做出一点东西来才有用。这次课程设计使我学了很多,是学完C+之后将自己所学理论与

19、实际相结合的机会,通过这次基于C+语言的的串口调试助手的设计,我自己的理论与实践相结合的能力有了大幅度的提升。在学习专业知识的基础上,同时通过查阅专业书籍、相关文献资来解决实际工程问题,这锻炼了我的综合运用各项知识和资源的能力。使我不论是从理论知识还是从实际操纵中都学到了不少知识,我接触到更多平时没有接触过的C+ Builder的内部处理函数和控件,同时也发现了自己在这方面的很多不足之处。也使我对C+语言以及C+Builder的使用都有了深入的了解。体会到理论知识对实践有很大的指导作用,只有在正确理论的指引下才能设计出合乎实际需要的软件。本软件对于工程师调试串口具有极强的实用性,由于时间关系,

20、无论是功能还是界面,都还存在很多不足的地方,还需要在功能方面和可靠性方面进一步改进。致谢在二十多天课程设计设计和论文撰写过程中,我非常感谢我的指导教师老师。无论是在准备期间和系统调试阶段,闭金杰都给了我很大的帮助,衷心地谢谢他。同时也感谢同班同学的帮助和大力支持,在课程设计的这段时间中,兄弟们给了我很大帮助,当我遇到不懂的地方时,他们都会帮我解决,谢谢他们!记得有次调试程序时自己进入了死胡同,总是解决不了,自己无论怎样也找不到错误,最后黄永忠同学帮我看了很久才解决。还有班上很多好朋友,在设计过程中都给了我很大帮助,在此就不一一列出。在此,再次感谢所有的人,感谢他们!参考文献1 谭浩强.C语言程

21、序设计(第二版).北京:清华大学出版社,2009年2 谭浩强.C+面向对象程序设计.北京:清华大学出版社,2009 年3 赵景波.C+Builder 6.0基础教程.北京:机械工业出版社,2004年4 陆卫忠,刘文亮.C+Builder 6程序设计教程(第二版).北京:科学出版社,2011年5 蒙祖强.C+Builder程序员成长攻略. 北京:水利水电出版社,2007年6 郭文夷,戴芳胜.C+Builder 6.0程序设计.西安:西安电子科技大学出版社,2004年附录 主要程序串口发送程序void _fastcall TForm1:Timer1Timer(TObject *Sender) /定

22、时器1 Label7->Caption=re_time("yyyy' 年'mm'月'dd'日' hh' 时'nn' 分'ss' 秒'"); /读取时间 if(CheckBox4->Checked=true) /判断是否自动发送 if(Edit2->Text.Length()>0) /判断时间 time1_ms=StrToInt(Edit2->Text); /字符串转换为十进制 else time1_ms=1000; if(time1_ms>0)

23、 if(time1_ms!=before_time1) /时间变了就按变了的时间发送 before_time1=time1_ms; Timer1->Interval=time1_ms; /改变自动发送的时间 else time1_ms=1000; before_time1=1000; Timer1->Interval=1000; if(this->YbCommDevice1->Active=false) /*1*/ if(oc_flag=0) oc_flag=1; ShowMessage("请进行串口设置,并打开串口"); else oc_flag=

24、0; char *ch; int nBytes=0; char Buffer1000, *EndPtr; AnsiString t, s,sk; s=Memo2->Lines->GetText(); /提取发送区的字符 if(CheckBox3->Checked=true) /判断是否十六进制发送 while(s.Length()>0) int p=s.Pos(' '); /05 05 06 提取空格 if(p>0) t=s.SubString(1,p-1); /提取空格前的字符 s=s.SubString(p+1,s.Length().Trim(

25、);/提取空格后的字符-Length为测字符串长度 Trim是去掉前后空格 BuffernBytes+=strtol(t.c_str(), &EndPtr, 16) ; /转换为十六进制放入缓冲区 else t=s; s="" BuffernBytes+=strtol(t.c_str(), &EndPtr, 16); /转换为十六进制 else int len=0,ci; len=s.Length(); if(len>0) ch=s.c_str(); for(ci=0;ci<len;ci+) BuffernBytes+=*(ch+ci); tx_

26、cout+=nBytes; Edit9->Text=IntToStr(tx_cout); YbCommDevice1->Write(Buffer, nBytes); 串口接收程序void _fastcall TForm1:Timer2Timer(TObject *Sender) /定时器2 unsigned char Buf8192; if(first_flag=0) /第一次打开时要清空一次发送区 Memo2->Clear(); first_flag=1; if(this->YbCommDevice1->Active=true) Shape1->Brush

27、->Color=clLime; /串口灯亮 Edit11->Text="打开" int n=YbCommDevice1->Read(Buf,8192); /收到n个字节 if(n) AnsiString s; if(CheckBox2->Checked=true) / CheckBox2判断接收是否十六进制显示 for(int i=0; i<n; i+) s+=IntToHex(Bufi,2)+" " /转换为十六进制 else for(int i=0; i<n; i+) s+=char(Bufi);/In)tToStr(String( Bufi); if(!s.IsEmpty() Memo1->Lines->Add(s); /显示接收的内容 rx_cout+=n; /接收计数 Edit10->Text=IntToStr(rx_cout); /显示接收的字节 Serial Debugging Assistant DesignAuthor:Qiuyuan Wu【Abstract】Serial debugging assistant is a serial port deb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论