Serial port 用于.net核心的RS232库
我们正在.Net Core中开发应用程序,其中一个应用程序需要访问串行端口 当我了解到System.IO.Ports不会在.Net Core中实现时,我正在寻找一个提供该功能的nuget库,但找不到一个与.Net Core兼容的库(VS代码显示错误消息) 还有其他选择吗 更新:我发现官方的SerialPort API正在考虑移植到.Net Core(请参阅)我设法为netstandard1.5编译了一些小的修改 查看拉动请求: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年完全跨平台 只需使用
实验性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代码构建了一个简单的应用程序。似乎工作得很好!