📜  串行开始 - C# (1)

📅  最后修改于: 2023-12-03 15:35:57.445000             🧑  作者: Mango

串行开始 - C#

概述

在C#中,串行通常指的是通过串行接口通讯的数据传输过程。串行数据通信是一种基于进程之间的单向、一对一的数据传输方式。在这种通信方式中,通信双方需要同时保持对方的设备信息。

通常情况下,当我们需要进行串行通信时,我们需要通过一定的库和API来操作串行接口。本文将介绍如何在C#中通过串行接口进行数据传输。

环境准备

在本文中,我们将使用.NET Framework的这些库和API来操作串行接口:

using System;
using System.IO.Ports;
代码示例
在C#中使用串行接口发送数据

以下是一段使用串行接口在C#中向设备发送数据的示例代码:

using System;
using System.IO.Ports;

class SerialPortTest
{
    static void Main(string[] args)
    {
        SerialPort mySerialPort = new SerialPort("COM1");

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

        mySerialPort.Open();

        mySerialPort.Write("Hello World");

        mySerialPort.Close();
    }
}

在这段代码中,我们使用了.NET Framework提供的SerialPort类来操作串行接口。首先,我们创建了一个名为mySerialPort的SerialPort对象,指定了串行端口的名称(COM1)和一些基本的通信配置:波特率(9600),数据位(8),校验位(None)和停止位(1)。然后,我们打开了串行端口,发送了一条简单的信息"Hello World",最后关闭了串行端口。

在C#中使用串行接口接收数据

以下是一段使用串行接口在C#中接收设备传输数据的示例代码:

using System;
using System.IO.Ports;

class SerialPortTest
{
    static void Main(string[] args)
    {
        SerialPort mySerialPort = new SerialPort("COM1");

        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.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(indata);
    }
}

在这段代码中,我们同样使用了SerialPort类来操作串行接口,但我们不再使用Write方法向设备发送消息,而是使用了DataReceived事件来接收数据。我们首先通过创建一个SerialDataReceivedEventHandler来注册DataReceived事件,并且将其绑定到DataReceivedHandler方法。在DataReceivedHandler方法中,我们首先将sender对象强制转换为SerialPort对象,然后使用ReadExisting()方法读取串行端口的传输数据,并将其打印到控制台。

结论

通过阅读本文,我们了解了如何在C#中使用SerialPort类来操作串行接口,并且可以实现向设备发送和接收串行数据的功能。如果需要进一步深入学习此类话题,您可以通过查看.NET Framework的官方文档中的SerialPort类来了解更多的信息。