.net 核心的 RS232 库
RS232 library for .net core
我们正在开发 .Net Core 应用程序,其中一个应用程序需要访问串口。
当我了解到 System.IO.Ports 不会在 .Net Core 中实现时,我一直在寻找一个提供该功能的 nuget 库,但找不到与 .net core 兼容的库(VS Code正在显示一条错误消息)。
还有其他选择吗?
更新:我发现官方 SerialPort API 正在考虑移植到 .Net Core(参见 https://github.com/dotnet/corefx/issues/984)
我设法通过一些小的修改为 netstandard1.5 编译 https://github.com/jcurl/SerialPortStream。
查看拉取请求:https://github.com/jcurl/SerialPortStream/pull/13
实验性 nuget 包:https://www.nuget.org/packages/SerialPortStreamCore/2.1.0
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 的内容。您 可能 还必须 运行 您的应用程序作为 Root/SU 在 Linux 机器上,这正是 Linux 的本质不幸的是多用户安全。
我们正在开发 .Net Core 应用程序,其中一个应用程序需要访问串口。
当我了解到 System.IO.Ports 不会在 .Net Core 中实现时,我一直在寻找一个提供该功能的 nuget 库,但找不到与 .net core 兼容的库(VS Code正在显示一条错误消息)。
还有其他选择吗?
更新:我发现官方 SerialPort API 正在考虑移植到 .Net Core(参见 https://github.com/dotnet/corefx/issues/984)
我设法通过一些小的修改为 netstandard1.5 编译 https://github.com/jcurl/SerialPortStream。
查看拉取请求:https://github.com/jcurl/SerialPortStream/pull/13
实验性 nuget 包:https://www.nuget.org/packages/SerialPortStreamCore/2.1.0
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 的内容。您 可能 还必须 运行 您的应用程序作为 Root/SU 在 Linux 机器上,这正是 Linux 的本质不幸的是多用户安全。