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

时间:2013-07-31 08:05:23

标签: c# serial-port

您好我在c#中编写应用程序以通过rs232(com)端口连接到设备。我需要发送一个“read”命令来读取它的数据,然后发送一个“write”命令来发送一些数据。

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

但我的问题是,我应该关注DTR,RTS,......? 它们是为了什么?我该如何使用它们?

2 个答案:

答案 0 :(得分:3)

以下是MSDN文档的链接,您应该会发现它非常有用:the documentation。您正在寻找的东西有一些属性和一些很好的例子。

答案 1 :(得分:3)

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

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 "";
    }
}