Библиотека 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);
}
}
}