Serial port 用于.net核心的RS232库

Serial port 用于.net核心的RS232库,serial-port,nuget,visual-studio-code,.net-core,ports,Serial Port,Nuget,Visual Studio Code,.net Core,Ports,我们正在.Net Core中开发应用程序,其中一个应用程序需要访问串行端口 当我了解到System.IO.Ports不会在.Net Core中实现时,我正在寻找一个提供该功能的nuget库,但找不到一个与.Net Core兼容的库(VS代码显示错误消息) 还有其他选择吗 更新:我发现官方的SerialPort API正在考虑移植到.Net Core(请参阅)我设法为netstandard1.5编译了一些小的修改 查看拉动请求: 实验性nuget软件包:该软件包现已于2021年完全跨平台 只需使用

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

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

还有其他选择吗

更新:我发现官方的SerialPort API正在考虑移植到.Net Core(请参阅)

我设法为netstandard1.5编译了一些小的修改

查看拉动请求:


实验性nuget软件包:

该软件包现已于2021年完全跨平台

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

下面的示例是一个.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);
    }
  }
}

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

我也一直在寻找这一点,但运气不太好。我也在看这里。我也是:(……有人运气好吗?我想这就是你想要的:谢谢。我会试试看会发生什么事。仅供参考:我刚刚用SerialPortStream 2.1.2库在Windows 10和Raspbian上安装并运行了一个基本的串行应用程序。我用dotnet 2.0和Visual Studio代码构建了一个简单的应用程序。似乎工作得很好!