Библиотека RS232 для ядра.net

Мы разрабатываем приложения на.Net Core, и одно из них требует доступа к последовательному порту.

Поскольку я узнал, что System.IO.Ports не будет реализован в.Net Core, я искал библиотеку nuget, которая предоставляет эту функциональность, но не могла получить ее, совместимую с ядром.net (VS Code показывает сообщение об ошибке.).

Есть ли альтернатива там?

ОБНОВЛЕНИЕ: я обнаружил, что официальный SerialPort API учитывается при портировании на.Net Core (см. https://github.com/dotnet/corefx/issues/984).

2 ответа

Решение

Мне удалось скомпилировать https://github.com/jcurl/SerialPortStream для netstandard1.5 с некоторыми незначительными изменениями.

Посмотрите на запрос на получение доступа: https://github.com/jcurl/SerialPortStream/pull/13

Экспериментальный пакет nuget: https://www.nuget.org/packages/SerialPortStreamCore/2.1.0

Теперь это будет полностью кроссплатформенная платформа в 2021 году.

Просто установите NuGet с помощью командной строки или вашей IDE: "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);
    }
  }
}
Другие вопросы по тегам