C++课程设计 串口调试助手
串口调试助手设计-虚拟仪器课程设计大学论文

虚拟仪器课程设计题目:串口调试助手设计学院:xxx交通大学机电工程学院班级:xx学号:xx姓名:xxxx目录《虚拟仪器设计》课程设计任务书 (2)1.引言 (4)2. labview及串口通信简介 (4)2.1 Labview (4)2.2串口通信简介 (5)3.串口相关节点介绍 (6)3.1 VISA配置串口 (6)3.2 设置缓冲区大小 (7)3.3visa写入 (7)3.4 VISA读取 (7)4.程序框图设计 (8)4.1 串口初始化输入模块 (8)4.2数据发送程序 (9)4.3数据接收 (9)4.4字节数显示 (10)4.5 属性节点设置 (10)5.前面板设计 (10)6.结语 (11)7.心得体会 (12)8. 参考文献 (13)xxx交通大学机电工程学院《虚拟仪器设计》课程设计任务书学生姓名:xxx 学号:2xxxxxx一、设计题目串口调试助手设计二、设计目的和要求通过对虚拟仪器的设计,了解虚拟仪器设计的基本原理及常用的对象使用方法;通过设计一台虚拟式数据采集系统、图形识别系统、通过串口、并口控制、测温系统、转速测量系统等,了解虚拟仪器数据采集卡的使用及设置,并口或串口的数据传输,了解虚拟编程中如何使用非NI公司的数据采集卡或电脑中常用的声卡,如何配置DAQ助手等,学会把外界物理信号采集到计算机并进行简单分析或者通过虚拟仪器产生符合要求的信号并通过声卡输出或者学会利用NI的ELVIS系统设计简单的测量软件。
加深虚拟仪器知识、单片机的了解,培养学生运用虚拟仪器思想解决工程实际问题的能力。
二、设计内容A.详细要求:(1)串口可选;(2)波特率可调;(3)串口通讯方式可调(9位还是11位);(4)校验方式可选(奇校验偶校验);(5)设计界面要标准B.前面板上要设置必要的控件对象以设置相应参数。
C.设计界面要美观,程序可读性好。
三、设计进度安排设计时间总计2周课程设计任务及要求讲解(0.5天)设计任务分析及查找资料(1.5天)程序编制及调试(5.5天)设计说明书撰写(2天)答辩(0.5天)四、设计任务书应包括的主要内容目录设计题目任务分析实现过程程序前面板及流程图结束语心得体会参考文献五、考核方法考核方式由三部分组成:平时学习态度(含考勤)、设计完成情况(含方案、程序质量、界面、说明书等)及答辩情况确定。
VC编写串口调试助手

void SetTextFont(int FontHight,LPCTSTR FontName);//设置字体
在MyButton.cpp的构造函数中初始化变量:
m_Style = 1;//m_Style = 0;//按钮形状风格
点击OK。项目创建完毕,进入项目。
删除界面上确定和取消按钮以及静态文字。
3.
保存后便可以开始创建界面了。
参考界面
仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。
4.
在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图
IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。下面将帮助页面图标也改为自绘图标。
右键波特率对应的Combo Box,ID设置为IDC_BAUD,Type及Sort同上。
右键数据位对应的Combo Box,ID设置为IDC_BDATA,Type及Sort同上。
右键停止位对应的Combo Box,ID设置为IDC_BSTOP,Type及Sort同上。
右键校验位对应的Combo Box,ID设置为IDC_CAL,Type及Sort同上。
CRectm_ButRect;//按钮尺寸
CFont*p_Font; //字体
void DrawButton(CDC *pDC);//画正常按钮
//接口函数
public:
MyButton();
void SetText(CString str);//设置文字
void SetForeColor(COLORREF color);//设置文本颜色
串口调试助手VC++6.0程序

串口调试助手源程序及编程详细过程作者:龚建伟 2001.6.20可以任意转载,但必须注明作者和说明来自,不得作为商用目次:1.建立项目2.在项目中插入MSComm控件3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数OnComm()6.打开和设置串口参数7.发送数据在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。
(也许本文过于详细,高手就不用看)开始吧:1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX 控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
C#串口调试助手

