C#基础温习(5):C#串口编程

本文用来简单介绍一下C#串口编程的知识,主要以实例为内容。 凡是串口设备和计算机交互的时候都用到串口,在C#中我们如何来操作串口呢?

大话串口工作原理

实际串口是用来和外部设备进行交换数据的,我抽象出下面一个图形,来简单解释一下串口的原理。 模拟图 上图表示一个COM口,可以往外传输数据流,也可以往里传输数据流,我们如果想获得传入的数据流只需要监听往计算机的数据流即可。

虚拟串口软件

当我们没有设备时我们可以用虚拟串口软件来模拟串口操作。下面我来介绍一款软件 VSPM 虚拟串口软件。大家可以去天空软件站下载,地址请点击我。 下载下来安装成功后如下图所示: vsdm   然后你就点击添加端口,我上图中的COM2和COM3就是VSDM添加的,这个时候你把COM2和Com3看做是一个真实的串口,然后用两个软件连接,就相当于一个串口了,我用一个串口测试器和我们自己编写的软件进行测试: 如下图所示,我们的串口测试器已经连接到COM3上了, 串口测试器  

监听串口程序

直接上代码,在控制台程序中添加如下源码就可以直接运行了:
using System;
using System.IO.Ports;
using System.Text;

namespace PortDataReceived
{
    class PortDataReceived
    {
        public static void Main()
        {
            SerialPort mySerialPort = new SerialPort("COM2");

            mySerialPort.BaudRate = 9600;
            mySerialPort.Parity = Parity.None;
            mySerialPort.StopBits = StopBits.One;
            mySerialPort.DataBits = 8;
            mySerialPort.Handshake = Handshake.None;

            mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

            mySerialPort.Open();

            Console.WriteLine("Press any key to continue...");
            Console.WriteLine();
            Console.ReadKey();
            mySerialPort.Close();
        }

        private static void DataReceivedHandler(
                            object sender,
                            SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;

            string indata = sp.ReadExisting();

            Console.WriteLine("Data Received:");
            Console.Write(StrToHex(indata));
        }

        public static string StrToHex(string mStr) //返回处理后的十六进制字符串 
        {
            return BitConverter.ToString(
            ASCIIEncoding.Default.GetBytes(mStr)).Replace("-", " ");
        }
    }
}
运行结果如下图: 串口程序结果   数据完全正确,发出的数据和接受的数据都一样,而且此时VSDM的界面有简单变化: VSDM变化   总结:本文写了一个用虚拟串口软件编写的C#串口编程实例。希望对大家有帮助。
原文地址:https://www.cnblogs.com/vsdot/p/3263348.html