基于.Net C# 通信开发-串口调试助手
基于.Net C# 通信开发-串口调试助手
1、概述

串口调试助手,广泛应用于工控领域的数据监控、数据采集、数据分析等工作,可以帮助串口应用设计、开发、测试人员检查所开发的串口应用软硬件的数据收发状况,提高开发的速度,成为您的串口应用的开发助手。
实全串口调试助手是绿色软件,只有一个执行文件,适用于各版本Windows操作系统,基于C# .Net 4.0 框架开发。可以在一台PC上同时启动多个串口调试助手(使用不同的COM口)。
典型应用场合:通过串口调试助手与自行开发的串口程序或者串口设备进行通信联调。
支持多串口,自动监测枚举本地可用串口;自由设置串口号、波特率、校验位、数据位和停止位等(支持自定义非标准波特率);
支持ASCII/Hex两种模式的数据收发,发送和接收的数据可以UTF-8、16进制和AscII码之间任意转换;
支持间隔发送,循环发送,批处理发送,输入数据可以从外部文件导入。
串口调试开发,一般分为读取电脑连接串口信息、选择串口信息进行连接、设置相关发送接收配置、发送命令或消息,接收读取返回结果。
2、串口开发主要代码
2.1、读取电脑连接串口信息
串口调试,首先需要程序读取电脑连接串口信息。
//读取连接串口
string[] mPortNames = SerialPort.GetPortNames();
this.txtPortName.Items.Clear();
foreach (var item in mPortNames)
{
this.txtPortName.Items.Add(item);
} this.txtParity.Items.Clear();
foreach (string item in Enum.GetNames(typeof(Parity)))
{
this.txtParity.Items.Add(item);
}
this.txtParity.DropDownStyle = ComboBoxStyle.DropDownList; this.txtStopBits.Items.Clear();
foreach (string item in Enum.GetNames(typeof(StopBits)))
{
this.txtStopBits.Items.Add(item);
}
this.txtStopBits.DropDownStyle = ComboBoxStyle.DropDownList; this.txtHandshake.Items.Clear();
foreach (string item in Enum.GetNames(typeof(Handshake)))
{
this.txtHandshake.Items.Add(item);
}
this.txtHandshake.DropDownStyle = ComboBoxStyle.DropDownList;
2.2、选择串口信息进行连接
/// <summary>
/// 获取串口信息
/// </summary>
/// <param name="setting"></param>
/// <param name="fail"></param>
/// <returns></returns>
public static SerialPort GetSerialPort(SerialPortSet setting, out string fail)
{
fail = string.Empty;
try
{
_SerialPort = new SerialPort();
_SerialPort.PortName = setting.PortName;
_SerialPort.BaudRate = setting.BaudRate.ToInt32();
_SerialPort.Parity = (Parity)Enum.Parse(typeof(Parity), setting.Parity, true);
_SerialPort.DataBits = setting.DataBits.ToInt32();
_SerialPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), setting.StopBits, true);
_SerialPort.Handshake = (Handshake)Enum.Parse(typeof(Handshake), setting.Handshake, true); return _SerialPort;
}
catch (Exception ex)
{
fail = "打开串口 异常:" + ex.Message;
return null;
}
}
2.3、选择相关发送接收配置
支持UTF-8、ASCII、GB2312、16进制内容,收、发选择;支持间隔发送,循环发送,批处理发送,输入数据可以从外部文件导入。
2.4、发送命令或消息
/// <summary>
/// 发送命令或消息
/// </summary>
/// <param name="content"></param>
private void SendByte(string content)
{
try
{
if (this.ckbShowSend.Checked)
this.AppendText(content); byte[] buffer;
if (this.txtSendEncoding.Text.Length <= 0)
buffer = Encoding.Default.GetBytes(this.txtContent.Text);
else if (this.txtSendEncoding.Text == "16进制")
buffer = this.HexToByte(this.txtContent.Text);
else
buffer = Encoding.GetEncoding(this.txtSendEncoding.Text).GetBytes(this.txtContent.Text);
//向串口发送数据
this._SerialPort.Write(buffer, 0, buffer.Length);
}
catch (Exception ex)
{
WinMessageBox.Warning("发送失败:" + ex.Message);
}
}
2.5、接收读取返回结果
/// <summary>
/// 接收读取返回结果
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] buffer = new byte[this._SerialPort.ReadBufferSize];
int count = this._SerialPort.Read(buffer, 0, buffer.Length);
//string str = Encoding.Default.GetString(readBuffer).TrimEnd('\0');
if (this.txtEncoding.Text.Length <= 0)
this.AppendText(System.Text.Encoding.Default.GetString(buffer,0, count));
else if (this.txtEncoding.Text == "16进制")
this.AppendText(this.ByteToHex(buffer,0,count));
else
this.AppendText(System.Text.Encoding.GetEncoding(this.txtEncoding.Text).GetString(buffer,0,count));
}
3、结语
至此介绍完毕,本项目开源,源码地址:https://gitee.com/ShiQuan25/SerialHelper
安装包下载地址:https://gitee.com/ShiQuan25/SerialHelper/attach_files/1048876/download/ShiQuan.SerialHelper.zip
不当之处,欢迎指正!
基于.Net C# 通信开发-串口调试助手的更多相关文章
- 基于.Net C# 通信开发-网络调试助手
基于.Net C# 通信开发-网络调试助手1.概述 网络调试助手是集TCP/UDP服务端客户端一体的网络调试工具,可以帮助网络应用设计.开发.测试人员检查所开发的网络应用软硬件的数据收发状况,提高开发 ...
- Delphi - 采用第三方控件TMS、SPComm开发串口调试助手
第三方控件TMS.SPComm的下载与安装 盒子上可搜索关键字进行下载,TMS是.dpk文件,SPComm.pas文件: 安装方法自行百度,不做赘述. 通过TMS控件进行界面布局 界面预览: Delp ...
- 基于socket开发网络调试助手
1.什么是Socket? 在计算机领域socket被翻译为套接字,它是计算机之间进行通信的一种方式,通过socket这种约定,一台计算机可以向另外一台计算机发送数据和接收数据. 2.Socket的本质 ...
- 串口调试助手vc源程序及其详细编写过程
串口调试助手vc源程序及其详细编写过程 目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...
- 自己编写的基于VC++6.0的串口调试软件,并贡献源程序!
自己编写的基于VC++6.0的串口调试软件源程序! 程序下载链接: 点击打开链接
- Qt 编写串口调试助手
一.成品图展示 成品图如下所示: 二.串口通讯步骤 1.在工程文件(.pro)中添加串口通信相关运行库:QT += serialport 2.在头文件中添加: #include <QSerial ...
- OSDA - 一个以MIT协议开源的串口调试助手
市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...
- C#基于wpf编写的串口调试助手
支持数据保存,自定义协议解码等功能 链接:https://pan.baidu.com/s/1zvhcES4QIjpDDJGzth1qOA 提取码:lp2x
- [转]web串口调试助手,浏览器控制串口设备
本文转自:https://blog.csdn.net/ldevs/article/details/39664697 打开串口时查找可用串口供选择 通过javascript调用activex控制串口收发 ...
随机推荐
- springboot监听kafka(不使用spring-kafka)
一.不使用spring-kafka的原因 kafka服务端版本为0.10.0.1-Ipv20191220-hbp2.1.0,为避免版本问题导致监听失败,客户端也采用0.10.0.1版本,客户端0.10 ...
- java-設計模式-原型模式
原型模式 是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类. 問題: 如果我們要複製一個類實例: 首先, 你必须新建一个属于相同类的对象. 然后, 你必须遍历原始对象的所 ...
- java-中的代理
静态代理: 例子: 接口: public interface InterfaceBase { void proxy(); } 接口实现类: public class InterfaceBaseReal ...
- window10使用putty传输文件到Linux服务器
由于Linux和Linux可以使用scp进行传输文件,而window系统无法向Linux传输文件,当然,有xshell等等类似的工具可以进行操作:putty工具就可以实现,毕竟zip压缩包也不大,启动 ...
- 创建POJO
创建一个名为student.java的POJO. 第一步,在包里面创建一个student类,右键点击包,点击新建,再点击创建一个类. 第二步,输入类名,点击完成. 第三步,输入数据类型和主键名,再写一 ...
- Dockerize an ASP.NET Core application
原文:Dockerize an ASP.NET Core application 介绍 本示例演示了如何对ASP.NET Core应用程序进行容器化. 为什么要构建ASP.NET Core? 开源 在 ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(SQL支持和变通方案)
由于 Citus 通过扩展 PostgreSQL 提供分布式功能,因此它与 PostgreSQL 结构兼容.这意味着用户可以使用丰富且可扩展的 PostgreSQL 生态系统附带的工具和功能来处理使用 ...
- PAT B1031查验身份证
一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...
- js原生的Ajax
js原生的Ajax其实就是围绕浏览器内内置的Ajax引擎对象进行学习的,要使用js原 生的Ajax完成异步操作,有如下几个步骤: 1)创建Ajax引擎对象 2)为Ajax引擎对象绑定监听(监听服务器已 ...
- No origin bean specified和 No destination bean specified
Beanutils.copyProperties 异常一: No origin bean specifiedBeanutils.copyProperties 异常二: No destination b ...