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 ...................................................................................................................................................... 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
串口调试小助手怎么用?串口调试小助手使用以及常见问题解答
串⼝调试⼩助⼿怎么⽤?串⼝调试⼩助⼿使⽤以及常见问题解答串⼝调试⼩助⼿1.3是⼀款专门⽤于修改串⼝数据的调试⼩⼯具,⽀持修改串⼝波特率、校验位、数据位和串⼝停⽌位、设置接受区和发送区等功能。
其中软件⾃带的⾃定义波特率功能能够将列表框由只读变为可写,直接输⼊你想要的波特率,⽆需⼿动设定,并且当再选择其他内定的波特率时,列表框会恢复为只读的状态。
除此之外,软件内部接受⽂件采取2进制的保存⽅式,这使得该软件存储⽂件的速度远超于同类软件。
值得⼀提的是,该软件还⽀持编辑区快捷键的输出,能让串⼝编辑像Word⼀样简单⾃如。
串⼝调试⼩助⼿ v1.3 绿⾊免费版类型:调试⼯具⼤⼩:191KB语⾔:简体中⽂时间:2020-07-01查看详情使⽤教程1、连接:将ch340连接到电脑的USB接⼝上,这是买的⼀个ch340模块,⽹上⼗⼏块都可以得到。
2、检查:找到电脑的”设备管理器“:打开开始菜单,找到“计算机”;3、检查:找到电脑的”设备管理器“:单击右键在下拉菜单中选中“设备管理器”。
4、检查:找到电脑的”设备管理器“ 在电脑的“设备管理器”中查看是否有相应的硬件连接。
如果没有我们往往要下载ch340的硬件驱动,可以百度搜索⼀下,有很多的这样的驱动,任意下载⼀个安装后,在连接上就可以了。
如果正确连接应该有⼀下的结果。
软件快捷键ALT+A 发送所有内容'ALT+S 发送光标所在⾏的数据'ALT+D 发送光标所在⾏的数据,并发送回车换⾏ALT+C 清空发送区常见问题⼀、串⼝调试⼩助⼿怎样更换数据的路径?1、打开串⼝调试助⼿的软件界⾯2、在左边编辑栏中找到更换路径3、点击选择⾃⼰的预先设想的路径⼆、如何使⽤串⼝调试助⼿ComTone调试串⼝1、串⼝打开后,可随时修改通讯参数,只需要按⼀下应⽤2、设置“输⼊HEX”,则⽤户输⼊数据看作16进制字节,不区分⼤⼩写,接收的会显⽰为16进制HEX格式;如果设置“输⼊ASC“则⽤户输⼊数据看作ASCII字符,接收的也会显⽰为ASCII字符;3、选中“回车发送”,输⼊区内按回车相当于按发送按钮,如想输⼊多⾏,可⽤Ctrl+回车;不选中,则输⼊区内可⽤回车分⾏4、设”CRC校验“,加⼊了16位CRC校码放到每次发送的字节数的最后两位5、⽤户输⼊(从串⼝输出)的数据显⽰为绿⾊,从串⼝输⼊的数据显⽰为蓝⾊6、如果显⽰框中的数据太多了,想清除的话,可以点”清空显⽰“来清屏”7、如果需要保存当前配置,以便后⾯接着使⽤同样的配置,可以点”保存参数“,这样以且打开就可以使⽤默认的配置项了三、如何发送多条字符串1、打开串⼝调试助⼿⼯具2、然后配置串⼝号、波特率、数据位、停⽌位等串⼝信息3、配置好后就可以打开串⼝了4、然后点“扩展”功能,通过这个来设置要发送的多条字符串数据。
串口调试助手3_用户手册
串口调试助手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码传送方式。
该模式下,收到和发送的字符串将原本不变的显示与发送。
串口通信调试助手设计
串口通信调试助手设计学生:(宋体五号居中)指导教师:(宋体五号居中)(楷体五号居中)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年发布的。
由于其传输速度、单向传递、传输距离短等多方面的制约,因此使用受到限制。
串口调试助手监控设置及使用说明
串口调试助手简易操作说明
一、软件介绍
串口调试助手是一款串口通讯软件,用它通过RS232可以实现UPS与电脑之间的通讯。
通过发送232协议里面的相应指令,可以查询、设置以及监控UPS工作情况。
二、软件操作
1、本软件无需安装,双击图标如下图标,即可打开软件。
2、打开软件后,先进行下设置。
“串口”栏根据实际情况选择所使用的端口,软件默认的是COM1。
“波特率”栏选择2400。
其他栏保持为默认状态。
3、输入指令
输入相应的指令后按一次回车键。
如输入“QGS+回车键”,即可通讯,
通讯数据如下图示。
UPS常用通讯协议
注:无论是通过软件方式对UPS进行参数设置,还是在UPS LCD显示屏进行参数设置均需要注意以下事项。
1:系列机型,参数设置内容均需要在连接电池的情况下,方可保存,否则SUC33 30-80K
设置内容当次有效,重启机器后,即恢复为原设置。
2:其他机型均可在无电池下保存设置(更改设置后,不可立即断电,需等待几秒,再断电,否则设置有可能没有保存成功)。
comassistant串口调试助手使用说明
单片机多功能调试助手简介1简介图1单片机多功能调试助手单片机多功能调试助手一款集串口/USB/网络调试、进制转换、字模与数码管字型码制作、常用校验值计算、UNICODE码转换、位图输出C文件等众多功能于一身的综合型调试软件,最值得庆幸的是该软件会一直保持更新,并支持在线升级功能,这样大家手头上的单片机多功能调试助手总是最新的!单片机多功能调试助手与其他调试软件有什么优势:1)一直保持为单文件状态,不会因为需要保存配置信息而创建其他其他文件,所以该软件非常容易携带。
2)一直体贴着开发者,所有重要的配置在关闭该软件时将会得到保存,重启软件后会重新导入以前的配置信息,免去重复选择或填入数据的操作。
3)集成了串口/USB/网络调试功能,并在串口/USB/网络调试的过程中,该软件提供了监视和多项发送功能。
通过使用监视端口的功能就可以清晰地分辨出发送与接收的数据的顺序;通过使用多项发送功能就可以省去重复删除或填写待发送数据的步骤。
4)在线升级功能是该软件的最得意之处,理所当然地也是开发者最倍受关注的功能。
索取方式:发邮件到wenziqi@或wenziqi@。
2软件预览2.1串口调试图2-1-1串口调试主界面2.1.1串口监视图2-1-2串口监视器点击串口监视器界面的保存记录将会在“单片机多功能调试助手”的根目录生成“串口监视器.txt文件”,如图2-1-3。
图2-1-3串口监视器记录2.1.2多项发送图2-1-4串口多项发送界面2.2USB调试2-2-1USB调试界面2-2-2USB监视器2-2-3USB监视记录2.3网络调试图2-3-1网络调试界面2.3.1TCP监视图2-3-2TCP监视器界面图2-3-3TCP监视记录2.3.2UDP监视图2-3-5UDP监视器图2-3-6UDP监视记录2.4服务器调试图2-4-1服务器界面2.5小工具2-5-18051单片机波特率计算界面2.68051单片机波特率计算2-6-18051单片机波特率计算界面2.7ATMEGA16单片机波特率计算2-7-1ATMEGA16单片机波特率计算界面2.7校验值计算2-7-1校验值计算界面2.8UNICODE2-8-1UNICODE转换界面2.9BMP转C文件图2-9-1BMP2Hex界面图2-9-2BMP转C文件。
c# winform 串口调试助手
c# winform 串口调试助手已调试通过,可以收发数据using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO.Ports;namespace CGF串?口ú助ú手?{publicpartialclass CgfForm1 : Form{public CgfForm1(){InitializeComponent();COMNUM.SelectedIndex = 2;BaudRate.SelectedIndex = 3;DataBit.SelectedIndex = 3;StopBit.SelectedIndex = 1;CheckBit.SelectedIndex = 0;CharDisp.Checked = true;SendChar.Checked = true;CloseComm.Enabled = false;DataSend.Enabled = false;}privatevoid label7_Click(object sender, EventArgs e){}privatevoid OpenComm_Click(object sender, EventArgs e){serialPort1.Close();serialPort1.PortName = COMNUM.Text;serialPort1.BaudRate = Convert.ToInt32(BaudRate.Text);serialPort1.DataBits = Convert.ToInt32(DataBit.Text);int SPnum = 4;SPnum = StopBit.SelectedIndex;switch (SPnum){case 0: serialPort1.StopBits = StopBits.None; break;case 1: serialPort1.StopBits = StopBits.One; break;case 2: serialPort1.StopBits = StopBits.OnePointFive; break;case 3: serialPort1.StopBits = StopBits.Two; break;default: break;}SPnum = CheckBit.SelectedIndex;switch (SPnum){case 0: serialPort1.Parity = Parity.None; break;case 1: serialPort1.Parity = Parity.Odd; break;case 2: serialPort1.Parity = Parity.Even; break;default: break;}/***************异皑?常£处鋦理え?!?****************/try{serialPort1.Open();}catch (Exception ex){MessageBox.Show("错洙?误ï:阰" + ex.Message);}/*****************************************/if (serialPort1.IsOpen){CloseComm.Enabled = true;DataSend.Enabled = true;OpenComm.Enabled = false;COMNUM.Enabled = false;BaudRate.Enabled = false;DataBit.Enabled = false;StopBit.Enabled = false;CheckBit.Enabled = false;}}privatevoid CloseComm_Click(object sender, EventArgs e){try{serialPort1.Close();CloseComm.Enabled = false;DataSend.Enabled = false;OpenComm.Enabled = true;COMNUM.Enabled = true;BaudRate.Enabled = true;DataBit.Enabled = true;StopBit.Enabled = true;CheckBit.Enabled = true;}catch (Exception ex){MessageBox.Show("错洙?误ï:阰" + ex.Message);CloseComm.Enabled = true;DataSend.Enabled = true;OpenComm.Enabled = false;COMNUM.Enabled = false;BaudRate.Enabled = false;DataBit.Enabled = false;StopBit.Enabled = false;CheckBit.Enabled = false;}}privatevoid DataSend_Click(object sender, EventArgs e){string InputString = SendBox.Text;/**********发ぁ?送íbyte[]实害?例 *********///byte[] SendBytes = new byte[]{0xff,0xe0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60}; //int DatasLength = SendBytes.Length;//serialPort1.Write(SendBytes, 0, DatasLength);/*******************************/if (SendChar.Checked == true) //以?字?符?形?式?发ぁ?送í,?直±接ï发ぁ?送í字?符?串?{labelTiShi.Text = "字?符?串?:阰" + InputString;try{char[] SendChars = InputString.ToCharArray();int CharsLength = SendChars.Length;serialPort1.Encoding = System.Text.Encoding.GetEncoding("GB2312"); //解a决?中D午?乱î码?问ê题琣,?国ú标括?312编括?码?格?式?serialPort1.Write(SendChars, 0, CharsLength);}catch (Exception ex){MessageBox.Show("错洙?误ï:阰" + ex.Message);}}else{if(SendHEX.Checked == true) //以?HEX形?式?发ぁ?送í,?输?入?范?围§:阰0~255,?即′0~FF。
c# winform 串口调试助手
c# winform 串口调试助手已调试通过,可以收发数据using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO.Ports;namespace CGF串?口ú助ú手?{publicpartialclass CgfForm1 : Form{public CgfForm1(){InitializeComponent();COMNUM.SelectedIndex = 2;BaudRate.SelectedIndex = 3;DataBit.SelectedIndex = 3;StopBit.SelectedIndex = 1;CheckBit.SelectedIndex = 0;CharDisp.Checked = true;SendChar.Checked = true;CloseComm.Enabled = false;DataSend.Enabled = false;}privatevoid label7_Click(object sender, EventArgs e){}privatevoid OpenComm_Click(object sender, EventArgs e){serialPort1.Close();serialPort1.PortName = COMNUM.Text;serialPort1.BaudRate = Convert.ToInt32(BaudRate.Text);serialPort1.DataBits = Convert.ToInt32(DataBit.Text);int SPnum = 4;SPnum = StopBit.SelectedIndex;switch (SPnum){case 0: serialPort1.StopBits = StopBits.None; break;case 1: serialPort1.StopBits = StopBits.One; break;case 2: serialPort1.StopBits = StopBits.OnePointFive; break;case 3: serialPort1.StopBits = StopBits.Two; break;default: break;}SPnum = CheckBit.SelectedIndex;switch (SPnum){case 0: serialPort1.Parity = Parity.None; break;case 1: serialPort1.Parity = Parity.Odd; break;case 2: serialPort1.Parity = Parity.Even; break;default: break;}/***************异皑?常£处鋦理え?!?****************/try{serialPort1.Open();}catch (Exception ex){MessageBox.Show("错洙?误ï:阰" + ex.Message);}/*****************************************/if (serialPort1.IsOpen){CloseComm.Enabled = true;DataSend.Enabled = true;OpenComm.Enabled = false;COMNUM.Enabled = false;BaudRate.Enabled = false;DataBit.Enabled = false;StopBit.Enabled = false;CheckBit.Enabled = false;}}privatevoid CloseComm_Click(object sender, EventArgs e){try{serialPort1.Close();CloseComm.Enabled = false;DataSend.Enabled = false;OpenComm.Enabled = true;COMNUM.Enabled = true;BaudRate.Enabled = true;DataBit.Enabled = true;StopBit.Enabled = true;CheckBit.Enabled = true;}catch (Exception ex){MessageBox.Show("错洙?误ï:阰" + ex.Message);CloseComm.Enabled = true;DataSend.Enabled = true;OpenComm.Enabled = false;COMNUM.Enabled = false;BaudRate.Enabled = false;DataBit.Enabled = false;StopBit.Enabled = false;CheckBit.Enabled = false;}}privatevoid DataSend_Click(object sender, EventArgs e){string InputString = SendBox.Text;/**********发ぁ?送íbyte[]实害?例 *********///byte[] SendBytes = new byte[]{0xff,0xe0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60}; //int DatasLength = SendBytes.Length;//serialPort1.Write(SendBytes, 0, DatasLength);/*******************************/if (SendChar.Checked == true) //以?字?符?形?式?发ぁ?送í,?直±接ï发ぁ?送í字?符?串?{labelTiShi.Text = "字?符?串?:阰" + InputString;try{char[] SendChars = InputString.ToCharArray();int CharsLength = SendChars.Length;serialPort1.Encoding = System.Text.Encoding.GetEncoding("GB2312"); //解a决?中D午?乱î码?问ê题琣,?国ú标括?312编括?码?格?式?serialPort1.Write(SendChars, 0, CharsLength);}catch (Exception ex){MessageBox.Show("错洙?误ï:阰" + ex.Message);}}else{if(SendHEX.Checked == true) //以?HEX形?式?发ぁ?送í,?输?入?范?围§:阰0~255,?即′0~FF。
c上位机串口通信助手源代码详解
c上位机串口通信助手源代码实例详解一、功能1软件打开时,自动检测有效COM端口2 软件打开时,自动复原到上次关闭时的状态3 不必关闭串口,即可直接进行更改初始化设置内容串口号、波特率、数据位、停止位、校验位,可按更改后的信息自动将串口重新打开4 可统计接收字节和发送字节的个数5 接收数据可按16进制数据和非16进制数据进行整体转换6 可将接收到数据进行保存7 可设置自动发送,发送时间可进行实时更改8可按字符串、16进制字节、文件方式进行发送,字符串和16进制字节可分别进行存储,内容互不干扰9 按16进制发送时,可自动校验格式,不会输错10 可清空发送或接收区域的数据二、使用工具Visual Studio2015三、程序详解1 界面创建图1用winform创建如图1所示界面,控件名字分别为:端口号:cbxCOMPort 波特率:cbxBaudRate数据位:cbxDataBits 停止位:cbxStopBits校验位:label5 打开串口按钮:btnOpenCom发送byte:tbSendCount 接收byte:tbReceivedCount清空计数按钮:btnClearCount 按16进制显示:cb16Display接收区清空内容按钮:btnClearReceived 保存数据按钮:btnSaveFile接收数据框:tbReceivedData 发送数据框:tbSendData自动发送:cbAutomaticSend 间隔时间:tbSpaceTime按16进制发送:cb16Send 发送区清空内容按钮:btnClearSend读入文件按钮:btnReadFile 发送按钮:btnSend2 创建一个方法类按Ctrl+shift+A快捷键创建一个类,名字叫Methods,代码为:using System;using ;using ;using ;using串口助手sdd{class Methods{oString;if= ;else= ;oString; }else{tbSendDataStr;= + .ToString;}}catch Exception ex{return;}}闭;"串口无效或已被占用", "错误提示";return;}DisplayPortState PortState.打开;}else{DisplayPortState PortState.关闭;}}public Form1{InitializeComponent;}oString;else= 3;= ;endregionregion列出停止位"1";"";"2";if"cbxStopBits"= "cbxStopBits".ToString;else= 0;= ;endregionregion列出数据位"8";"7";"6";"5";if"cbxDataBits"= "cbxDataBits".ToString;else= 0;= ;endregionregion列出奇偶校验位"无";"奇校验";"偶校验";if"cbxParity"= "cbxParity".ToString;else= 0;= ;endregionregion COM口重新加载清除当前串口号中的所有串口名称if"cbxCOMPort" && "cbxCOMPort".ToString = "cbxCOMPort".ToString;else= 0;= ;endregionregion初始化计数器= "0";= true;= "0";= true;endregionregion初始化当前时间= endregionregion初始化串口状态= ;if isSetProperty开;}catch Exception{oString;else= "1000";endregionregion初始化按16进制显示状态if"cb16Display" && ht"cb16Display".ToString == "True" = true;else= false;endregionregion初始化按16进制发送状态if"cb16Send" && ht"cb16Send".ToString == "True" = true;else= false;endregionregion初始化发送区文本if"tbSendData16" && "tbSendDataStr"{tbSendData16 = ht"tbSendData16".ToString;tbSendDataStr = ht"tbSendDataStr".ToString;if= ht"tbSendData16".ToString;else= ht"tbSendDataStr".ToString;}endregion;}开;}catch Exception{闭;}catch Exception{"关闭串口时发生错误", "错误提示"; }}}|.";oString;}}}|.";if =={string fName = ;using FileStream fs = fName, {, 0, ;}}}}}需要源代码或有疑问的c爱好者们,欢迎加入c技术交流群,附加信息为”我以下载此文档”,进群后找群主索要源代码或进行技术交流;。
串口调试助手VC源程序及详细编程过程 - 学习资料网
6.打开串口和设置串口参数 你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理 函数中打开串口。现在我们在主对话框的CSCommTestDlg::OnInitDialog()打开串口,加入如下代码: // TODO: Add extra initialization here if(m_ctrlComm.GetPortOpen()) m_ctrlComm.SetPortOpen(FALSE); m_ctrlComm.SetCommPort(1); //选择com1 if( !m_ctrlComm.GetPortOpen()) m_ctrlComm.SetPortOpen(TRUE);//打开串口 else AfxMessageBox("cannot open serial port"); m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,无校验,8个数据位,1个停止位 m_ctrlComm.SetInputMode(1); // 以二进制方式检取数据 m_ctrlComm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_ctrlComm.SetInputLen(0); //设置当前接收区数据长度为0 m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据
您当前的位置:学习资料网 -> 开发学院 -> 软件开发 -> VC++ -> 调试 ->开发学院内容
串口调试助手VC源程序及详细编程过程
作者:佚名 来源:roaringwind 发布时间:2006-7-13 下午 10:53:08
串口调试助手源码
串口调试助手程序框架(一)【截图】【源码】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>。
