.net核心的RS232库

Jai*_*ime 12 serial-port ports nuget .net-core visual-studio-code

我们正在开发.Net Core中的应用程序,其中一个需要访问串行端口.

当我了解System.IO.Ports将不会在.Net Core中实现时,我正在寻找一个提供该功能的nuget库,但无法与.net内核兼容(VS Code显示错误消息) ).

那里有替代品吗?

更新:我发现正在考虑将官方SerialPort API移植到.Net Core(请参阅https://github.com/dotnet/corefx/issues/984)

Jai*_*ime 7

我设法为netstandard1.5 编译https://github.com/jcurl/SerialPortStream,稍作修改.

看一下拉取请求:https://github.com/jcurl/SerialPortStream/pull/13

实验性nuget包:https://www.nuget.org/packages/SerialPortStreamCore/2.1.0


sha*_*wty 6

到 2021 年,这将完全跨平台。

只需使用命令行或 IDE 安装 NuGet:“System.IO.Ports”

以下示例是一个 .NET 5 控制台模式程序,可在 Linux 和 Windows 上编译和运行。

using System;
using System.IO.Ports;

namespace PipelinesTest
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Reading a GPS Device on COM3");

      SerialPort _port = new SerialPort("COM3", 4800, Parity.None, 8, StopBits.One);

      _port.DataReceived += PortOnDataReceived;
      _port.Open();
      
      Console.WriteLine("Press Return to Exit");
      Console.ReadLine();

      _port.Close();
      _port.DataReceived -= PortOnDataReceived;
      
      Console.WriteLine("Ended");
    }

    private static void PortOnDataReceived(object sender, SerialDataReceivedEventArgs e)
    {
      SerialPort port = sender as SerialPort;
      var line = port.ReadLine();
      Console.WriteLine(line);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:当我第一次回答这个问题时,我应该提到,您需要将上面构造函数中的“COM3”更改为“/dev/ttys0”或类似的 Linux 名称。您可能还必须在 Linux 计算机上以 Root/SU 身份运行您的应用程序,不幸的是,这正是 Linux 多用户安全性的本质。