//serialPort1.Parity = (Parity)Enum.Parse(typeof(Parityset), comboBox4.SelectedItem.ToString());
} public enum Parityset {
None, odd, Even, Mark, Space } private void comboBox5_SelectedIndexChanged(object sender, EventArgs e) //停止位 { serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), boBox5.Text); }
serialPort1.BaudRate = int.Parse(comboBox2.Text); serialPort1.DataBits = int.Parse(comboBox3.Text); serialPort1.Parity = (Parity)Enum.Parse(typeof(Parityset),
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
textBox3.Text = serialPort.ReadExisting();
label10.Text = (int.Parse(label10.Text.Trim()) + 1).ToString(); //统计接收区 数据 组数
C课程教学设计串口调试助手

目录【内容摘要】 (2)【关键词】 (2)1 开发语言及开发平台简介 (3)1.1 开发语言 (3)1.1.1 C语言 (3)1.1.2 C++语言 (3)1.2 开发平台 (4)1.2.1 Microsoft Visual C++ (4)1.2.2 C++ Builder (4)2 软件开发过程 (5)2.1 开发所需要的控件 (5)2.1.1 按钮控件 (5)2.1.2 文本控件 (5)2.1.3 串口控件 (5)2.1.4 选择控件 (6)2.2 数据发送设计 (7)2.3 数据接收设计 (9)3 软件使用说明 (10)4 软件测试 (11)4.1 辅助工具 (11)4.2 发送测试 (11)4.3 接收测试 (11)5 总结 (12)致谢 (13)参考文献 (14)附录主要程序 (15)串口发送程序 (15)串口接收程序 (16)【Abstract】 (18)【Key Words】 (18)串口调试助手设计专业:电子科学与技术学号:XXXXXXXXXXX学生姓名:X X X 指导老师姓名:X X X【内容摘要】串口调试助手是串口调试相关工具,网络上有很多串口调试助手,界面不同,功能各异,使用的开发语言和开发平台也不相同。
有的使用C语言开发,有的使用C++语言开发,还有的即使用C语言也使用C++语言;开发平台有的使用Visual C++,有的使用C++ Builder等。
本软件使用C语言和C++语言,开发平台使用C++Builder软件。
该串口调试助手串口调试助手版支持常用的110 ~ 256000bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送数据或字符(包括中文),能发送文本文件(*.txt 文本),可以任意设定自动发送周期,并能将接收数据保存成文本文件(*.txt),是做项目开发调试串口的好工具。
【关键词】串口;C++;C++ Builder;控件;测试;1 开发语言及开发平台简介1.1 开发语言1.1.1 C语言C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
串口调试助手 毕业设计

串口调试助手毕业设计
串口调试助手是一种用于串口通信调试的工具,通常用于调试
嵌入式设备、传感器、单片机等硬件设备。
在毕业设计中,设计一
个串口调试助手可以涉及到硬件设计和软件开发两个方面。
首先,从硬件设计方面来看,你需要考虑选择合适的微控制器
或开发板作为主控制芯片,考虑串口通信的物理接口电路设计,包
括电平转换、防护电路等。
另外,还需要考虑是否需要设计显示屏、按键、指示灯等人机交互的硬件模块。
其次,从软件开发方面来看,你需要考虑串口通信协议的实现,包括数据的发送和接收、数据的解析和显示。
同时,还需要考虑界
面设计和交互逻辑的实现,包括图形界面的设计、数据的可视化显示、命令的发送和接收等功能。
在毕业设计中,你可以从以下几个方面展开:
1. 需求分析,首先明确串口调试助手的功能需求,包括支持的
串口通信协议、数据显示方式、交互方式等。
2. 硬件设计,选择合适的硬件平台,设计串口通信模块、人机
交互模块等。
3. 软件设计,设计合理的软件架构,实现串口通信协议的解析、数据的显示和交互逻辑的实现。
4. 调试和优化,对设计的串口调试助手进行整体调试,解决可
能出现的问题,并对系统进行优化。
此外,你还可以考虑加入一些创新点,比如支持多种串口通信
协议、实现数据的保存和回放、支持远程控制等功能,以提升毕业
设计的独特性和实用性。
总的来说,在毕业设计中设计一个串口调试助手,需要综合运
用硬件设计和软件开发的知识,考虑到功能需求、性能优化以及创
新点,最终完成一个全面完整的串口调试助手设计。
VCMFC编写串口调试助手

V C M F C编写串口调试助手集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]VC(MFC)编写串口调试助手1.序确定基本功能:1.自动寻找串口,并自动添加到下拉框中共选择;2.有波特率、数据位、停止位、校验位的选择设置;3.串口打开控制按钮;4.发送、清除按钮;5.接收是自动实现的;6.有定时自动发送功能;7.有传送文件功能;8.有状态栏显示,指示串口状态,设置参数和发送接收显示。
下面就一步步实现,本人纯业余,只是记录下来这个学习过程,请勿拍砖。
开发平台Visual C++英文版,电脑是i7-2670Q四核8G内存1G独显的笔记本,装的win7 64位旗舰版,因此VC6兼容不是太好,有些小毛病,不过不影响编写。
2.创建MFC项目File -> New -> Projects选择MFC AppWizard(exe),项目名称commassist选择OK选中Dialog based,点击Next> 。
默认选项,点击Next> ,继续默认选项,点击Next> ,如果选中As a statically linked library,生产的EXE可直接在没装VC的机器上运行。
可以在项目中进行更改。
选择第二个CCommassistDlg,点击Finish点击OK。
项目创建完毕,进入项目。
删除界面上确定和取消按钮以及静态文字。
3.创建界面保存后便可以开始创建界面了。
参考界面仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。
4.图标修改在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。
下面将帮助页面图标也改为自绘图标。
在打开按钮旁边加入自绘的打开和关闭图标:先加入工具条中的Picture,然后选中右键看属性,并如图将Image选为默认的IDI_ICON_CLOSE。
串口调试助手编写过程

目录:1.建立项目2.在项目中插入MSComm控件3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数OnComm()6.打开和设置串口参数7.发送数据8.发送十六进制字符9.在接收框中以十六进制显示10.如何设置自动发送11.什么是VARIANT数据类型?如何使用VARIANT数据类型?在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。
(也许本文过于详细,高手就不用看)开始吧:1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard 中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
串口调试助手VC源程序及详细编程过程

据数留残除清以区冲缓读预先//;)(tupnIteG.mmoClrtc_m 0为度长据数区收接前当置设// ;)0(neLtupnIteS.mmoClrtc_m 件事mmoCnO的据数收接个一发引将时符字个1于等或于多有中区冲缓收接口串当每示表1数参// ; ) 1 ( d l o h s er h T R t e S . m m oCl r t c _ m ; ) 1 ( e d o M tu p n I t e S . m m oCl r t c _ m 据数取检式方制进二以 // 位止停个1�位据数个8�验校无�0069率特波// ;)"1,8,n,0069"(sgnitteSteS.mmoClrtc_m ; )" t r o p l a i r es n e p o t o nn a c " ( x o B e g ass e M x f A esle 口串开打//;)EURT(nepOtroPteS.mmoClrtc_m ) )( n e p O t r o P te G . m m o C l r t c_m ! ( f i 1moc择选// ;)1(troPmmoCteS.mmoClrtc_m ; )E S L A F ( n e p Ot r o P t e S . m m oCl r t c _ m ) ) ( n e p O t r oP t e G . m m o C l rtc _ m ( f i e r e h n o i t az i l a i t i n i a r t x e d d A :OD O T / / �码代下如入加�口串开打)(golaiDtinInO::glDtseTmmoCSC的框话对主在们我在现。口串开打中数函 理处的钮按该在�钮按始开个一做中序程在如例�口串开打候时的要需你在以可你 数 参 口 串 置 设 和 口 串 开 打 . 6
C++实习案例1串口调试助手

