前言

大家好,我是阿辉。

今天这篇文章带大家学习下C#中的串口通讯。在日常的开发工作中,如果工作内容是CS方向的同学应该很容易接触到串口通讯方面的业务需求。那么也就很容易想到C#中SerialPort类,它就是专门来处理串口通讯相关的。

了解什么是串口通讯

串口通讯是指外设和计算机间通过数据信号线,地线,控制线等,按位进行传输数据的一种通讯方式。

这种通讯方式使用的数据线少,在远距离通信中可以节约成本,但其传输速度比并行通讯慢。

串口是计算机上一种非常通用的设备通讯协议。大多数计算机包含两个基于RS-232的串口。

串口也是仪器仪表设备通用的通讯协议,很多GPIB兼容的设备也带有RS-232口,同时串口通信协议也可以用于获取远程设备采集的数据。

串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时也可将接受的串行数据流转换为并行的数据字符供给CPU的器件。

一般完成这种功能的电路,我们称为串行接口电路。

串行按位(bit)发送和接收字节,尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。

这里提一句,我们笔记本的USB口,它不是串口,它是所谓的U口,我们的串口如果需要插入到USB口,那么就需要一个RS-232转U口的转换器才可以。

这里需要注意下,一般我们的硬件工程师都会在自己的硬件设备都内置这个小转换设备,很方便。

C#中的串口通讯SerialPort

从.NET Framework 2.0开始,微软就默认提供了System.IO.Ports.SerialPort类,根据SerialPort类提供的简单操作步骤,可以很容易完成串口的信息收发程序,从特定的串口中接收到数据也可以进行数据的发送。

关于SerialPort类的应用也很容易,可以根据微软官方的介绍进行使用。

  • 配置SerialPort的名称,端口号,波特率等。

  • 打开/关闭串口

  • 接收/发送数据

SerialPort mySerialPort = new SerialPort("COM2");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity=Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.Non;mySerialPort.DataReceived += new SerialDataReceivedEvenHandler(DataReceive_Method);mySerialPort.Open();mySerialPort.Close();

发送数据

using System.IO.Ports;
private static void SendSampleData()
{SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);port.Open();port.Write("Hello World");port.Write(new byte[] { 0x0A, 0xE2, 0xFF }, 0, 3);port.Close();
}
namespace SerialPortExample
{class SerialPortProgram{        private SerialPort port = new SerialPort("COM1",9600, Parity.None, 8, StopBits.One);[STAThread]static void Main(string[] args){            new SerialPortProgram();}private SerialPortProgram(){Console.WriteLine("Incoming Data:");            port.DataReceived += newSerialDataReceivedEventHandler(port_DataReceived);            port.Open();         Application.Run();}private void port_DataReceived(object sender, SerialDataReceivedEventArgs e){            Console.WriteLine(port.ReadExisting());}}

日常串口的使用多数情况是和线程进行的,一般都是在子线程中做这些耗时和重复的工作,在主线程或者界面只进行数据的展示处理即可。

在子线程的处理过程中需要特别处理串口的打开和关闭,要及时关闭串口的状态,防止出现无法捕获的异常错误。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发  谢谢。

往期推荐

C#中的委托(Update)

C#中的串口通信SerialPort相关推荐

  1. 在WEBSTART中实现串口通信(WINDOWS版)

    在WEBSTART中实现串口通信(WINDOWS版) 看到这个题目,你是不是问:这跟在JAVA中实现串口通信有什么区别?在JAVA中能做在WEBSTART中不就 一样吗? 真聪明,的确是这样的,但事实 ...

  2. STM32中的串口通信

    说起通信,我们都知道通信分为并行通信和串行通信.并行通信速率快但是占用引脚数多,串行通信速度慢但是占用引脚数很少. 今天我们主要来说串行通信 串行通信还可以分为同步通信和异步通信. 同步通信:带时钟同 ...

  3. c# wifi串口通信_在C#中实现串口通信的方法

    通常,在C#中实现串口通信,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法.可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册,不在本文讨论范围.可以访问h ...

  4. 普中单片机--串口通信(2)---通过串口助手发送数据点LED

    普中单片机–串口通信(2) 通过串口助手发送数据 点亮LED 软件部分 #include <reg52.h> #define jingzhen 12000000UL /*使用12.0M晶体 ...

  5. 普中单片机---串口通信(1)--通过按键控制发送

    普中单片机-串口通信(1)–通过按键控制发送 软件代码 #include <reg52.h>#define jingzhen 12000000UL /*使用12.0M晶体*/ #defin ...

  6. c# wifi串口通信_C#中的串口通信

    串行接口(Serial port)又称"串口",主要用于串行式逐位数据传输.常见的有一般电脑应用的RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与 ...

  7. 【Unity3D软硬件】Unity3D与串口通信 SerialPort类完全教程

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  8. C#串口通信 SerialPort类

    因为公司项目需要将USB扫码枪改为串口扫码枪,串口扫码的好处在于不需要一个输入框来接受USB扫出来的文本,能解决多个扫码枪一起扫码时的并发问题,所以需要用到多线程及串口技术. 一.串口通信简介 串行接 ...

  9. STM32中关于串口通信的printf()函数重定向问题

    在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法. 方法一.对工程属性进行配置 第1步:在main.c中包含"stdio.h ...

最新文章

  1. Ubuntu磁盘分区以及双系统启动顺序修改
  2. 大型网站技术架构:摘要与读书笔记
  3. git推送密码_保护代码完整性(六):在 Git 上使用 PGP
  4. java xmlsec_找不到net.shibboleth.tool:xmlsectool:2.0.0
  5. ApplicationContextAware接口的拓展和使用
  6. c++设计模式编程基础
  7. python 生成payload_利用Python进行Payload分离免杀
  8. vs2008 MFC访问Access 2010数据库
  9. CodeForces 2B The least round way
  10. linux下mysql,linux下mysql的装配
  11. 用WPS2000制作勾股定理教学课件(转)
  12. 计算机操作痕迹清除,如何彻底清除电脑使用痕迹
  13. 苹果手机上编辑html文件夹,苹果手机可以编辑EXCEL文件吗
  14. 传奇服务器端回满血文件,单机架设传奇服务器第八课:血过65535
  15. 集合的基本运算及文氏图
  16. IBM Tivoli NetView网管软件实战
  17. 入职百度第二周,我知道了这些
  18. 在线短视频去水印工具网站
  19. 数据挖掘知识点整理(期末复习版)
  20. 大型重工机械设备远程监控系统平台

热门文章

  1. bzoj2751[HAOI2012]容易题(easy)
  2. nginx的负载均衡集群
  3. linux jdk环境变量配置
  4. C++语言基本概念(5)
  5. Tech·Ed 2006中国 实况报道
  6. 奇迹暖暖服务器不稳定,闪耀暖暖用土豆当服务器?开服仅半小时就崩溃,无数玩家疯狂吐槽...
  7. WebRTC 音频模块单独编译 --【转载】
  8. 利用html5看雪花飘落的效果
  9. 如果你喜欢上了一个程序员小伙 献给所有程序员女友(来自ITeye博客的文章 作者:talent2012)...
  10. 为operamasks增加HTML扩展方式的组件调用