基于.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控制串口收发 ...
随机推荐
- 哪些是重要的 bean 生命周期方法?你能重载它们吗?
有两个重要的 bean 生命周期方法,第一个是 setup , 它是在容器加载 bean 的时候被调用.第二个方法是 teardown 它是在容器卸载类的时候被调用. The bean 标签有两个重要 ...
- 03-三高-并行并发&服务内
三高项目-服务内并发 cap:分布式系统的起点. 一致性,可用性,分区容错性. P:分区容错性.分区,容错. 因为有网络的8大谬误: 网络是可靠的. 没有延迟 带宽无限 网络安全 拓扑结构 ...
- linux命令手册
常⻅系统服务命令 常用命令 作用 chkconfig --list 列出系统服务 service <服务名> status 查看某个服务 service <服务名> start ...
- (十)React Ant Design Pro + .Net5 WebApi:后端环境搭建-IdentityServer4(二)授权模式
一.前言 先交代一下整个Demo项目结构: 一个认证服务(端口5000)IdentityServer4.Authentication 五个授权模式(两个控制台程序,三个MVC项目端口5001)文件夹G ...
- js 关于setTimeout和Promise执行顺序问题
js 关于setTimeout和Promise执行顺序问题 异步 -- Promise和setTimeout 执行顺序 Promise 和 setTimeout 到底谁先执行 定时器的介绍 Jav ...
- 给新手的最简单electron使用教程
我花了两个月闲暇翻译完了文档,大概是目前最完整最实时的中文文档了,有需要可以去看看学学:github传送门,大多数的需求阅读文档即可解决,实际上,翻译文档正是我入门一项未知事物时的最简单常用的法子. ...
- turnjs fabricjs canvas 翻书
最近做了一个翻书效果的项目, 来总结一下实现过程和遇到的一些问题, 供自己以后快速解决问题, 希望也能帮到同样遇到此类问题的同学, 如果有更好的方法,希望你能分享给我git地址 插件: Turn.js ...
- 两个echarts地图联动高亮区域
项目要求左右两张地图能够在鼠标悬浮的时候高亮部分联动,曾尝试了connect不好使,所以自己写了这段代码.代码思路为: 鼠标移入地图时,另一侧的地图根据鼠标悬浮获取到的区域name使该区域高亮: 鼠标 ...
- 前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oPjWvw 可交互视频 此视频是可 ...
- ES6-11学习笔记--Promise
Promise是ES6异步编程解决方案之一,简化以前ajax的嵌套地狱,增加代码可读性. 基本用法: resolve,成功 reject,失败 let p = new Promise((resol ...