首页 > 解决方案 > System.IO.Ports 5.0 Xamarin.Forms 不支持串行端口

问题描述

我正在创建一个 Xamarin.Forms 应用程序,该应用程序通过 RS232 -> USB 从外部设备读取数据。我正在寻找如何从串行端口读取数据并遇到 System.IO.Ports,它说它将与 .netstandard2.0 一起使用,并具有 MonoAndroid1.0、MonoTouch、Xamarin.iOS 等支持。我正在运行 Xamarin forms 4.8(将很快升级到 5),它在针对 Android 8+ 时实现了 netstandard2.0,而我的目标是 9,所以我不确定为什么这不起作用。当我尝试新建一个串行端口时,它会引发异常

System.PlatformNotSupportedException: 'System.IO.Ports is currently only supported on Windows.'

更令人困惑的是,MS Doc 网站说它支持 .NET Framework 2.0 - 4.8 .NET Platform 2.1 - 5.0 Xamarin.Mac 3.0

Nuget 包说它支持 .netstandard 2.0 .netcoreapp2.1 monoandroid monotouch xamarin.mac xamarin.ios

github页面有 linx、mac、windows 的实现......所以不知道为什么异常明确地说只适用于 windows。

Microsoft Doc 站点: https ://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport?view=dotnet-plat-ext-5.0

Github:https ://github.com/dotnet/corefx/tree/master/src/System.IO.Ports/src/System/IO/Ports

Nuget 包:https ://www.nuget.org/packages/System.IO.Ports/

标签: xamarin.formsxamarin.androidserial-port

解决方案


因为 Xamarin.Forms 使用 .Net Standard 作为目标框架。.Net Standard 不支持 System.IO.Ports。

你可以UsbDeviceConnection改用。此类用于向 USB 设备发送和接收数据和控制消息。有关详细信息,请查看 MS 文档。https://docs.microsoft.com/en-us/dotnet/api/android.hardware.usb.usbdeviceconnection?view=xamarin-android-sdk-9

您可以从下面的链接下载源文件。Xamarin.Forms:使用 UsbDeviceConnection 库读取数据


推荐阅读