基于38400 bit / sec的信令速率配置.NET SerialPort

时间:2015-03-23 13:03:30

标签: .net serial-port baud-rate

我在与串行设备通信时遇到问题。我无法确定波特率应该是。文档称信令速率为38400 bit / sec。

以下是串口的文档。

Documentation

这如何转换为.NET SerialPort类?

using (var port = new SerialPort("COM16"))
{
    port.BaudRate = 9800;       // ??
    port.Parity = Parity.Even;  // ??

    // anything else? anything wrong?

    port.Open(); //go!
}

1 个答案:

答案 0 :(得分:0)

如果您不想将所有代码放在using块中,则可以在最后明确关闭端口。

SerialPort port = new SerialPort();
port.PortName = "COM16";
port.BaudRate = 38400; // Baud rate = bits per second
port.DataBits = 8; // unnecessary as 8 is the default
port.Parity = Parity.Even; // unnecessary as Even is the default
port.StopBits = StopBits.One; // unnecessary as One is the default

如果仍然无法连接,请尝试连接Termite,这是一个串口终端程序。如果你必须选择" DTR / DTS"为了让它工作,那么你可能需要这样的设置:

port.DtrEnable = true;
port.RtsEnable = true;

然后打开你的端口。

port.Open();

port.DataReceived += OnRx; // Add the event handler for receiving data

异步读取的最简单方法是创建一个事件处理程序并将数据传递回该方法可以访问的变量。

List<string> rx = new List<string>(); // the event handler stores the received data here

// Add this method to your class to read asynchronously.
protected void OnRx(object sender, SerialDataReceivedEventArgs e) {
    while (port.BytesToRead > 0) {
        try {
            rx.Add(port.ReadLine());
        } catch (Exception) { }    
    }
}

关闭您的端口

port.Close();

另请查看SerialPort documentation