.NET Core 3 对IoT应用程序的高级支持:System.Device.Gpio

System.Device.Gpio是一个全新的 .Net Core 开源库,它旨在使 IoT(物联网)应用程序能够通过其GPIO引脚或其他 I/O控制硬件与传感器、显示器和输入设备进行交互。该库是由社区维护的多个设备绑定集合来进行增强实现的。

正如微软 .NET 项目经理 Richard Lunder 所演示的那样,这个新库通过一组可用于控制外部设备的API,使开发人员能够控制单板计算机的通用 I/O (GPIO)引脚。这在以前使用.NET Core时是不太可能实现的,尽管.NET Core也可以运行在Raspberry Pi上。它支持的平台包括Raspberry Pi、BeagleBoard、HummingBoard和ODROID,但是不支持比较流行的Arduino板,如 UNO、Mega、Nano等。

通过 NuGet 包提供的这个新库可以在 Linux和Windows 10 IoT Core上运行,它依赖于这些平台上可用的本地驱动程序。对于基于Linux 4.8及更高版本的Linux发行版,System.Device.Gpio使用libgpiod,它取代了GPIO sysfs 接口,后者为较老的Linux版本提供了比较有限也比较慢的GPIO访问。为了获得最高的性能,尽管是以可移植性为代价, Linux上的System.Device.Gpio还支持通过 /dev/mem 来访问GPIO,虽然这些板定制的驱动程序在将来可能会被删除。

System.Device.Gpio有一个配套库,名为 Iot.Device.Bindings,它通过向开发人员提供更高级别的API而不是依赖pin级的协议来访问它们,从而可以更容易地使用很多现有的“哑”传感器、显示器和输入设备。目前, Iot.Device.Bindings 包含了数十种设备的绑定,如A/D转换器、加速器、气体传感器、光传感器、气压计等。需要注意的是,Iot.Device.Bindings是一项社区成果,并没有完全得到微软的支持。

Lunder演示了如何使用Mac上的Visual Studio Code运行了一个LED控制应用程序,该程序运行在Raspberry Pi 3上,它完全支持逐步调试。部分System.Device.Gpio是用C++编写的,不过他们正在逐步往C#上移植,这将使.NET开发人员更容易对其进行改进和修复。

System.Device.Gpio仍处于试验阶段,微软正在寻求人们对其API的积极反馈,这些API可能会在未来的版本中发生变化。

原文链接:

Advanced IoT Application Support in .NET Core 3 With System.Device.Gpio

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/1UXmCS1yFEYY51e86mGE

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励