0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C#-串口设备对接

汽车电子技术 来源:程序猿知秋 作者: 程序猿知秋 2023-02-28 09:46 次阅读

图片

基本概况

串口介绍

  • 串口 :是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
  • 串口通信(Serial Communications) :串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
    • 波特率: 这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。
    • 数据位: 这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。标准的ASCII码是0~127(7位),扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
    • 停止位: 用于表示单个包的最后几位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢
    • 奇偶校验位: 在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。
  • 串口通信的接口标准: 标准有很多,有 RS-232C、RS-232、RS-422A、RS-485 等。常用的就是 RS-232 和 RS-485。串口通信使用的大多都是 DB9 接口,如下图

图片编辑

1 载波检测(DCD) 2 接受数据(RXD) 3 发出数据(TXD) 4 数据终端准备好(DTR) 5 信号地线(SG) 6 数据准备好(DSR) 7 请求发送(RTS) 8 清除发送(CTS) 9 振铃指示(RI)

c#中的串口操作类

****System.IO.Port.SerialPort .NET Framework提供的操作串行端口的类,里面提供了一些方法、属性和和事件供开发者调用操作串口。

** 常用字段**

名称 说明
PortName 获取或设置通信端口
BaudRate 获取或设置串行波特率
DataBits 获取或设置每个字节的标准数据位长度
Parity 获取或设置奇偶校验检查协议
StopBits 获取或设置每个字节的标准停止位数

示例

// 建立串口对象
private static SerialPort serialPort;


public void init()
{
  serialPort = new SerialPort();
    //串行波特率
  serialPort.BaudRate = 115200;
    //每个字节的标准数据位长度
  serialPort.DataBits = 8;
    // 设置每个字节的标准停止位数
  serialPort.StopBits = StopBits.One;
    // 读、写 超时时间 单位毫秒
  serialPort.ReadTimeout = 500;
  serialPort.WriteTimeout = 500;
   // 串口名称
  serialPort.PortName = "COM1";
}

常用方法

名称 说明
Close 关闭端口连接,将 IsOpen 属性设置为false,并释放内部 Stream 对象
GetPortNames 获取当前计算机的串行端口名称数组
Open 打开一个新的串行端口连接
Read SerialPort输入缓冲区中读取
ReadExisting 读取 SerialPort 对象的流和输入缓冲区中所有立即可用的字节
Write 将数据写入串行端口输出缓冲区

示例

public void test1()
{
  // 判断串口是否打开
  if (serialPort==null || serialPort.IsOpen)
  {
    return;
  }
  // 打开串口
  serialPort.Open();

  // 读取串口中的内容
  serialPort.ReadExisting()


  //如果串口处于打开状态,则关闭
  if (serialPort.IsOpen)
  {
    // 关闭串口
    serialPort.Close();
  }  
}

常用事件

名称 说明
DataReceived 表示将处理SerialPort对象的数据接收事件的方法

示例

public void test2()
{
  //设备监听回调
  serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
}


// 回调方法
public void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
  try
  {
    //解析内容
    SerialPort sp = (SerialPort)msg;
    string content = sp.ReadExisting();
    Console.WriteLine("WX GZH: 程序猿知秋,"+content);
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex);
  }

}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口电路
    +关注

    关注

    8

    文章

    453

    浏览量

    56822
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10456

    浏览量

    206594
  • 器件
    +关注

    关注

    4

    文章

    274

    浏览量

    27592
收藏 人收藏

    评论

    相关推荐

    关于PLC数据采集上传,系统平台对接设备数据转发

    设备数据采集上报与系统平台对接 PLC与SQLServer,MySQL,PostgreSQL,Oracle数据库双向通讯;HTTP协议GET/POST/PUT请求上报,解析返回数据;MQTT协议
    发表于 03-26 14:15

    跟着小狂玩天猫精灵智能设备对接--导航帖

    为了方便各位看官方便看小狂玩天猫系列特开此导航贴,谢谢支持1、跟着小狂玩天猫精灵智能设备对接—前篇 https://bbs.elecfans.com/jishu_1466152_1_1.html2
    发表于 12-12 22:47

    RT-Thread Studio 应用开发示例 - 串口设备

    RT-Thread Studio 应用开发示例 - 串口设备简介在 RT-Thread 中设备的开发总体上可以分为两类:设备的驱动开发和设备
    发表于 03-29 06:59

    在STM32上如何去对接一款串口传感器

    背景说明:STM32上对接一款串口传感器,该串口采用串口如下波特率:115200停止位:1校验位:偶校验(Even)硬件流控:无数据位:8bit笔者使用STM32F103
    发表于 08-05 07:28

    STM32F103C8单片机是怎样与串口传感器对接上的

    STM32F103C8单片机是怎样与串口传感器对接上的?遇到了哪些问题?
    发表于 10-25 06:06

    基于MCU对接oneNET流程讲解

    本篇主要讲解基于 MCU 对接 oneNET 流程,基于模组对接方式请参考 Blog: 基于模组对接 oneNET 平台。基于 MCU 的方式实现 NB 设备接入,即通过移植 SDK
    发表于 11-03 09:01

    怎么实现阿里云IOT与单片机的对接

    基于MQTT通信协议 实现单片机与腾讯云IOT|阿里云IOT|中国移动ONENET的对接。在实际调试时选择STM32F103C8T6与ESP826601S的开发板,对接过程是一个比较艰难的过程。编译
    发表于 11-22 06:55

    LVGL的输入设备API对接

    LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接前言:阅读前,请确保你拥有以下条件:你已经完成“显示API”的移植。你已经实现了一个屏幕的触摸驱动 (如果你
    发表于 01-18 10:12

    感知层与stm32最小系统板如何通过串口数据对接

    感知层与stm32最小系统板如何通过串口数据对接
    发表于 01-25 06:31

    rt-link_hw软件包如何完成对新的端口类型的移植对接

    的实现方式来完成对新的端口类型的移植对接。配置说明选择使用的端口类型,默认使用 UARTUART选择使用 UART 需要配置使用的串口设备名称,此名称是串口
    发表于 07-19 11:30

    m452rg6串口与8位mcu串口如何对接才能传输数据?

    目前有一案子,利用m452rg6与8位芯片串口对接,m452串口串接470欧的电阻,用usb转串口模块与pc调试时是正常的,但与8位机串口
    发表于 06-25 06:56

    系统不同供电的485设备对接中的问题怎么解决?

    系统不同供电的485设备对接中的问题怎么解决?
    发表于 10-17 07:26

    设备对接专题

    课程说明 1课程介绍 1课程目标 1相关资料 1第1章 SDH接口的对接 21.1 业务的对接 21.1.1 业务对接 21.2 开销与
    发表于 08-03 10:37 10次下载

    传输设备PDH接口对接问题

    设备对接是任何通信工程中非常重要的一个环节,设备对接的好坏直接影响到通信质量。而我们在设备对接
    发表于 07-26 09:34 2605次阅读

    工业串口设备通讯神器:串口服务器CS64J

    串口服务器作为连接传统串口设备与网络的桥梁,串口服务器实现了设备间的无缝对接和数据互通。这意味着
    的头像 发表于 03-21 17:09 124次阅读
    工业<b class='flag-5'>串口</b><b class='flag-5'>设备</b>通讯神器:<b class='flag-5'>串口</b>服务器CS64J