xamarin.forms - 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
解决方案
因为 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 库读取数据
推荐阅读
- kotlin - 如何使用带有通用接口和其他参数的构造函数在 Kotlin 中创建对象
- testing - 我收到错误“this.armService.getIsLoaded 不是函数”
- angular - Angular 2+将数据从子组件发送到父组件
- testing - 如果您没有从 process.env 获得 url,如何取消测试执行
- python - python3中f字符串的名称错误
- html - Flexbox - 如果宽度发生变化,不要移动居中的列
- c++ - 使用 sed 将 c++ 文件中的所有“int”类型替换为“int32_t”
- ios - 在 sectionHeader 中自动调整字体大小
- java - Spring Data Rest - 如何从页面中删除元素?
- android - 如何在 recyclerview 中显示这种类型的视图?