基于.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# 通信开发-串口调试助手的更多相关文章

  1. 基于.Net C# 通信开发-网络调试助手

    基于.Net C# 通信开发-网络调试助手1.概述 网络调试助手是集TCP/UDP服务端客户端一体的网络调试工具,可以帮助网络应用设计.开发.测试人员检查所开发的网络应用软硬件的数据收发状况,提高开发 ...

  2. Delphi - 采用第三方控件TMS、SPComm开发串口调试助手

    第三方控件TMS.SPComm的下载与安装 盒子上可搜索关键字进行下载,TMS是.dpk文件,SPComm.pas文件: 安装方法自行百度,不做赘述. 通过TMS控件进行界面布局 界面预览: Delp ...

  3. 基于socket开发网络调试助手

    1.什么是Socket? 在计算机领域socket被翻译为套接字,它是计算机之间进行通信的一种方式,通过socket这种约定,一台计算机可以向另外一台计算机发送数据和接收数据. 2.Socket的本质 ...

  4. 串口调试助手vc源程序及其详细编写过程

    串口调试助手vc源程序及其详细编写过程   目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...

  5. 自己编写的基于VC++6.0的串口调试软件,并贡献源程序!

    自己编写的基于VC++6.0的串口调试软件源程序! 程序下载链接: 点击打开链接

  6. Qt 编写串口调试助手

    一.成品图展示 成品图如下所示: 二.串口通讯步骤 1.在工程文件(.pro)中添加串口通信相关运行库:QT += serialport 2.在头文件中添加: #include <QSerial ...

  7. OSDA - 一个以MIT协议开源的串口调试助手

    市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...

  8. C#基于wpf编写的串口调试助手

    支持数据保存,自定义协议解码等功能 链接:https://pan.baidu.com/s/1zvhcES4QIjpDDJGzth1qOA 提取码:lp2x

  9. [转]web串口调试助手,浏览器控制串口设备

    本文转自:https://blog.csdn.net/ldevs/article/details/39664697 打开串口时查找可用串口供选择 通过javascript调用activex控制串口收发 ...

随机推荐

  1. Where和having都是条件筛选关键字,它们有什么分别?

    WHERE是在数据分组前进行条件过滤, HAVING子句是在数据分组后进行条件过滤,WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数. 需要注意说明:当同时含有where子句.gro ...

  2. Docker配置PostgreSQL数据本地持久化

    卷的原理图: 主机中的本地目录作为Docker容器内的持久存储卷装载,以便在主机和Docker容器之间共享数据.如果主机希望访问或定期备份在Docker容器内运行的DB服务器写入文件夹的数据或数据库, ...

  3. Leetcode刷题之螺旋矩阵

    矩阵之螺旋矩阵 总体思路: 注意遍历顺序 每次遍历一圈时候不要多加元素 Leetcode54螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素. ...

  4. 1108. IP 地址无效化

    给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". 示例 ...

  5. 原生js造轮子之模仿JQ的slideDown()与slideUp()

    代码如下: const slider = (function() { var Slider = {}; // the constructed function,timeManager,as such ...

  6. 【Android开发】【布局】各种TabLayout样式

    Demo

  7. 安卓xml布局中 android:paddingBottom="@dimen/activity_vertical_margin"是什么意思?

    @dimen/activity_vertical_margin 是什么意思? @dimen/activity_vertical_margin这个的意思就是在你的values文件夹下面的dimens文件 ...

  8. 进入React的世界

    一. React 是什么 1. 声明式写法 2. 组件化 3. 一次学习, 随处编写 二. 为什么要学习React 1. 大厂加持 - Facebook 2. 最流行, 使用人数最多, 最被开发者喜爱 ...

  9. js 生成 pdf 文件

    话不多说好吧, 直接上demo图: 直接上代码好吧:(要引入的两个js  链接我放最后) <!DOCTYPE html> <html> <head> <met ...

  10. Spring Boot-场景启动器

    分析上文快速入门 1.查看pom文件导入的依赖(starter的父项目) <parent> <artifactId>spring-boot-starter-parent< ...