串口调试助手设计思路与手册
- 格式:docx
- 大小:18.32 KB
- 文档页数:5
经典串口调试助手源程序及串口通信设置标题:串口调试助手之经典源程序及通信设置导言:串口调试助手是一种用于串口通信的调试工具,广泛应用于工业控制、测试等领域。
本文将介绍一种基于Windows平台的经典串口调试助手源程序及相关的串口通信设置,旨在帮助读者更好地了解该工具的使用和配置方法。
一、经典串口调试助手源程序1.开发平台:本程序采用C++ Builder 6.0开发。
2.功能概述:(1)串口设置包括设置串口波特率、数据位、校验位、停止位、流控、超时等参数。
(2)发送数据支持以字符串或Hex方式发送数据。
(3)接收数据实时显示串口接收到的数据,并支持数据格式设置。
(4)自动发送数据支持单次或循环发送,可设置发送时间间隔和发送次数。
(5)保存数据支持将接收到的数据保存为文本或二进制文件。
3.源程序结构本程序主要由以下几个模块组成:(1)Main Form:主窗体,包含图形界面显示和基本操作控件。
(2)Serial:串口类,负责串口相关操作,例如打开、关闭、设置参数、发送、接收等。
(3)SaveToFile:文件保存类,负责数据保存到文件中。
(4)Config:配置类,负责程序设置和读取。
(5)Hex:十六进制转换类,用于将字符串转换为Hex格式。
二、串口通信设置1.串口连接串口连接有两种方式:一种是通过RS232串口连接,需要将串口线插入串口,然后将串口线连接到目标设备;另一种是通过USB转串口连接,需要将USB转串口转接器插入计算机USB接口,然后将串口线连接到USB转串口转接器。
2.串口参数设置在使用串口调试助手前,必须先设置串口参数。
打开主窗体后,点击“串口设置”按钮,在弹出的窗口中设置串口的参数,包括波特率、数据位、校验位、停止位、流控和超时等参数。
其中,波特率是指通信时的数据传输速率,常用的有9600、19200、38400、57600、115200等。
数据位是指每次传输的数据位数,常用的有8位、7位、6位等。
串口调试助手使用说明为简单明了,有些不言自明的功能不作介绍。
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) 点击发送按钮。
(2016-11-21)本设计包含的函数模块有:1.打开/关闭串口和设置串口参数2.软件退出3.获取串口参数4.发送数据5.接受数据6.清空发送区7.清空接收区8.计数清零9.暂停/开启接收数据10.自动发送11.发送周期设置12.打开文件13.保存数据补充说明:1.设置串口参数里面包括了1)获取串口可用串口。
2)波特率下拉参数设置。
3)校验位下拉参数设置。
4)数据位下拉参数设置。
5)默认设置。
6)2.发送数据前先判断是否为十六进制,是否为自动发送。
是十六进制发送则把数据先转为十六进制格式并获取数据长度,再把数据转到发送缓冲区发送,否则ASCII码文本发送3.接收数据函数在串口运行时一直在判断是否有新数据,并根据不同的接收模式,加显不同格式的数据软件代码详细介绍:(74-92h)可用串口检测及下拉控件。
(96-109h)波特率下拉控件设置。
(113-121h)校验位下拉控件。
(125-131h)数据位下拉控件。
(135-141h)停止位下拉控件。
(145-155h)默认参数设置。
(159-162h)接收数据串口说明与启动。
(168-174h)关闭软件设置。
(176-180h)关闭窗口后先关闭线程再关闭进程。
(182-194h)定义串口各参数。
(197-281h)打开串口按钮回调函数,先判断是否有可用串口,没有则显示“无可用串口,无法打开”然后返回,有则继续判断当前是要打开串口还是关闭串口,若是需要打开串口则尝试设置串口参数并打开串口,打开串口失败会提示无法打开串口,打开串口成功则串口参数下拉控件变灰发送数据按钮点亮,判断自动发送控件如果被选中则打开串口后直接自动发送数据。
如果之前判断按钮回调是关闭串口,则进行关闭串口并配置相关参数。
(282-347h)CRC16查表法校验函数。
(349-357h)发送数据按钮回调及自动发送按钮回调。
(358-369h)发送数据线程配置。
(371-510h)发送数据函数,先判断是否正在发送数据,如不在发送则设置当前正在发送状态,后继续判断是写序列号模式还是串口调试模式,串口调试模式时先定义发送缓冲区和数组,再判断是否为16进制发送后进行对应进制转码,再尝试发送并刷新发送字节数。
串口调试助手3.0版使用说明书目录串口调试助手3.0版 (1)使用说明书 (1)串口调试助手3.0版简介 (1)安装串口调试助手3.0版 (2)使用频道列表 (3)使用A频道 (4)使用B频道 (5)使用C频道 (6)使用D频道 ............................................................ 错误!未定义书签。
软件使用说明书串口调试助手3.0版简介串口调试助手3.0版是WMD工作室最新研发的智能调试工具,是不折不扣的“串口助手”。
串口调试助手3.0版可以实现的功能包括发送接受16进制数、字符串、传输文件、搜索出空闲串口等,此外,还可以搜索用户自定义设置其他的项目。
为了让大家更好的使用串口调试助手3.0版将提供自动更新功能,用于免费升级软件以及修正bug.。
1软件使用说明书安装串口调试助手3.0版安装串口调试助手需要Windows2000/XP/2003/Vista操作系统中的任一种,Windows NT 4.0 下面没有测试过,不保证可运行。
串口调试助手为绿色软件,下载后只需要复制到硬盘上的指定目录中即安装完成。
因为要到网络上加查更新,如果您的计算机的安全防护软件提示,该程序需要访问网络的时候,建议选择“允许”访问。
2软件使用说明书使用列表软件安装完成后,直接双击“串口调试助手3.0”即可运行软件。
检查串口线是否连接到计算机和设备上。
如果2端都是本计算机上的串口,一定确认串口调试助手打开的是您指定的串口。
3软件使用说明书4使用16进制调试使用16进制调试,您可以使用16进制调试串口的数据,用于检验其他软件的包文。
在左侧找到16进制显示的文字,并点击该复选框,图所示。
打开串口后接收到的信息即以16进制显示,同时发送的信息也按照16进制格式解析发送。
软件使用说明书使用字符串收发如果您清除了16进制显示复选框,那么就进入ascii码传送方式。
该模式下,收到和发送的字符串将原本不变的显示与发送。
串口调试助手简易操作说明
一、软件介绍
串口调试助手是一款串口通讯软件,用它通过RS232可以实现UPS与电脑之间的通讯。
通过发送232协议里面的相应指令,可以查询、设置以及监控UPS工作情况。
二、软件操作
1、本软件无需安装,双击图标如下图标,即可打开软件。
2、打开软件后,先进行下设置。
“串口”栏根据实际情况选择所使用的端口,软件默认的是COM1。
“波特率”栏选择2400。
其他栏保持为默认状态。
3、输入指令
输入相应的指令后按一次回车键。
如输入“QGS+回车键”,即可通讯,
通讯数据如下图示。
UPS常用通讯协议
注:无论是通过软件方式对UPS进行参数设置,还是在UPS LCD显示屏进行参数设置均需要注意以下事项。
1:系列机型,参数设置内容均需要在连接电池的情况下,方可保存,否则SUC33 30-80K
设置内容当次有效,重启机器后,即恢复为原设置。
2:其他机型均可在无电池下保存设置(更改设置后,不可立即断电,需等待几秒,再断电,否则设置有可能没有保存成功)。
串口调试助手毕业设计
串口调试助手是一种用于串口通信调试的工具,通常用于调试
嵌入式设备、传感器、单片机等硬件设备。
在毕业设计中,设计一
个串口调试助手可以涉及到硬件设计和软件开发两个方面。
首先,从硬件设计方面来看,你需要考虑选择合适的微控制器
或开发板作为主控制芯片,考虑串口通信的物理接口电路设计,包
括电平转换、防护电路等。
另外,还需要考虑是否需要设计显示屏、按键、指示灯等人机交互的硬件模块。
其次,从软件开发方面来看,你需要考虑串口通信协议的实现,包括数据的发送和接收、数据的解析和显示。
同时,还需要考虑界
面设计和交互逻辑的实现,包括图形界面的设计、数据的可视化显示、命令的发送和接收等功能。
在毕业设计中,你可以从以下几个方面展开:
1. 需求分析,首先明确串口调试助手的功能需求,包括支持的
串口通信协议、数据显示方式、交互方式等。
2. 硬件设计,选择合适的硬件平台,设计串口通信模块、人机
交互模块等。
3. 软件设计,设计合理的软件架构,实现串口通信协议的解析、数据的显示和交互逻辑的实现。
4. 调试和优化,对设计的串口调试助手进行整体调试,解决可
能出现的问题,并对系统进行优化。
此外,你还可以考虑加入一些创新点,比如支持多种串口通信
协议、实现数据的保存和回放、支持远程控制等功能,以提升毕业
设计的独特性和实用性。
总的来说,在毕业设计中设计一个串口调试助手,需要综合运
用硬件设计和软件开发的知识,考虑到功能需求、性能优化以及创
新点,最终完成一个全面完整的串口调试助手设计。
如何使用串口调试助手Keil软件仿真的串口调试技巧在嵌入式系统开发中,串口调试是一项非常重要的技术。
Keil软件是一个广泛应用于嵌入式系统开发的软件平台,通过其内置的串口调试助手,我们可以方便地进行仿真的串口调试。
本文将介绍如何使用串口调试助手Keil软件仿真的串口调试技巧。
1. 了解串口基础知识在开始使用串口调试助手之前,首先需要了解一些串口的基础知识。
串口通信是一种通过串行传输数据的通信方式,常用的串口通信标准有RS232、RS485等。
了解波特率、数据位、停止位、校验位等串口通信参数的含义和选择是必要的。
2. 配置串口参数打开Keil软件后,选择对应的工程文件,并进入工程配置页面。
在这里,我们可以找到串口调试助手的配置选项。
根据实际需求,设置串口通信的参数,如波特率、数据位、停止位、校验位等。
确保与目标设备的串口参数一致,才能正常进行串口通信。
3. 编写串口发送与接收代码在代码中,我们需要编写串口发送和接收的相关代码。
通过Keil软件提供的API函数,我们可以方便地实现数据的发送和接收。
在发送数据时,需要将数据写入到相应的寄存器,以便传输到串口。
而在接收数据时,需要从寄存器中读取数据。
通过合理设计代码,可以实现稳定可靠的串口通信。
4. 仿真运行程序完成代码编写后,我们可以进行仿真运行,以验证串口调试功能的正确性。
在Keil软件中,可以选择进行单步调试、断点调试或连续运行调试。
通过监视寄存器的值变化、观察串口发送与接收的数据情况,可以帮助我们进行串口调试。
5. 使用串口调试助手测试在完成仿真运行后,我们可以使用串口调试助手进行测试。
打开串口调试助手,并选择与目标设备串口参数一致的配置。
点击打开串口,即可开始接收串口发送的数据。
通过观察串口调试助手输出的数据,可以验证串口通信的正确性。
6. 调试技巧与注意事项在使用串口调试助手Keil软件进行串口调试时,还需要注意一些调试技巧与注意事项。
首先,确保串口连接正确可靠,避免松动或接触不良导致数据传输错误。
珠海万力达电气有限公司串口通讯调试手册文件编号:编写:校核:批准:当前状态:[√] 草稿文件[ ] 正式文件[ ] 更改正式文件归口单位:研发中心完成日期:2004 年 4 月 1 日目录综述3第一章串口调试助手使用指南41、界面简介:42、具体设置指南4串口设置窗口5接收显示方式设置5发送显示方式设置6状态条7第二章串行通讯收发系统使用指南71、界面简介:72、具体设置指南8设置串口步骤8打开串口步骤8关闭串口步骤9通讯规约的编制步骤9规约收发步骤10手动收发步骤10第三章常用规约解读及测试111、CDT规约<类CDT规约、DISA)解读112、CDT规约测试142.1与主站或五防、模拟屏设备配合142.2在与其它设备配合时<例如直流屏)153、问答式规约解读173.1 MODBUS规约173.2 其他问答式规约174、问答式规约测试184.1 MODBUS规约测试184.2 WZCK-11直流屏规约测试19综述为了帮助售后服务及项目人员解决在工作中所碰到的串口通讯调试问题,特编写本手册。
本手册收集、整理并讲解了两种常用的串口调试工具的使用方法,同时对于常用的通讯规约做了提纲挈领的归纳总结,并结合实际的规约示例做了详尽的解释。
最后附以几种标准规约的原版,以供大家参考学习。
对于手册中列举的串口调试工具,大家可根据自己的习惯及喜好选用,一般来说串口调试助手适用于所有场合,但缺点是不能进行校验码的计算。
串行通讯收发系统适用于问答式规约的测试,且可选串口个数较多,但缺点是不能自动接收数据。
本手册适用于所有的售后服务、项目、质检人员以及对于串口通讯感兴趣的朋友,相信您经过不断的学习,一定可以掌握通讯协议及串口通讯的调试方法,提高自己的工作技能。
第一章串口调试助手使用指南1、界面简介:窗口具体功能串口设置窗口 设置串口的串口号、波特率、校验位、数据位、停止位,启停串口接收显示方式设置 控制接收数据窗口的显示方式、清空方式、刷新方式,保存数据报文接收数据窗口 以设定的格式显示从某串口接收到的数据报文发送显示方式设置 控制发送数据的报文格式、发送方式、发送周期、选择发送文件 发送数据窗口 输入并显示从某串口发送的数据报文 状态条显示串口的状态及从该串口接收发送的字节数2、具体设置指南串口设置窗口名称 图示设置内容串口号当前要打开的串口号波特率 当前串口的通讯波特率,范围300bps~115200bps ,需根据通讯规约设置校验位当前串口的校验方式,NONE-无校验,ODD-发送数据窗口串口设置窗口接收显示方式设置接收数据窗口发送方式设置状态条奇校验,EVEN-偶校验,需根据通讯规约设置数据位当前串口的数据位数,需根据通讯规约设置停止位当前串口的停止位数,需根据通讯规约设置启停串口打开、关闭串口按钮串口启停指示指示该串口是打开还是关闭;串口成功打开时为红色,串口关闭时为黑色接收显示方式设置名称图示设置内容清空接收区如果要停止显示单击此按钮自动清空单击选中此单选按钮,表示当接收数据窗口收到的报文超过一定数量时十六进制显示单击选中此单选按钮,表示将按照十六进制方式显示接收报文保存显示数据单击此按钮,将接收数据窗口中显示的数据报文保存到文件,存盘目录更改显示保存数据目录显示目前保存接收数据报文的存盘目发送显示方式设置名称图示清空重填如果要清空发送数据窗口的显示内容,单击此按十六进制发送单击选中此单选按钮,表示将按照十六进制方式自动发送单击选中此单选按钮,表示将按照自动发送周期自动发送周期用于自动发送报文时,标识两次报文被发送的时手动发送单击此按钮,将发送一次发送数据窗口显示的报选择发送文件单击此按钮,选择要发送的文件,默认类型为*.显示发送文件目录、文件名显示目前所要发送文件的目录和文件名,当选择发送文件单击此按钮,将所选文件的文件内容发送出去状态条名称图示设置内串口状态显示目前串口的状态;串口打开时,显示串口号、波特率、校接收字节数显示该串口已接收的报文字节总长度发送字节数显示该串口已发送的报文字节总长度计数清零单击该按钮,将接收字节累计数和发送字节累计数清零第二章串行通讯收发系统使用指南1、界面简介:2、具体设置指南菜单条工具条状态条设置串口步骤单击[串行接口]菜单—〉单击[设置]菜单—〉弹出串行通讯初始化参数设置对话框,对话框中的各设置项与串口调试助手基本相同,这里不再赘述,设置完毕后单击确认按钮即可。
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”为“串口:”和“波特率:”“数据位:”“停止位:”“校验:”。
串口调试助手使用教程首先,确保你已经正确连接了串口调试助手软件和目标设备的串口。
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;}```上述函数实现了打开串口、发送数据、接收数据和关闭串口等基本功能,可以作为串口通信的底层驱动实现。
串口调试助手使用说明和技术总结一、引言二、使用说明1.硬件准备:首先需要一对串口线,将电脑的串口与设备的串口进行连接。
确保连接正确无误。
2. 软件安装:选择一款合适的串口调试助手软件,如Tera Term、SecureCRT等,并进行安装。
3.打开串口:打开串口调试助手软件,选择正确的串口端口号,并设置波特率。
一般情况下,设备的串口通信参数可以在设备的说明书中找到。
4.进行数据收发:点击软件界面上的“打开串口”按钮后,即可开始进行数据的收发。
可以直接在软件的发送窗口中输入要发送的数据,并点击“发送”按钮,或者通过点击“读取文件”按钮,从本地文件中读取数据并发送。
同时,接收到的数据也会在软件的接收窗口中实时显示。
5.数据解析:对于不同格式的数据,可以通过软件提供的解析功能进行解析。
一般情况下,串口数据是以字节流的形式进行传输的,解析时需要将字节解析为可读的格式。
6.其他功能:串口调试助手软件一般还提供了其他功能,如数据录制、数据回放、数据比对等。
根据实际需求,可以灵活运用这些功能。
三、技术总结1.串口通信协议:串口调试助手在数据收发过程中依赖于串口通信协议。
常见的串口通信协议有RS232、RS485等。
了解和理解这些协议对于正确使用串口调试助手非常重要。
3.数据解析:串口调试助手常常需要对收到的字节流进行解析,将其转化为可读的数据。
这需要根据具体的协议和数据格式进行解析工作,例如将十六进制数据转化为ASCII码等。
4.数据录制与回放:一些串口调试助手软件提供数据录制和回放功能,方便在需要时重新进行调试或查看数据。
这对于复杂系统的调试和故障排除非常有用。
5.多串口支持:一些串口调试助手软件支持多串口同时进行数据收发和调试。
这对于同时调试多个设备通信时非常方便。
6.错误处理:在使用串口调试助手过程中,可能会遇到数据传输错误、设备无响应等问题。
正确处理这些错误非常重要,可以使用软件提供的日志记录功能或者手动检查设备连接等方式来定位和解决问题。
串口调试工具的使用1运行串口调试助手首先运行串口调试助手运行后界面图如下所示:图1-1 串口调试工具界面图2 串口调试助手的使用2.1串口调试助手基本参数的设置串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:标题栏显示区调试区图2-1串口调试助手基本参数设置图(1)串口号软件启动后将自动识别所有可用的串口,您只需要在下拉框中选择即可。
如下图2-2所示,软件自动识别出COM3和COM4。
选择我们使用的串口COM4,点击“打开串口“按钮。
如果要使用另一个串口,请先单击”关闭串口“按钮,软件将显示串口已经关闭。
图2-3口号设置图(2)波特率它这是一个衡量通信速度的参数,表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
波特率和距离成反比,高波特率常常用于放置的很近的仪器间的通信。
我们常使用的波特率一般是9600和115200,我们这里选择波特率为9600。
图2-4波特率设置图(3)数据位这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不一定是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII 码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
图2-5数据位设置图(4)停止位停止位用于表示单个包的最后一位。
典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
串口调试助手的技术报告1.软件简介串口调试助手是在Windows平台下开发的,工具是VC++6.0。
串口调试助手版支持常用的300 ~ 115200bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送数据或字符(包括中文),能发送文本文件,可以任意设定自动发送周期,并能将接收数据保存成文本文件。
是工程师调试串口的好助手工具。
2.软件特点(1) 支持XP /Vista/Win7系统;(2) 绿色软件,不需安装。
运行解压软件,将压缩包解压到指定目录即可。
卸载时只需将程序目录删除;(3) 支持常用的300 ~ 115200bps波特率;(4) 端口范围是COM1-COM4;(5) 能设置校验、数据位和停止位;(6) 能以字符或十六进制收发数据,支持中文字符的收发;(7) 支持文件数据的发送;(8) 数据发送端允许设置发送周期,自动发送数据;(9) 支持键盘输入,将键盘数据发送到串口;(10)支持自动清空(若设置了“自动清空”,则达到50行后,自动清空接收编辑框中显示的数据)接收窗口数据;(11)如果没有“自动清空”,数据行达到400后,也自动清空,因为数据过多,影响接收速度,显示是最费CPU时间的操作(12)能够保存接收到的数据,保存地址默认的是C:\COMDATA;(13)设置了“停止显示”和“继续显示”按钮,可以方便的照出要使用的信息;(14)图钉按钮功能使程序能浮在最上层。
3.软件界面图1串口调试助手V3.0界面4.软件的设计流程本软件使用的是Windows API 串口编程,其编程基本步骤如下:(1)打开串口;(2)建立串口通信事件;(3)初始化串口;(4)建立数据线程;(5)读写数据;(6)结束时关闭串口。
5.遇到的问题与相应的解决方案(1)串口打开或者关闭有明显的提示(2)界面的大小设置问题,起初只有最小化按钮,按要求加上最大化以及界面要按照一定的规则能进行缩放(3)能发送和接收汉字(4)串口接收显示的数据丢失原因:接收显示是影响程序性能的一个大问题,当接收到大量数据时,串口通信助手响应不太及时,这个可能与调用类中的使用机制有关,但显示也没能很好地处理,不过在实际的传输过程中是没有丢失数据的。
《虚拟仪器技术》课程设计报告题目:串口调试助手专业:测控技术与仪器班级: 测控0901学号:**********名:**指导教师:陈老师王老师完成日期: 2013年3月扬州大学能源与动力工程学院2013年3月目录一.设计目的.。
.。
.。
..。
..。
...。
...。
..(2)二.设计步骤。
.。
..。
..。
.。
.。
...。
.。
.。
(6)1。
基本框架的设计。
..。
.。
.。
.。
..。
...。
.。
(7)2.配置串口各个参数。
.。
...。
.。
.。
.。
..。
(8)3。
写入字符串。
..。
......。
.。
.。
..。
.。
.。
(9)4.写入格式的选择。
...。
..。
..。
.。
....。
.。
..(11)5.读取字符串。
.。
.。
..。
.。
....。
..。
.。
..。
..(12)6.读取字符串格的选择。
..。
..。
.。
..。
.。
(13)7.清空读取字符串。
...。
...。
..。
...。
.。
..(13)8。
打开串口。
..。
...。
..。
..。
.。
.。
.。
..。
.。
.。
(14)9.对界面颜色的设计.。
..。
.。
.。
.。
.。
.。
..。
(14)三.总程序图。
...。
..。
.。
.。
.。
..。
.。
..。
(15)四.调试中遇到的问题。
.。
.。
..。
..。
.。
...。
..。
(16)五.体会。
..。
.。
.。
.。
.。
.。
....。
..。
(17)第一部分课程设计指导书1.设计目的(1)掌握Labview软件编程方法(2)掌握虚器仪器实验室硬件的应用(3)培养综合应用所学知识来指导实践的能力2.设计所用仪器及器件(1) NI公司的数据采集和信号调理卡。
NI MyDQA卡,myboard辅助电路板。
(2)计算机一台.(3)各种相关的实验材料和设备。
3。
实物内容及要求(1)设计成果一份.(2)课程设计报告一份.4。
进程安排1.布置任务、查阅资料,方案设计(两天)根据设计要求,查阅参考资料,进行方案设计及可行性论证,确定设计方案,画出详细的原理图.2.上机在LabVIEW环境下按要求进行设计(三天)要求在虚拟仪器上观测到正确的波形并达到规定的技术指标。
串口调试助手通信调试原理图PCB及使用手册【简要说明】1、尺寸:长170mmX宽72mmX高18mm二、主要芯片:单片机,MAX485,MAX232三、工作电压:6V至40V,功耗小于1W四、特点:1、具有稳压电路,输入电压广,具有电源指示灯。
2、具有485通信和232通信及TTL通信。
3、具有数码管数据显示,蜂鸣器提示音4、波特率可调分别是 2400 4800 9600 192005、采用大按键,机械寿命长。
6、单片机编程,提供源代码7、可发送20组数据8、具有系统复位按键9、端子采用螺旋压接端子10、工作温度-40度至 +70度11、工作湿度 40% ~ 80%RH12、板子静态功耗小于1W13、具有续流保护14、具有电磁抗干扰能力15、板子稳定工作可靠16、板子可安装在DIN导轨上面使用说明:【标注说明】【功能描述】【原理图】【PCB图】【元件清单】【应用举例】【应用举例2】例如:将下面一组数据通过串口发送给电脑。
波特率是9600,电脑用串口助手显示出来。
数据是:A0 B2 CC FF EF D8 90 88第一步:板子供电,串口连接电脑,查看串口号。
如下图:我的电脑--属性--硬件---设备管理器---端口设备。
如下图:第三步:从发送板,按下下面一组数据,数据是:A0 B2 CC FF EF D8 90 88数据按完之后,按发送键“S2”,如果数据输入错误,可以按”S1”按键清零,重新输入。
如果要发送多遍,重复按“S2”按键。
单遍发送如下图。
【源代码程序】/*一次最多发送20组数据,大于这个数据就不再发送*/#include <STC12C5A60S2.H>#define uchar unsigned char#define uint unsigned int/**************************************************************/unsigned char T0RH = 0; //T0重载值的高字节unsigned char T0RL = 0; //T0重载值的低字节extern void UartDriver();//串口驱动函数,监测数据帧的接收,调度功能函数,需在主循环中调用extern void ConfigUART(unsigned int baud);//串口配置函数,baud-通信波特率extern void ConfigUART1(unsigned int baud1);//串口配置函数,baud-通信波特率extern void UartRxMonitor(unsigned char ms); //串口接收监控,由空闲时间判定帧结束,需在定时中断中调用,ms-定时间隔extern void SendString(char *s) ;extern void UartWrite(unsigned char *buf, unsigned char len);//串口数据写入,即串口发送函数,buf-待发送数据的指针,len-指定的发送长度extern void fengming();uchar zh[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};uchar jieshou[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; uchar jj = 0;/*****************************************************************/sbit out0 = P2^0;sbit out1 = P2^1;sbit out2 = P2^2;sbit out3 = P2^3;sbit in0 = P2^4;sbit in1 =P2^5;sbit in2 =P2^6;sbit in3 =P2^7;sbit smgk = P3^6;sbit boma1 = P1^1;sbit boma2 = P1^0;bit d1 = 1;bit d2 = 1;sbit in4 = P1^6;sbit in5 = P1^5;uchar code xianshi [] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};uchar dangqianzhuangtai[4][4] = {{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};void t0 () interrupt 1{uchar i;static uchar lie = 0;static uchar sao[2] = {1,1};static uchar saomiaobaocun [4][4] = {{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}};TH0 = 0xfc;TL0 = 0x67;UartRxMonitor(1); //串口接收监控sao[0] = (sao[0]<<1) |in4;sao[1] = (sao[1]<<1) |in5;saomiaobaocun [lie][0] = (saomiaobaocun [lie][0]<<1) | in0; saomiaobaocun [lie][1] = (saomiaobaocun [lie][1]<<1) | in1; saomiaobaocun [lie][2] = (saomiaobaocun [lie][2]<<1) | in2; saomiaobaocun [lie][3] = (saomiaobaocun [lie][3]<<1) | in3;if(sao[0] == 0x00){d1 = 0;}else if(sao[0] == 0xff){d1 = 1;}if(sao[1] == 0x00){d2 = 0;}else if(sao[1] == 0xff){d2 = 1;}for (i=0;i<4;i++){if ((saomiaobaocun [lie][i] & 0x0f) == 0x00){dangqianzhuangtai[lie][i] = 0;}else if ((saomiaobaocun [lie][i] & 0x0f) == 0x0f){dangqianzhuangtai[lie][i] = 1;}}lie++;lie = lie & 0x03;switch (lie){case 0 : out1 = 1; out2 = 1; out3 = 1; out0 = 0; break;case 1 : out0 = 1; out2 = 1; out3 = 1; out1 = 0; break;case 2 : out0 = 1; out1 = 1; out3 = 1; out2 = 0; break;case 3 : out0 = 1; out1 = 1; out2 = 1; out3 = 0; break;}}void main (){uchar i,j;bit q1 = 1;bit q2 = 1;uchar qianyicizhuangtai[4][4] = {{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};smgk = 0;TMOD = 0x01;TH0 = 0xfc;TL0 = 0x67;TR0 = 1;EA = 1;ET0 = 1;P0 = xianshi[16];// ConfigUART(9600); //配置波特率为9600while (1){UartDriver(); //调用串口驱动if((boma1 == 0)&&(boma2 != 0)){ConfigUART(2400); //配置波特率为1200}if((boma2 == 0)&&(boma1 != 0)){ConfigUART(4800); //配置波特率为4800}if((boma1 == 0)&&(boma2 == 0)){ConfigUART(9600); //配置波特率为9600}if((boma1 != 0)&&(boma2 != 0)){ConfigUART1(19200); //配置波特率为19200 }if(d1 != q1){q1 = d1;if(d1 == 0){if((jj != 0)&&(jj <= 2)){zh[0] = jieshou[0] | jieshou[1];UartWrite(zh, 1);fengming();}if((jj > 2)&&(jj <= 4)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];UartWrite(zh, 2);fengming();}if((jj > 4)&&(jj <= 6)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];UartWrite(zh, 3);fengming();}if((jj > 6)&&(jj <= 8)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];UartWrite(zh, 4);fengming();}if((jj > 8)&&(jj <= 10)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];zh[4] = jieshou[8] | jieshou[9];UartWrite(zh, 5);fengming();}if((jj > 10)&&(jj <= 12)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];zh[4] = jieshou[8] | jieshou[9];zh[5] = jieshou[10] | jieshou[11];UartWrite(zh, 6);fengming();}if((jj > 12)&&(jj <= 14)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];zh[4] = jieshou[8] | jieshou[9];zh[5] = jieshou[10] | jieshou[11];zh[6] = jieshou[12] | jieshou[13];UartWrite(zh, 7);fengming();}if((jj > 14)&&(jj <= 16)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];zh[4] = jieshou[8] | jieshou[9];zh[5] = jieshou[10] | jieshou[11];zh[6] = jieshou[12] | jieshou[13];zh[7] = jieshou[14] | jieshou[15];UartWrite(zh, 8);fengming();}if((jj > 16)&&(jj <= 18)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];zh[4] = jieshou[8] | jieshou[9];zh[5] = jieshou[10] | jieshou[11];zh[6] = jieshou[12] | jieshou[13];zh[7] = jieshou[14] | jieshou[15];zh[8] = jieshou[16] | jieshou[17];UartWrite(zh, 9);fengming();}if((jj > 18)&&(jj <= 20)){zh[0] = jieshou[0] | jieshou[1];zh[1] = jieshou[2] | jieshou[3];zh[2] = jieshou[4] | jieshou[5];zh[3] = jieshou[6] | jieshou[7];zh[4] = jieshou[8] | jieshou[9];zh[5] = jieshou[10] | jieshou[11];zh[6] = jieshou[12] | jieshou[13];zh[7] = jieshou[14] | jieshou[15];zh[8] = jieshou[16] | jieshou[17];zh[9] = jieshou[18] | jieshou[19];UartWrite(zh, 10);fengming();}}}if(d2 != q2){q2 = d2;if(d2 == 0){jj = 0;jieshou[0] = 0x00;jieshou[1] = 0x00;jieshou[2] = 0x00;jieshou[3] = 0x00;jieshou[4] = 0x00;jieshou[5] = 0x00;jieshou[6] = 0x00;jieshou[7] = 0x00;jieshou[8] = 0x00;jieshou[9] = 0x00;P0 = xianshi[16];fengming();}}for (i=0;i<4;i++){for (j=0;j<4;j++){if(dangqianzhuangtai[i][j] != qianyicizhuangtai[i][j] ){qianyicizhuangtai[i][j] = dangqianzhuangtai[i][j];if(qianyicizhuangtai[i][j] != 0){jj++;if((i*4+j) < 9){P0 = xianshi[i*4+j+1];}if((i*4+j) == 9){P0 = xianshi[0];}if((i*4+j) > 9){P0 = xianshi[i*4+j];}fengming();/******************1组**************************/if(jj == 1){//jieshou[0] = i*4+j;//jieshou[0] = jieshou[0] << 4;if((i*4+j) < 9){jieshou[0] = i*4+j+1;if((i*4+j) == 9){jieshou[0] = 0;}if((i*4+j) > 9){jieshou[0] = i*4+j;}jieshou[0] = jieshou[0] << 4;}if(jj == 2){//jieshou[1] = i*4+j;if((i*4+j) < 9){jieshou[1] = i*4+j+1;}if((i*4+j) == 9){jieshou[1] = 0;}if((i*4+j) > 9){jieshou[1] = i*4+j;}}/******************2组**************************/ if(jj == 3){//jieshou[2] = i*4+j;if((i*4+j) < 9){jieshou[2] = i*4+j+1;}if((i*4+j) == 9){jieshou[2] = 0;}if((i*4+j) > 9){jieshou[2] = i*4+j;jieshou[2] = jieshou[2] << 4;}if(jj == 4){//jieshou[3] = i*4+j;if((i*4+j) < 9){jieshou[3] = i*4+j+1;}if((i*4+j) == 9){jieshou[3] = 0;}if((i*4+j) > 9){jieshou[3] = i*4+j;}}/******************3组**************************/ if(jj == 5){//jieshou[4] = i*4+j;if((i*4+j) < 9){jieshou[4] = i*4+j+1;}if((i*4+j) == 9){jieshou[4] = 0;}if((i*4+j) > 9){jieshou[4] = i*4+j;}jieshou[4] = jieshou[4] << 4;}if(jj == 6){//jieshou[5] = i*4+j;if((i*4+j) < 9){jieshou[5] = i*4+j+1;}if((i*4+j) == 9){jieshou[5] = 0;}if((i*4+j) > 9){jieshou[5] = i*4+j;}}/******************4组**************************/ if(jj == 7){//jieshou[6] = i*4+j;if((i*4+j) < 9){jieshou[6] = i*4+j+1;}if((i*4+j) == 9){jieshou[6] = 0;}if((i*4+j) > 9){jieshou[6] = i*4+j;}jieshou[6] = jieshou[6] << 4;}if(jj == 8){//jieshou[7] = i*4+j;if((i*4+j) < 9){jieshou[7] = i*4+j+1;}if((i*4+j) == 9){jieshou[7] = 0;}if((i*4+j) > 9){jieshou[7] = i*4+j;}}/******************5组**************************/if(jj == 9){//jieshou[8] = i*4+j;if((i*4+j) < 9){jieshou[8] = i*4+j+1;}if((i*4+j) == 9){jieshou[8] = 0;}if((i*4+j) > 9){jieshou[8] = i*4+j;}jieshou[8] = jieshou[8] << 4;}if(jj == 10){//jieshou[9] = i*4+j;if((i*4+j) < 9){jieshou[9] = i*4+j+1;}if((i*4+j) == 9){jieshou[9] = 0;}if((i*4+j) > 9){jieshou[9] = i*4+j;}}/******************6组**************************/ if(jj == 11){//jieshou[10] = i*4+j;if((i*4+j) < 9){jieshou[10] = i*4+j+1;}if((i*4+j) == 9){jieshou[10] = 0;}if((i*4+j) > 9){jieshou[10] = i*4+j;}jieshou[10] = jieshou[10] << 4;}if(jj == 12){//jieshou[11] = i*4+j;if((i*4+j) < 9){jieshou[11] = i*4+j+1;}if((i*4+j) == 9){jieshou[11] = 0;}if((i*4+j) > 9){jieshou[11] = i*4+j;}}/******************7组**************************/ if(jj == 13){//jieshou[12] = i*4+j;if((i*4+j) < 9){jieshou[12] = i*4+j+1;}if((i*4+j) == 9){jieshou[12] = 0;}if((i*4+j) > 9){jieshou[12] = i*4+j;}jieshou[12] = jieshou[12] << 4;}if(jj == 14){//jieshou[13] = i*4+j;if((i*4+j) < 9){jieshou[13] = i*4+j+1;}if((i*4+j) == 9){jieshou[13] = 0;}if((i*4+j) > 9){jieshou[13] = i*4+j;}}/******************8组**************************/ if(jj == 15){//jieshou[14] = i*4+j;if((i*4+j) < 9){jieshou[14] = i*4+j+1;}if((i*4+j) == 9){jieshou[14] = 0;}if((i*4+j) > 9){jieshou[14] = i*4+j;}jieshou[14] = jieshou[14] << 4;}if(jj == 16){//jieshou[15] = i*4+j;if((i*4+j) < 9){jieshou[15] = i*4+j+1;}if((i*4+j) == 9){jieshou[15] = 0;}if((i*4+j) > 9){jieshou[15] = i*4+j;}}/******************9组**************************/ if(jj == 17){//jieshou[16] = i*4+j;if((i*4+j) < 9){jieshou[16] = i*4+j+1;}if((i*4+j) == 9){jieshou[16] = 0;}if((i*4+j) > 9){jieshou[16] = i*4+j;}jieshou[16] = jieshou[16] << 4;}if(jj == 18){//jieshou[17] = i*4+j;if((i*4+j) < 9){jieshou[17] = i*4+j+1;}if((i*4+j) == 9){jieshou[17] = 0;}if((i*4+j) > 9){jieshou[17] = i*4+j;}}/******************10组**************************/ if(jj == 19){//jieshou[18] = i*4+j;if((i*4+j) < 9){jieshou[18] = i*4+j+1;}if((i*4+j) == 9){jieshou[18] = 0;}if((i*4+j) > 9){jieshou[18] = i*4+j;}jieshou[18] = jieshou[18] << 4;}if(jj == 20){//jieshou[19] = i*4+j;if((i*4+j) < 9){jieshou[19] = i*4+j+1;}if((i*4+j) == 9){jieshou[19] = 0;}if((i*4+j) > 9){jieshou[19] = i*4+j;}}}}}}}}void UartAction(unsigned char *buf, unsigned char len){//在接收到的数据帧后添加换车换行符后发回// buf[len++] = '\r';//buf[len++] = '\n';UartWrite(buf, (len-2));}【真值表】【图片展示】。
简单串口调试助手软件设计文档目录1 设计目的 (1)1.1 基本功能 (1)1.2 开发环境 (2)2 使用说明 (2)2.1 页面介绍 (2)2.2 调试窗口的使用 (2)3 全局及运行流程 (3)3.1 主函数流程 (3)3.2 数据发送流程 (3)3.3 数据接收流程 (4)3.4 全局数据 (4)3.4.1配置数据 (4)4页面功能 (4)4.1 主页面MainDialog (4)4.1.1界面设计 (4)4.1.2类设计 (5)4.1.3构造函数 (6)4.1.4获取页面的参数配置 (6)4.1.5获取本机所有串口 (6)4.1.6根据配置设置页面 (6)4.1.7帧转换成字符串 (7)4.1.8打开端口槽函数 (7)4.1.9关闭端口槽函数 (7)4.1.10发送函数 (7)4.1.11接收过程 (7)4.1.12更新本机端口时机 (7)4.1.13接收回环到发送 (7)1 设计目的1.1 基本功能本程序简单地实现了串口通信的功能,主要有发送窗口和接收窗口组成。
点击发送按钮,即可将发送框内的的文本发送出去。
同时,若有数据接收到,则在接收窗口中存放接收到的数据,并以十六进制的方式显示出来。
该代码注释详细,并带有说明文档,适合初学者理解串口通信,并可以快速上手。
MARK-Q32000-1.2 开发环境采用Windows 系统下的Qt 5.10.1版本,串口库有使用Qt自带的串口类。
2 使用说明2.1 页面介绍运行程序后,会直接进入主页面。
选择好需要的串口号,波特率后,点击打开串口。
打开主页面如下:如果打开成功,可点击按照发送按钮完成数据的发送。
如果收到数据,则会打印收到的长度,并以16进制的方式显示在接收窗口。
MARK-Q28121-2.2 调试窗口的使用为方便编码即调试,设计中使用了调试窗口,方便控制台打印信息。
开启调试窗口的方法是:在项目代码目录的.pro项目文件中添加一行:CONFIG += console#显示控制台提示窗口,以方便调试MARK-281213 全局及运行流程3.1 主函数流程3.2 数据发送流程对话框获取到发送按钮事件后,即获取发送框内的文本,并调用串口类的写函数发送出去。
虚拟仪器课程设计题目:串口调试助手设计学院: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天)四、设计任务书应包括的主要内容目录设计题目任务分析实现过程程序前面板及流程图结束语心得体会参考文献五、考核方法考核方式由三部分组成:平时学习态度(含考勤)、设计完成情况(含方案、程序质量、界面、说明书等)及答辩情况确定。
目录【内容摘要】 (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 发展历史和由来串口的出现是在1980年前后,数据传输率是115kbps~230kbps。
串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。
串口也可以应用于两台计算机(或设备)之间的互联及数据传输。
由于串口(COM)不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑已开始取消该接口。
目前串口多用于工控和测量设备以及部分通信设备中。
2 串口通信划分种类串口通信的两种最基本的方式:同步串行通信方式和异步串行通信方式。
同步串行是指SPI(Serial Peripheral interface)的缩写,顾名思义就是串行外围设备接口。
SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息,TRM450是SPI接口。
异步串行是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。
UART是一个并行输入成为串行输出的芯片,通常集成在主板上。
UART包含TTL电平的串口和RS232电平的串口。
TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平,MDS2710、MDS SD4、EL805等是RS232接口,EL806有TTL接口。
串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。
RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。
3 各类串口协议简介3.1 各类串口的比较从其发展历史、各自特点来介绍各种协议,RS232和RS485的区别和接法。
首先是发展历史。
最开始出现的串口通信协议是RS232,1962年发布的。
由于其传输速度、单向传递、传输距离短等多方面的制约,因此使用受到限制。
(2016-11-21)本设计包含的函数模块有:1.打开/关闭串口和设置串口参数2.软件退出3.获取串口参数4.发送数据5.接受数据6.清空发送区7.清空接收区8.计数清零9.暂停/开启接收数据10.自动发送11.发送周期设置12.打开文件13.保存数据补充说明:1.设置串口参数里面包括了1)获取串口可用串口。
2)波特率下拉参数设置。
3)校验位下拉参数设置。
4)数据位下拉参数设置。
5)默认设置。
6)2.发送数据前先判断是否为十六进制,是否为自动发送。
是十六进制发送则把数据先转为十六进制格式并获取数据长度,再把数据转到发送缓冲区发送,否则ASCII码文本发送3.接收数据函数在串口运行时一直在判断是否有新数据,并根据不同的接收模式,加显不同格式的数据软件代码详细介绍:(74-92h)可用串口检测及下拉控件。
(96-109h)波特率下拉控件设置。
(113-121h)校验位下拉控件。
(125-131h)数据位下拉控件。
(135-141h)停止位下拉控件。
(145-155h)默认参数设置。
(159-162h)接收数据串口说明与启动。
(168-174h)关闭软件设置。
(176-180h)关闭窗口后先关闭线程再关闭进程。
(182-194h)定义串口各参数。
(197-281h)打开串口按钮回调函数,先判断是否有可用串口,没有则显示“无可用串口,无法打开”然后返回,有则继续判断当前是要打开串口还是关闭串口,若是需要打开串口则尝试设置串口参数并打开串口,打开串口失败会提示无法打开串口,打开串口成功则串口参数下拉控件变灰发送数据按钮点亮,判断自动发送控件如果被选中则打开串口后直接自动发送数据。
如果之前判断按钮回调是关闭串口,则进行关闭串口并配置相关参数。
(282-347h)CRC16查表法校验函数。
(349-357h)发送数据按钮回调及自动发送按钮回调。
(358-369h)发送数据线程配置。
(371-510h)发送数据函数,先判断是否正在发送数据,如不在发送则设置当前正在发送状态,后继续判断是写序列号模式还是串口调试模式,串口调试模式时先定义发送缓冲区和数组,再判断是否为16进制发送后进行对应进制转码,再尝试发送并刷新发送字节数。
发送序列号模式同理。
(590-623h)接收数据函数。
(625-656h)将接收到的数据加显到窗口里。
(710-714h)主线程外激活线程方法。
(715-742h)成功关闭串口或串口丢失后设置。
(745-772h)刷新可用串口。
(775-790h)清空发送区回调,清空接收区回调,计数清零回调。
(792-809h)暂停与开始接收数据回调。
(813-825h)自动发送控件回调。
(827-842h)发送周期设置。
(1009-1045h)发送序列号按钮回调,先将窗口中的序列号转换为ASCLL码,再判断串口是否打开,序列号是否为19位,再调用添加CRC校验码,最后调用发送数据函数。
(2016-11-22)新增写入19位序列号功能//*****************************////*********发送序列号**********////*****************************//private void Write_NUM(object sender, RoutedEventArgs e){byte[] writeBuffer = null;SendSet.writeSN = writeNUM.Text;//发送数据线程传递参数的结构体--发送的数据string writedate = SendSet.writeSN;//复制发送数据,以免发送过程中数据被手动改变writeBuffer = System.Text.Encoding.ASCII.GetBytes(writedate);//转码if (ComPortIsOpen == true)//串口是否打开{if (writeBuffer.Length == 19)//序列号是否为19位{writeBuffer1 = CRC16(writeBuffer, writeBuffer.Length);//CRC校验writemodo = true;//改当前为写序列号模式Send();//调用发送方法}else{MessageBox.Show("请输入19位序列号!!!");}}else{MessageBox.Show("请打开串口!!!");}(2016-11-23)新增CRC校验函数/* CRC校验函数*/public byte[] CRC16(byte[] pucFrame, int arrayLength)//入参数据组,数据长度{byte ucCRCHi = 0xFF;byte ucCRCLo = 0xFF;byte iIndex;byte i = 0;while (arrayLength-- > 0){iIndex = (System.Byte)(ucCRCLo ^ pucFrame[i++]);ucCRCLo = (System.Byte)(ucCRCHi ^ aucCRCHi[iIndex]);ucCRCHi = aucCRCLo[iIndex];}byte[] Returndata = { 0x55, 0xaa, pucFrame[0], pucFrame[1], pucFrame[2], pucFrame[3], pucFrame[4], pucFrame[5], pucFrame[6], pucFrame[7], pucFrame[8], pucFrame[9], pucFrame[10], pucFrame[11], pucFrame[12], pucFrame[13], pucFrame[14], pucFrame[14], pucFrame[16], pucFrame[17], pucFrame[18], ucCRCLo, ucCRCHi };//整合头码,数据,CRCreturn Returndata;//返回最终发送代码}static byte[] aucCRCHi = {0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40};static byte[] aucCRCLo = {0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9,0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D,0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38,0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF,0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1,0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA,0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97,0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E,0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89,0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83,0x41, 0x81, 0x80, 0x40};。