Xamarin Forms Android与UWP平台连接USB串口的实现问题咨询
Xamarin 跨平台USB串口通信实现方案
该需求完全可以通过Xamarin实现,你遇到的报错均为平台权限限制、类库兼容性问题导致,可通过分平台适配的方式解决:
- Android平台:无需使用跨平台通用串口类库,直接通过Xamarin封装的Android原生USB设备API实现串口通信,或者选用专门适配Xamarin.Android的串口封装类。需要提前在
AndroidManifest.xml中注册USB设备访问权限,运行时主动向用户申请USB设备使用授权,多端口打开时为每个端口创建独立的操作实例、避免重复占用同一端口句柄即可规避访问拒绝异常。 - Windows UWP平台:
System.IO.Ports类库本身不兼容UWP沙箱运行环境,抛出FileNotFoundException属于预期现象,需要改用UWP原生提供的Windows.Devices.SerialCommunication命名空间下的API实现串口操作。
你可以通过Xamarin.Forms依赖服务(DependencyService)实现跨平台统一调用:
- 在共享项目中定义串口操作公共接口
ISerialPortService,封装打开端口、关闭端口、接收数据、发送数据等通用方法 - 分别在Android、UWP平台项目中实现该接口,调用对应平台的原生串口API完成逻辑
- 上层业务代码统一调用公共接口,无需感知平台差异
你之前使用跨Linux类库遇到的多端口
AccessDenied Exception,核心原因是这类类库未针对Xamarin.Android/UWP做平台适配,权限校验、句柄管理逻辑不符合目标平台要求。你自行实现分平台逻辑时,只要在打开端口前先校验端口占用状态、打开后独占端口句柄、关闭时及时释放资源,即可稳定支持多端口同时通信。
内容的提问来源于stack exchange,提问作者ryan151
相关产品推荐
相关产品推荐

