我们正在.Net内核中开发应用程序,其中之一需要访问串口。
当我了解到System.IO.Ports不会在.Net核心中实现时,我正在寻找一个提供该功能的nuget库,但是无法获得一个与.net核心兼容的库(VS代码显示了错误消息)。
外面还有别的选择吗?
更新:我发现官方的SerialPort API在移植到.Net内核时被考虑到了(参见https://github.com/dotnet/corefx/issues/984)
发布于 2021-04-29 20:58:43
在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);
    }
  }
}注意:当我第一次回答这个问题时,我应该提到,您需要将上面构造函数中的"COM3“更改为"/dev/ttys0”或类似于Linux。您可能还必须在Linux机器上以Root/SU的身份运行您的应用程序,这正是Linux多用户安全的本质。
发布于 2017-02-04 03:31:49
我成功地为netstandard1.5编译了https://github.com/jcurl/SerialPortStream,并做了一些小修改。
查看拉请求:https://github.com/jcurl/SerialPortStream/pull/13
实验坚果包装:https://www.nuget.org/packages/SerialPortStreamCore/2.1.0
https://stackoverflow.com/questions/40689840
复制相似问题