【问题标题】:Using System.IO.Ports.SerialPort in .NET Core 1.1在 .NET Core 1.1 中使用 System.IO.Ports.SerialPort
【发布时间】:2020-08-10 10:15:22
【问题描述】:

我正在尝试使用带有 .Net Core 的 Visual Studio 代码创建控制台应用程序并获取所有可用端口。如何在 Visual Studio 代码中使用 System.IO.Ports.SerialPort class? 我尝试用using 声明它,但唯一可用的是CompressionMemoryMappedFiles 在命名空间System.IO

我正在使用 .Net Core 1.1.1 SDK

【问题讨论】:

  • 这是 .NETCore 的常见问题,尚未完成。代码骨架签入了month ago,它的目标是2.0 release。应该有一段时间了,还没有任何尝试将它移植到 Unix 的迹象。
  • 谢谢,我明白了。将等待正式发布使用它。

标签: c# serial-port visual-studio-code .net-core


【解决方案1】:

如果您使用的是 linux 操作系统,您可以使用 SerialPortStream 库。它需要 libserial 二进制文件,我只能为 linux 编译它(不适用于 MacOS 或 Windows)。

其他方式是使用 Mono 实现和Mono.Posix.NETStandard 包。这种方式仅适用于 NETStandard 2.0 项目。

我将 System.IO.Ports 类的源代码从 Mono 复制到我的 NETStandard 2.0 项目中,添加了 Mono.Posix.NETStandard、Microsoft.Win32.Registry 引用并将<AllowUnsafeBlocks>true</AllowUnsafeBlocks> 部分包含到我的 .csproj 文件中。它适用于 MacO 和 Windows。

【讨论】:

    【解决方案2】:

    对于那些几年后来这篇文章的人......

    从 .NET Core 2.0 开始,可以使用System.IO.Ports package

    【讨论】:

      【解决方案3】:

      请使用 .NET API 浏览器。 .NET Core 1.1 不存在 SerialPort: https://docs.microsoft.com/en-us/dotnet/api/?term=serialport&view=netcore-1.1 但它是在 .NET Core 2.0 中添加的: https://docs.microsoft.com/en-us/dotnet/api/?term=serialport&view=netcore-2.0 您始终可以从主框架添加对 System.IO.dll 的引用以获取 SerialPort,但是您不符合 .NET Core 1.1(无法移植到 Linux、MacOS 等)

      【讨论】:

      • .net core 2.0 在 linux 上
      【解决方案4】:

      System.IO.Ports 将出现在 system.dll 中,因此默认情况下,它会在您创建时添加到您的项目中。

      那么你需要添加

      Using System.IO.Ports Namespace to your class 
      

      这是为我们提供可用端口的示例。

      private void getAllAvailablePorts()
       {
           // Get a list of serial port names.
           string[] ports = SerialPort.GetPortNames();
      
           Console.WriteLine("The following serial ports were found:");
      
           // Display each port name to the console.
           foreach (string port in ports)
           {
             Console.WriteLine(port);
            }
      }
      

      【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2018-08-03
      • 1970-01-01
      • 2017-07-14
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多