C# 如何从串口读取数据并写入串口?

C# 如何从串口读取数据并写入串口?,c#,serial-port,C#,Serial Port,您好,我正在用c#编写一个应用程序,通过rs232(com)端口连接到设备。我需要发送一个“读取”命令从中读取数据,并发送一个“写入”命令向其中发送一些数据 我在这里和其他一些网站上读了一些文章,我知道在c#中定义串行端口时有一些方法 但我的问题是,我应该关注DTR、RTS等吗? 它们是干什么用的?我如何使用它们 这里有一个指向MSDN文档的链接,您会发现它非常有用:。这里有一些你正在寻找的属性和一些很好的例子 这是一个非常简单的函数,它将命令作为字节数组写入串行端口,并从串行端口读取相应的输入

您好,我正在用c#编写一个应用程序,通过rs232(com)端口连接到设备。我需要发送一个“读取”命令从中读取数据,并发送一个“写入”命令向其中发送一些数据

我在这里和其他一些网站上读了一些文章,我知道在c#中定义串行端口时有一些方法

但我的问题是,我应该关注DTR、RTS等吗?
它们是干什么用的?我如何使用它们

这里有一个指向MSDN文档的链接,您会发现它非常有用:。这里有一些你正在寻找的属性和一些很好的例子

这是一个非常简单的函数,它将命令作为
字节
数组写入串行端口,并从串行端口读取相应的输入(在本例中,我仅读取从串行端口读取的值的第四个字节):


看,非常有用,谢谢。另一个问题:如果我想读几遍,'Serial1.IsOpen'应该是循环或其他东西的条件?@user2628363是的,你可以创建一个循环
While(Serial1.IsOpen)
在端口上继续写/读。谢谢,dtr和rts是做什么的?@user2628363它们用于硬件流控制;要获得正确的使用方法,您应该查看要与之通信的设备的文档
private string ReadFromSerial()
{
    try
    {
        System.IO.Ports.SerialPort Serial1 = new System.IO.Ports.SerialPort("COM1", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
        Serial1.DtrEnable = true;
        Serial1.RtsEnable = true;
        Serial1.ReadTimeout = 3000;

        var MessageBufferRequest = new byte[8] { 1, 3, 0, 28, 0, 1, 69, 204 };
        var MessageBufferReply = new byte[8] { 0, 0, 0, 0, 0, 0, 0, 0 };
        int BufferLength = 8;

        if (!Serial1.IsOpen)
        {
            Serial1.Open();
        }

        try
        {
            Serial1.Write(MessageBufferRequest, 0, BufferLength);
        }
        catch (Exception ex)
        {
            logEx(ex);
            return "";
        }

        System.Threading.Thread.Sleep(100);

        Serial1.Read(MessageBufferReply, 0, 7);

        return MessageBufferReply[3].ToString();
    }
    catch (Exception ex)
    {
        logEx(ex);
        return "";
    }
}