设计串口助手上位机程序

目录

项目任务

任务准备

一、串口通信简介

二、C# 串口( SerialPort )类

1. 串口(SerialPort)类概述

2. 串口(SerialPort)组件的常用属性

3. 串口(SerialPort)组件的常用方法

4. 串口(SerialPort)组件的常用事件

三、C# 串口( SerialPort )类的构造函数

四、C# 串口(SerialPort)类应用举例

1. 串口相关参数配置

2. 串口发送信息

3. 串口接收信息

4. 小结

五、状态栏(StatusStrip)控件

任务实施

一、上位机模板界面的布局与设计

二、扫描并添加串行端口号

三、模板程序打开和关闭串行端口

四、模板程序切换串口与定时检测串口异常

五、模板程序接收信息

总结


项目任务

功能要求:

1.通过下拉列表框切换串口端口号

2.通过按钮开关打开和关闭串口

3.可以设置波特率

4.支持中文信息收发,且具有保存信息功能

任务准备


一、串口通信简介

     波特率是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送 960 个字符,而每个字符格式包含 10 位(1个起始位,1个停止位,8个数据位),这时的波特率为 960Bd ,比特率为 10 × 960 = 9600 (bps)。

    在串口通信中,数据帧是通信中最基本的数据单元,通常由起始位、数据位、校验位和停止位组成。

     数据位: 数据位是衡量通信中实际数据位的参数,用于传输实际的数据内容,通常为 5、6、7 或 8 个二进制位(bit 位)。其中,由于 ASCII 码位宽为 8bit ,一般情况下使用 8 位数据位,能够表示 0­255 之间的所有数字、字母等字符,并且数据按照 LSB (低比特先传)的方式发送。

     校验位:用于检验数据是否有误,通常有奇偶校验和 CRC 校验两种方式。奇偶校验就是在数据位的结尾添加一个奇偶校验位(1 or 0)使得整个帧的 1 数 (或 0 数) 的数量为奇数或偶数, CRC 校验则是在数据后面添加一段检验码校验数据的正确性。另外,校验位根据可配置分为五种模式,如下图1所示。                                                                  

 图1

  停止位:一个或者多个逻辑 1,表示一次数据传输的结束。

总结:一个完整的数据帧通常由起始位、数据位、校验位和停止位四部分构成,具体的数据帧格式可以根据具体的通信标准、协议及数据通信类型来决定,通常是在信息传输的过程中确定格式并发出的。

二、C# 串口( SerialPort )类

1. 串口(SerialPort)类概述

  C# 提供了 SerialPort 类用于实现串口控制,此类位于 System.IO.Ports 命名空间下,用于控制串行端口文件资源。SerialPort 类提供同步 I/O 和事件驱动的 I/O 、对管脚和中断状态的访问以及对串行驱动程序的访问。其中详细成员介绍参看 MSDN 文档。

2. 串口(SerialPort)组件的常用属性

串口(SerialPort)组件的常用属性如图2所示。

 图2

3. 串口(SerialPort)组件的常用方法

串口(SerialPort)组件的常用方法如图3所示。

图3

4. 串口(SerialPort)组件的常用事件

DataReceived指示已通过由 SerialPort 对象表示的端口接收了数据
ErrorReceived指示由 SerialPort 对象表示的端口上发生了错误

三、C# 串口( SerialPort )类的构造函数

串口(SerialPort)类的构造函数,其功能是初始化 SerialPort 类的新实例,详情见图4所示。

图4

四、C# 串口(SerialPort)类应用举例

1. 串口相关参数配置

  在 SerialPort 类应用中,需要对串口相关参数进行配置,例如 SerialPort 的名称,端口号,波特率等,其代码(片段)如代码所示。

 以指定端口 COM3 实例化 mySerialPort 对象, 设置波特率为:9600, 设置奇偶检验位为:无
, 设置停止位为:1位,设置数据位为:8位,设置串口数据传输握手协议:无。

// 构造参数实例化对象,指定串口名
// 以指定端口 COM3 实例化 mySerialPort 对象
SerialPort mySerialPort = new SerialPort("COM3");
mySerialPort.BaudRate = 9600;// 设置波特率为:9600
mySerialPort.Parity=Parity.None;// 设置奇偶检验位为:无
mySerialPort.StopBits = StopBits.One;// 设置停止位为:1位
mySerialPort.DataBits = 8;// 设置数据位为:8位
mySerialPort.Open(); // 打开串口
// DataReceived是串口类的一个事件,通过+=运算符订阅事件,如果串口接收到数据就触发事件,调用DataReceive Method事件处理方法
mySerialPort.DataReceived +&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HWQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值