不支持System.IO.Ports 5.0 Xamarin.Forms串行端口

问题描述

我正在创建一个Xamarin.Forms应用程序,该应用程序通过RS232-> USB从外部设备读取数据。我一直在寻找如何从串行端口读取并运行到System.IO.Ports,它说它可以与.netstandard2.0一起使用,并具有MonoAndroid1.0,MonoTouch,Xamarin.iOS等支持。我正在运行Xamarin 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平台2.1-5.0 Xamarin.Mac 3.0

Nuget软件包说它支持 .netstandard 2.0 .netcoreapp2.1 单机器人 单点触控 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.Forms使用.Net Standard作为目标框架。 .Net标准不支持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: Read Data using UsbDeviceConnection Library