1.安装好VS2010,建立“基于对话框”的MFC工程,命名为ComTest,应用程序类型选择"基于对话框”,建立好的工程如下图所示。
竺囤e awVMfa3Z申愕F|越帀洱1盂T冃•川T升・・巧20出A a tl■爭M1斤lix JBV-.U& C- * | 越ATIMR VisuaP C4 *丄方解远京霸逮吕录Pj■«r r ].* tFBWUlOMFC超工崔年2•删除默认的“确定”,“取消”按钮和静态文本框“ TOD0在此放置对话框控件”■0 C -tpmT^fi m 肚;萨刖申 Mi* ■Vlii^'^iCTf 丈传阳 osvi am 冏 环I &I3 辺 T 曰 p 口 E ■ | 矗 p 屯 I L 八 k '「丨• Drtjugi - ■rtin.i? O IQ J - j| v JIHXI^LK [二一汩口* a -B s -r -* 更直 arAtflcrf Camfco BoiGrt M 呵!Jg H>.AAjd«o DuftOh伽nc r» Fvtuiiff Dcrira I Hcrisicrtal Scrcril B«r■- - ?l ■>■- rv 阳r亠一*一d匸二 口fml HOC G Lafe Ceriral "rK EEta"e4 ■邛棺Z二| 5 出*■[ li 勺口丄_ • •単卫k J ■ I I- d i I i I i ■ < i ■ I ■ I 1 i h ■ i i ■ ■ i * i ■ ■ i ■ i JjCtt T = i '■-.■: ■,iicrta v*i ;^- ifl£ 31 p "<w CawTtec MkfO4ri^tV«dti Sd 商HR 文怜% MT)恸a 閘苹后戸Si-CDiTE 需HL 升 t-p-rrtreJHaK 拠n£d ficrdl far3•添加按钮控件“发送”按钮,添加方法为从右侧“工具箱”拖放一个“ Button ”到对话框, 并在右侧“属性”卡中修改“ Caption ”为“发送”,修改“ID ”为“ IDC_BUTTON_SEND 。
串口调试助手源程序

串口调试助手源程序及编程详细过程1.建立项目2.在项目中插入MSComm控件3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数OnComm()6.打开和设置串口参数7.发送数据在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用测试意见,更有50多位朋友提出要串口调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm编写串口通信程序的源代码,并写出详细的编程过程,姑且叫串口调试助手源程序V1.0或VC串口通讯源程序吧,我相信,如果你用VC编程,那么有了这个代码,就可以轻而易举地完成串口编程任务了。
(也许本文过于详细,高手就不用看)1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
C++实习案例1 串口调试助手

1. 安装好VS2010,建立“基于对话框”的MFC工程,命名为ComTest,应用程序类型选择“基于对话框”,建立好的工程如下图所示。
2.删除默认的“确定”,“取消”按钮和静态文本框“TODO:在此放置对话框控件”。
3.添加按钮控件“发送”按钮,添加方法为从右侧“工具箱”拖放一个“Button”到对话框,并在右侧“属性”卡中修改“Caption”为“发送”,修改“ID”为“IDC_BUTTON_SEND”。
4.添加控件组合框,添加方法为从右侧“工具箱”拖放两个个“Group Box”到对话框,并在右侧“属性”卡中修改“Caption”为“发送区”和“接收区”。
5.添加按钮控件“编辑框”,添加方法为从右侧“工具箱”拖放两个“Edit Control”到对话框,并在右侧“属性”卡中修改“ID”为“IDC_EDIT_Send”和“IDC_EDIT_Receive”,设置接收框为Read Only。
6 .添加其他按钮控件“清除”“打开串口”“关闭串口”,添加方法为从右侧“工具箱”拖放四个“Button”到对话框,并在右侧“属性”卡中修改“ID”为“IDC_BUTTON_CLEAR”和“IDC_BUTTON_CLEAR1”“IDC_BUTTON_OPEN”“IDC_BUTTON_CLOSE”。
7 .添加控件“串口”“波特率”“数据位”“停止位”“校验”,添加方法为从右侧“工具箱”拖放五个“COMBO BOX”到对话框,并在右侧“属性”卡中修改“ID”为“IDC_ COMBO _COM”和“IDC_ COMBO _BAUDRATE”“IDC_ COMBO _BITS”“IDC_ COMBO _STOPBITS”“IDC_ COMBO _CHECK”。
在各个ComBo Box控件的属性中的Data中加入列表选项。
8 .添加控件“Static Text”,添加方法为从右侧“工具箱”拖放五个“Static Text”到对话框,并在右侧“属性”卡中修改“Caption”为“串口:”和“波特率:”“数据位:”“停止位:”“校验:”。
串口调试助手源码

串口调试助手程序框架(一)【截图】【源码】main.cpp#include<windows.h>#include<commctrl.h>#include<iostream>#include<stdio.h>#include"resource.h"using namespace std;HINSTANCE hInst;//窗口实例HWND hRDCLEAR, hSDCLEAR;HMENU hRDCHAR;void Init(HWND hwndDlg){SetWindowText(GetDlgItem(hwndDlg, SETXONC), "0x13");SetWindowText(GetDlgItem(hwndDlg, SETXOFFC), "0x19");SetWindowText(GetDlgItem(hwndDlg, SETTO), "0");SendDlgItemMessage(hwndDlg, RDCHAR, BM_SETCHECK, 1, 0);//把RadioBox RDCHAR设置为选中SendDlgItemMessage(hwndDlg, SDCHAR, BM_SETCHECK, 1, 0);//默认发送字符SendDlgItemMessage(hwndDlg, CTASY, BM_SETCHECK, 1, 0);//默认异步通信//在一个groupbox中必须有一个radiobox的属性:组为真//串口号SetWindowText(GetDlgItem(hwndDlg, SETCOMNO), "COM4");//默认值SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM1"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM2"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM3"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM4"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM5"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM6"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM7"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM8"));SendDlgItemMessage(hwndDlg, SETCOMNO, CB_ADDSTRING, 0, (LPARAM)("COM9"));//波特率SetWindowText(GetDlgItem(hwndDlg, SETBR), "9600");//默认值SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("1200"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("2400"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("4800"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("9600"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("14400"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("28800"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("38400"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("57600"));SendDlgItemMessage(hwndDlg, SETBR, CB_ADDSTRING, 0, (LPARAM)("115200"));//数据位SetWindowText(GetDlgItem(hwndDlg, SETBS), "8");//默认值SendDlgItemMessage(hwndDlg, SETBS, CB_ADDSTRING, 0, (LPARAM)("4"));SendDlgItemMessage(hwndDlg, SETBS, CB_ADDSTRING, 0, (LPARAM)("5"));SendDlgItemMessage(hwndDlg, SETBS, CB_ADDSTRING, 0, (LPARAM)("6"));SendDlgItemMessage(hwndDlg, SETBS, CB_ADDSTRING, 0, (LPARAM)("7"));SendDlgItemMessage(hwndDlg, SETBS, CB_ADDSTRING, 0, (LPARAM)("8"));//校验位SetWindowText(GetDlgItem(hwndDlg, SETPAR), "N");//默认值SendDlgItemMessage(hwndDlg, SETPAR, CB_ADDSTRING, 0, (LPARAM)("N"));SendDlgItemMessage(hwndDlg, SETPAR, CB_ADDSTRING, 0, (LPARAM)("odd"));SendDlgItemMessage(hwndDlg, SETPAR, CB_ADDSTRING, 0, (LPARAM)("even"));//停止位SetWindowText(GetDlgItem(hwndDlg, SETSB), "1");//默认值SendDlgItemMessage(hwndDlg, SETSB, CB_ADDSTRING, 0, (LPARAM)("1"));SendDlgItemMessage(hwndDlg, SETSB, CB_ADDSTRING, 0, (LPARAM)("2"));}BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {//窗口回调函数switch (uMsg)//消息处理{case WM_INITDIALOG://初始化{Init(hwndDlg);}return TRUE;case WM_CLOSE://关闭窗口{EndDialog(hwndDlg, 0);}return TRUE;case WM_COMMAND://菜单消息{switch (LOWORD(wParam)){case RDCLEAR://清空接收框数据{SetWindowText(hRDCLEAR, "");}return TRUE;case SDCLEAR://清空发送框数据{SetWindowText(GetDlgItem(hwndDlg, SDTEXT), "");}return TRUE;case SDSEND://发送数据{TCHAR szBuf[80];//缓存区string temp;GetWindowText(GetDlgItem(hwndDlg, SDTEXT), szBuf, 80);//获得接收框的文本temp = szBuf;//拼接字符串//cout<<temp;SetWindowText(GetDlgItem(hwndDlg, RDTEXT), temp.c_str());}return TRUE;case SETOP:{//打开串口}return TRUE;case SETCP:{//关闭串口}return TRUE;case SETSO:{}return TRUE;}}return TRUE;}return FALSE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {hInst = hInstance;InitCommonControls();return DialogBox(hInst, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DlgMain);}【源码】resource.h#ifndef IDC_STATIC#define IDC_STATIC (-1)#endif#define DLG_MAIN 100#define RDBOX 40000#define RDTEXT 40001#define RDCHAR 40002#define RDHEX 40003#define RDCLEAR 40004#define SDCHAR 40005#define SDHEX 40006#define SDCLEAR 40007#define SDSEND 40008#define SDAS 40009#define SDASTIME 40010#define SETCOMNO 40011#define CTSYN 40012#define CTASY 40013#define SETBR 40014#define SDTEXT 40015#define SETXONC 40016#define SETXOFFC 40017#define SETTO 40018#define SETPAR 40019#define SETSB 40020#define SETBS 40021#define SETOP 40022#define SETCP 40023#define SETSO 40024【源码】resource.rc#include<windows.h>#include<commctrl.h>#include<richedit.h>#include"resource.h"//// Dialog resources//LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRALDLG_MAIN DIALOG 0, 0, 635, 304STYLE DS_3DLOOK| DS_CENTER| DS_MODALFRAME| DS_SHELLFONT| WS_CAPTION| WS_VISIBLE| WS_POPUP| WS_SYSMENU CAPTION "SerialPortDebug"FONT 8, "Ms Shell Dlg"{GROUPBOX "Setting", 0, 257, 7, 365, 290, 0, WS_EX_LEFTLTEXT "Select Port", 0, 284, 30, 36, 8, SS_LEFT, WS_EX_LEFTGROUPBOX "Communication Type", 0, 278, 62, 295, 35, 0, WS_EX_LEFTLTEXT "ByteSize", 0, 469, 120, 28, 8, SS_LEFT, WS_EX_LEFTLTEXT "BaudRate", 0, 297, 122, 33, 8, SS_LEFT, WS_EX_LEFTGROUPBOX "Send Data", 0, 12, 135, 240, 162, 0, WS_EX_LEFTLTEXT "StopBits", 0, 471, 161, 27, 8, SS_LEFT, WS_EX_LEFTLTEXT "Parity", 0, 299, 162, 18, 8, SS_LEFT, WS_EX_LEFTAUTOCHECKBOX "fParity", 0, 401, 162, 35, 8, 0, WS_EX_LEFTAUTOCHECKBOX "CTS", 0, 296, 202, 30, 8, 0, WS_EX_LEFTAUTOCHECKBOX "DSR", 0, 365, 202, 31, 8, 0, WS_EX_LEFTAUTOCHECKBOX "DTR", 0, 436, 202, 31, 8, 0, WS_EX_LEFTAUTOCHECKBOX "XON/XOFF", 0, 507, 202, 53, 8, 0, WS_EX_LEFTLTEXT "ms", 0, 131, 228, 10, 8, SS_LEFT, WS_EX_LEFTLTEXT "ms", 0, 562, 237, 10, 8, SS_LEFT, WS_EX_LEFTLTEXT "XonChar", 0, 293, 238, 28, 8, SS_LEFT, WS_EX_LEFTLTEXT "XoffChar", 0, 383, 238, 28, 8, SS_LEFT, WS_EX_LEFTLTEXT "Timeouts", 0, 478, 238, 30, 8, SS_LEFT, WS_EX_LEFTGROUPBOX "Receive Data", RDBOX, 15, 10, 235, 120, 0, WS_EX_LEFTEDITTEXT RDTEXT, 20, 25, 225, 75, ES_AUTOHSCROLL | ES_MULTILINE | ES_READONLY, WS_EX_LEFTAUTORADIOBUTTON "Char", RDCHAR, 26, 112, 31, 8, WS_GROUP, WS_EX_LEFTAUTORADIOBUTTON "Hex", RDHEX, 80, 112, 29, 8, 0, WS_EX_LEFTPUSHBUTTON "Clear", RDCLEAR, 196, 108, 45, 14, 0, WS_EX_LEFTAUTORADIOBUTTON "Char", SDCHAR, 26, 208, 31, 8, WS_GROUP, WS_EX_LEFTAUTORADIOBUTTON "Hex", SDHEX, 82, 208, 29, 8, 0, WS_EX_LEFTPUSHBUTTON "Clear", SDCLEAR, 132, 204, 45, 14, 0, WS_EX_LEFTPUSHBUTTON "Send", SDSEND, 196, 204, 45, 14, 0, WS_EX_LEFTAUTOCHECKBOX "Auto send", SDAS, 26, 228, 48, 8, 0, WS_EX_LEFTEDITTEXT SDASTIME, 86, 225, 40, 14, ES_RIGHT | ES_AUTOHSCROLL, WS_EX_LEFTCOMBOBOX SETCOMNO, 337, 27, 95, 30, CBS_DROPDOWN | CBS_HASSTRINGS, WS_EX_LEFTAUTORADIOBUTTON "Synchronous ", CTSYN, 326, 75, 59, 8, WS_GROUP, WS_EX_LEFTAUTORADIOBUTTON "Asynchronous ", CTASY, 472, 77, 63, 8, 0, WS_EX_LEFTCOMBOBOX SETBR, 337, 120, 48, 30, CBS_DROPDOWN | CBS_HASSTRINGS, WS_EX_LEFTEDITTEXT SDTEXT, 20, 147, 227, 45, ES_AUTOHSCROLL, WS_EX_LEFTEDITTEXT SETXONC, 325, 235, 40, 14, ES_AUTOHSCROLL, WS_EX_LEFTEDITTEXT SETXOFFC, 417, 235, 40, 14, ES_AUTOHSCROLL, WS_EX_LEFTEDITTEXT SETTO, 512, 235, 40, 14, ES_AUTOHSCROLL, WS_EX_RIGHTCOMBOBOX SETPAR, 338, 160, 48, 30, CBS_DROPDOWN | CBS_HASSTRINGS, WS_EX_LEFTCOMBOBOX SETSB, 512, 159, 48, 30, CBS_DROPDOWN | CBS_HASSTRINGS, WS_EX_LEFTCOMBOBOX SETBS, 512, 117, 48, 30, CBS_DROPDOWN | CBS_HASSTRINGS, WS_EX_LEFTPUSHBUTTON "Open Port", SETOP, 297, 272, 45, 14, 0, WS_EX_LEFTPUSHBUTTON "Close Port", SETCP, 387, 272, 45, 14, 0, WS_EX_LEFTDEFPUSHBUTTON "Stop I/O", SETSO, 473, 271, 45, 14, 0, WS_EX_LEFT}//// Manifest resources//LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL1 RT_MANIFEST".\\manifest.xml"【源码】manifest.xml< ? xml version = "1.0" encoding = "UTF-8" standalone = "yes" ? ><assembly xmlns = "urn:schemas-microsoft-com:asm.v1" manifestVersion = "1.0"><dependency><dependentAssembly><assemblyIdentity type = "win32" name = "mon-Controls" version = "6.0.0.0" processorArchitecture = "*" publicKeyToken = "6595b64144ccf1df" language = "*" / >< / dependentAssembly>< / dependency><trustInfo xmlns = "urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevel level = "asInvoker" uiAccess = "false" / > < / requestedPrivileges> < / security>< / trustInfo>< / assembly>。
串口调试助手使用教程

串口调试助手使用教程首先,确保你已经正确连接了串口调试助手软件和目标设备的串口。
1. 打开串口调试助手软件。
在软件界面的顶部菜单栏中,通常会有一个“串口”的选项,点击它展开串口设置。
2. 查找并选择正确的串口。
在串口设置中,你可以看到可用的串口列表。
选择正确的串口,通常以“COM”开头并带有具体的串口号。
如果你不确定应该选择哪个串口,可以尝试一个接一个地选择每个串口,然后观察是否有数据传输。
3. 配置串口参数。
继续在串口设置中,通常会有波特率、数据位、停止位、校验位和流控制等选项。
确保这些参数与你的设备设置相匹配。
如果你不确定设备的串口参数,可以参考设备的说明书或者询问设备厂商。
4. 打开串口。
完成串口参数配置后,点击一个按钮或者选项来打开串口连接。
通常会有一个“打开串口”、“连接”或者类似的按钮。
如果一切正常,你应该能在软件界面上看到串口的连接状态。
5. 监听串口数据。
一旦串口连接成功,你可以开始接收和发送数据。
通常会有一个数据接收区和一个数据发送区。
数据接收区会实时显示通过串口接收到的数据。
你可以通过不同的设置来选择以何种方式显示数据,例如文本、十六进制等。
6. 发送数据。
如果你需要通过串口发送数据到目标设备,你可以在数据发送区输入相应的数据,然后点击发送按钮或者类似的选项。
通过串口调试助手,你可以发送文本、十六进制等各种类型的数据。
7. 保存数据。
如果你需要保存通过串口接收或发送的数据,你可以使用串口调试助手提供的保存功能。
通常会有一个保存按钮或者菜单选项,点击它可以将数据保存为文件。
8. 关闭串口。
当你不再需要使用串口时,记得关闭串口连接。
一般会有一个“关闭串口”或者类似的按钮。
这样可以释放串口资源,同时避免不必要的错误。
以上就是使用串口调试助手的基本步骤。
根据不同的软件界面和功能设置,可能会略有差异,但基本原理是相似的。
请根据具体软件的说明和使用指南进行相关操作。
经典串口调试助手源程序及串口通信设置

经典串口调试助手源程序及串口通信设置串口调试助手是一种用于串口通信调试的工具,它可以通过串口与外部设备进行数据的读写和处理,常用于单片机、嵌入式系统、电子设备等领域的开发调试中。
经典串口调试助手源程序经典串口调试助手是一款经典的串口调试工具,其源程序使用C语言编写,提供了丰富的功能和易于使用的界面,被广泛应用于各种领域的开发调试中。
该工具可以在Windows操作系统中运行,并支持多种串口通信协议,包括RS232、RS485、RS422等。
以下是经典串口调试助手部分源程序的示例:```c// 打开串口HANDLE OpenSerialPort(const char* portName){ HANDLE hCom; hCom = CreateFile(portName, // 串口名称GENERIC_READ | GENERIC_WRITE, // 读写访问0,// 无共享NULL,// 安全描述符OPEN_EXISTING,// 打开方式FILE_ATTRIBUTE_NORMAL, // 文件属性NULL); // 文件模板if (hCom ==INVALID_HANDLE_VALUE) // 判断是否打开成功{ return NULL; } return hCom;}// 发送数据int SendData(HANDLE hCom, const char* data, int len){ DWORD writeSize; if (!WriteFile(hCom, data, len, &writeSize, NULL)) // 写入数据{ return -1; } return writeSize;}// 接收数据int ReceiveData(HANDLE hCom, char* data, int len){ DWORD readSize; if (!ReadFile(hCom, data, len,&readSize, NULL)) // 读取数据{ return -1; } return readSize;}// 关闭串口int CloseSerialPort(HANDLE hCom){ if(!CloseHandle(hCom)) // 关闭句柄{ return-1; } return 0;}```上述函数实现了打开串口、发送数据、接收数据和关闭串口等基本功能,可以作为串口通信的底层驱动实现。
VC[MFC]编写串口调试助手
![VC[MFC]编写串口调试助手](https://img.taocdn.com/s3/m/4ba46e363186bceb18e8bb47.png)
VC(MFC)编写串口调试助手1.序确定基本功能:1.自动寻找串口,并自动添加到下拉框中共选择;2.有波特率、数据位、停止位、校验位的选择设置;3.串口打开控制按钮;4.发送、清除按钮;5.接收是自动实现的;6.有定时自动发送功能;7.有传送文件功能;8.有状态栏显示,指示串口状态,设置参数和发送接收显示。
下面就一步步实现,本人纯业余,只是记录下来这个学习过程,请勿拍砖。
开发平台Visual C++6.0英文版,电脑是i7-2670Q四核8G内存1G独显的笔记本,装的win7 64位旗舰版,因此VC6兼容不是太好,有些小毛病,不过不影响编写。
2.创建MFC项目File -> New -> Projects选择MFC AppWizard(exe),项目名称massist选择OK选中Dialog based,点击Next> 。
默认选项,点击Next> ,继续默认选项,点击Next> ,如果选中As a statically linked library,生产的EXE可直接在没装VC的机器上运行。
可以在项目中进行更改。
选择第二个CmassistDlg,点击Finish点击OK。
项目创建完毕,进入项目。
删除界面上确定和取消按钮以及静态文字。
3.创建界面保存后便可以开始创建界面了。
参考界面仿照设计的界面,具体添加按钮或编辑框等的布局步骤就不用细说了。
4.图标修改在资源视图中选择Icon右键InsertIcon加入打开和关闭的Icon图标或自行绘制,如下图IDR_MAINFRAME原为MFC提供的图标,这里我直接改成自己的,生成EXE后将会显示这个图标。
下面将帮助页面图标也改为自绘图标。
在打开按钮旁边加入自绘的打开和关闭图标:先加入工具条中的Picture,然后选中右键看属性,并如图将Image选为默认的IDI_ICON_CLOSE。
如下图5.基本设置下面对各个按钮及编辑框设置进行描述右键串口对应的bo Box,ID设置为IDC_LIST,Type设置为Drop List,Sort不选择(我系统是WIN7 64位,不选中反而自动排序,至于XP得试试看了,以下的选择相同)。
串口调试助手使用说明概要

串口调试助手使用说明为简单明了,有些不言自明的功能不作介绍。
1 串口调试助手1.1 设置串口参数:串口号:1-16波特率:600-256000,>115200 时需要硬件支持。
2 接收区/键盘发送区2.1 接收数据a 设置串口参数b 如果要按十六进制形式显示接收数据,将十六进制显示选项选中。
c 点击打开/关闭串口区中的打开串口按钮。
2.2 显示接收数据的长度因某些限制,显示接收数据的文本不能太长,所以当显示文本长度快达到 62K 时会自动将显示文本删减到 32K,此时文本可保留 32K 的字符或约 10K 的十六进制数据显示。
2.3 在键盘上发送英文字符a在接收区/键盘发送区的输入框中用鼠标点一下。
b在键盘按下按键立刻发送。
在这里不能发送回车换行,也不能发送汉字,若要发送请在单字符串发送区发送。
3 发送数据可以发送单字符串,多字符串(字符串序列或直接在键盘上发送英文字符。
有两种发送数据格式,一种是普通的字符串,另外一种是十六进制数据即 HEX 格式数据。
发送 HEX 格式数据时要在字符串输入区中输入 HEX 格式字符串,并且要将相应区内的十六进制发送选项选中。
例:HEX 格式数据字符串12 34 AB CD FF3.1 单字符串发送区3.1.1自动发送,自动发送周期:此项功能可以每隔一段时间反复地自动发送输入框中的数据,点击自动发送按钮后即启动自动发送功能。
自动发送周期最大为 65535mS。
3.2 多字符串发送区在多字符串发送区可以发送一个字符串,或者自动地、依次发送所有的字符串。
请把鼠标移到“接收区/键盘发送区”和“多字符串发送区”之间,当鼠标形状发生变化时按下鼠标器的左键不松开,然后移动鼠标,将“多字符串发送区”的宽度调宽一些,让“间隔时间”显露出来。
3.2.1发送一个字符串a 输入字符串。
b 如果要发送 16 进制数据, 要先在字符串后的 HEX 选项框中打上对勾。
c 点击发送按钮。
串口调试助手c开发

串口调试助手c开发1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的Componentsand Controls…选项,在弹出的对话框中双击Registered ActiveXControls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。
选择Microsoft Communications Control,version6.0,,单击Insert按钮将它插入到我们的Project 中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView 视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
3.利用ClassWizard定义CMSComm类控制对象打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES()#include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。
c语言程序和串口调试助手的奇偶校验

c语言程序和串口调试助手的奇偶校验UCSR0C以前为0x06,执行UCSR0C = UCSR0C | (0x03<<4);后0x36为奇校验以下程序中现象:1、用串口调试助手上电第一次发送:53 53 02 55 aa,led2(对应mos_led_on(1)),和led3闪一次,再发送一次:53 53 02 52 52 能正确将数组RedRightdirection中的数发出,以后再发n次这2个灯始终不闪并发不出RedRightdirection中的数;2、如一直发53 53 02 55 aa,led2(对应mos_led_on(1)),和led3每发一次数,闪一次;3、每发送一次53 53 02 55 aa,串口调试助手80%情况下返回53 53 02 55 aa,还返回不确定的数字;调试过程:以为程序跑飞,ram不够用,收发出错。
把精力耗在了串口接收或发送的问题上,不断查验中断和收发程序,也没高通,后来准备给姜老师演示问题时在while前加了UCSR0C = UCSR0C | (0x03<<4)却发现第一次led2,led3也不能正常闪烁,而且黑体字部分无论何时都能正常收发,最后发现问题:串口调试助手中收发设为none校验!而不是程序中的奇校验!第一次led2,led3能闪是因为此时是无校验方式,经过LedDisplay后变为奇校验所有发不出数据!能折腾了3,4天!程序:void LedDisplay(char *temp){unsigned char str1[]={0x01,0x01};comBuf temp_st;unsigned int i=0;//UCSR0C = UCSR0C & (~(0x01<<4)); //偶校验//UCSR0C = UCSR0C | (0x01<<5); //偶校验UCSR0C = UCSR0C | (0x03<<4); //设为奇校验或偶校验都可以,但不校验就不行!//UCSR0C:0x06->0x36memcpy(&temp_st.data[0],&str1[0],2);temp_st.size = 2;Send_UART(&temp_st);mos_thread_sleep(300); // sleep 300msfor(i=0;i<InstructionLen;i++){temp_st.data[i] = *(temp++);temp_st.size = 1;Send_UART(&temp_st);}}while(1){mos_led_on(0);mos_thread_sleep(100);mos_led_off(0);mos_thread_sleep(900);com_mode(IFACE_SERIAL, IF_LISTEN);recv_packet = com_recv (IFACE_SERIAL);//if(recv_packet->size) {Send_UART(recv_packet);} //for only this line,len can flashif(recv_packet->data[0]==0x55 && recv_packet->data[1]==0xaa) {Send_UART(recv_packet);mos_led_on(1);mos_led_on(2);mos_thread_sleep(2000);mos_led_off(2);mos_led_off(1);}if(recv_packet->size) { //B:0x42 L:4C R:52 G:47 R:52Derection = recv_packet->data[0];Color = recv_packet->data[1];if(Derection==0x42 && Color==0x52) LedDisplay(RedBidirection);if(Derection==0x4c && Color==0x52) LedDisplay(RedLeftdirection); //RBGL:52 42 47 4Cif(Derection==0x52 && Color==0x52) LedDisplay(RedRightdirection);if(Derection==0x42 && Color==0x47) LedDisplay(GreenBidirection);if(Derection==0x4c && Color==0x47) LedDisplay(GreenBidirection);if(Derection==0x52 && Color==0x47) LedDisplay(GreenBidirection);com_free_buf(recv_packet); // free the recv'd packet to the poolcom_mode(IFACE_SERIAL, IF_LISTEN); // set it to listening mode}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录【内容摘要】 (2)【关键词】 (2)1 开发语言及开发平台简介 (3)1.1 开发语言 (3)1.1.1 C语言 (3)1.1.2 C++语言 (3)1.2 开发平台 (4)1.2.1 Microsoft Visual C++ (4)1.2.2 C++ Builder (5)2 软件开发过程 (6)2.1 开发所需要的控件 (6)2.1.1 按钮控件 (6)2.1.2 文本控件 (6)2.1.3 串口控件 (6)2.1.4 选择控件 (7)2.2 数据发送设计 (7)2.3 数据接收设计 (9)3 软件使用说明 (11)4 软件测试 (13)4.1 辅助工具 (13)4.2 发送测试 (13)4.3 接收测试 (13)5 总结 (15)致谢 (16)参考文献 (17)附录主要程序 (18)串口发送程序 (18)串口接收程序 (19)【Abstract】 (21)【Key Words】 (21)串口调试助手设计专业:电子科学与技术学号:XXXXXXXXXXX学生姓名:X X X 指导老师姓名:X X X【内容摘要】串口调试助手是串口调试相关工具,网络上有很多串口调试助手,界面不同,功能各异,使用的开发语言和开发平台也不相同。
有的使用C语言开发,有的使用C++语言开发,还有的即使用C语言也使用C++语言;开发平台有的使用Visual C++,有的使用C++ Builder等。
本软件使用C语言和C++语言,开发平台使用C++Builder软件。
该串口调试助手串口调试助手版支持常用的110 ~ 256000bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送数据或字符(包括中文),能发送文本文件(*.txt 文本),可以任意设定自动发送周期,并能将接收数据保存成文本文件(*.txt),是做项目开发调试串口的好工具。
【关键词】串口;C++;C++ Builder;控件;测试;1 开发语言及开发平台简介1.1 开发语言1.1.1 C语言C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔实验室的Dennis M. Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
[1] 随着微型计算机的日益普及,出现了许多C语言版本。
由于没有统一的标准, 使得这些C语言之间出现了一些不一致的地方。
为了改变这种情况,美国国家标准研究所(ANSI)为C 语言制定了一套ANSI标准,成为现行的C语言标准。
在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,以前有许多大型应用软件都是用C语言编写的(由于面向对象编程技术的出现,大型软件转由C++、JAVA、C#再配合C语言开发;C语言在面对大型的软件开发时,会显得有些吃力)。
[2]1.1.2 C++语言计算机诞生初期,人们要使用计算机必须用机器语言或汇编语言编写程序。
世界上第一种计算机高级语言诞生于1954年,它是FORTRAN语言。
先后出现了多种计算机高级语言。
其中使用最广泛、影响最大的当推BASIC语言和C语言:BASIC语言是1964年在FORTRAN语言的基础上简化而成的, 它是为初学者设计的小型高级语言;C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的。
它不是为初学者设计的,而是为计算机专业人员设计的。
大多数系统软件和许多应用软件都是用C语言编写的,但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。
[3]在C基础上,1983年又由贝尔实验室的Bjarne Stroustrup推出了C++。
C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。
C++目前流行的编译器最新版本是GCC 4.8.2和Microsoft Visual Studio 2013。
C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。
因而也增加了整个语言的复杂性,掌握起来有一定难度。
[4]C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”,即“带类的C”)。
C++保留了C语言原有的所有优点,增加了面向对象的机制。
开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。
虚函数(virtual function)、运算符重载(Operator Overloading)、多重继承(Multiple Inheritance)、模板(T emplate)、异常(Exception)、RTTI、命名空间(namespace)逐渐被加入标准。
[5]C++是由C发展而来的,与C兼容。
用C语言写的程序基本上可以不加修改地用于C++。
从C++的名字可以看出它是C的超越和集中。
C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。
1.2 开发平台1.2.1 Microsoft Visual C++Microsoft Visual C++是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。
它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。
它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。
这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。
[6]1.2.2 C++ BuilderC++ Builder是由Borland公司推出的一款可视化集成开发工具。
C++ Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C++ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C++ Builder具有一个专业C++开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。
它实现了可视化的编程环境和功能强大的编程语言(C++)的完美结合。
[7]2 软件开发过程2.1 开发所需要的控件2.1.1 按钮控件按钮控件为中用的Button,它允许用户通过单击来执行操作。
Button 控件既可以显示文本,又可以显示图像。
当该按钮被单击时,它看起来像是被按下,然后被释放。
该控件经常用来进行事件的触发使用,当在程序界面中拖出一个该控件,内部将会自动生成该控件对应的函数,当点击一下该控件时,将会执行该控件对应的函数,因此在该程序中,数据发送等操作都使用该控件。
按钮控件的如图2.1所示。
图2.1 按钮控件2.1.2 文本控件文本控件为Edit,给文本控件添加字符串的操作为s为字符串数据,Edit1->T ext=s;读取字符串数据的操作为s=Edit1->T ext,如果想要把读取到的字符串数据转换为整数时,必须调用函数StrToInt(),例如t为整型变量t=StrT oInt(Edit1->T ext),,如果想要把读取到的字符串数据转换为十六进制数时,必须调用函数StrToHHex(),例如t为整型变量t=StrT oHex(Edit1->T ext)。
文本控件如图2.2所示。
图2.2 文本控件2.1.3 串口控件串口控件的为YbCommDevice1,内部已嵌入端口的选择、波特率的设定、以及奇偶校验位、停止位的设置等串口通讯协议需要设置的参数,串口控件设置如图2.3所示。
图2.3 串口控件设置界面2.1.4 选择控件选择控件CheckBox,就是我们一般所说的选择框,通常用于某选项的打开或关闭。
大多数应用程序的“设置”对话框内均有此控件。
我们看到的可以打勾的就是CheckBox。
该控件表明一个特定的状态(即选项)是选定(on,值为true) 还是清除(off,值为false)。
在应用程序中使用该控件为用户提供True/False”或“yes/no”的选择。
进行选项组合。
在程序中通过对此控件属性的Checked来进行判断是否是true或者false,然后在对程序进行数据处理。
选择控件如图2.4所示。
图2.4 选择控件2.2 数据发送设计该软件的数据发送可以实现自动发送和手动发送,手动发送通过按键按钮来实现,自动发送通过定时器控件实现。
发送时主要的是实现对字符数据或者对十六进制数据进行处理成单字节给串口缓冲区发送出去,此时首先提取控件Memo1填入的数据,然后进行要判断是否要按十六进制数或者是字符数发送数据,处理数据之后在发送出去。
本助手还可以发送*.txt文件,其发送原理是先把*.txt文件的内容提取出来放入Memo1中,然后进行要判断是否要按十六进制数或者是字符数发送数据,处理数据之后在发送出去。
数据发送的流程图如图2.5所示。
图2.5 数据发送的程序流程图发送数据界面如图2.6所示。
图2.6 发送数据界面2.3 数据接收设计该软件实现数据的接收采用的方式是用定时器间隔的检查串口接收缓冲区,如果检查到串口接收缓冲区数据接收标志位为1,就开始接收数据,否则标志位为0,将不接收任何数据。
当检查到有数据接收时,首先读取接收到数据的长度,然后判断数据时按十六进制显示在接收区还是按字符数据显示在接收区,再对数据进行十六进制处理或者字符处理。
如果要求清空接收区,点击清空按钮讲调用Memo1->Clear()对接收区进行清空。
还可以对接收的数据进行保存为*.txt文件,默认名字为wqy.txt,默认路径为D盘。
接收数据程的序流程图如图2.7所示。
检查串口接收缓冲区的数据并做处理开始是否按十六进制显示把串口接收缓冲区的数据处理成十六进制,然后按十六进制显示把串口接收缓冲区的数据按字符显示结束否是图2.7 数据接收的程序流程图接收数据界面如图2.8所示。