(Raspbian + C# + Mono) Type initializer for #39;System.Device.Gpio.Drivers.LibGpiodDriver#39; threw an exception((Raspbian+C#+Mono)#39;System.Device.Gpio.Drivers.LibGpiodDriver#39;的类型初始值设定项引发异常)
问题描述
我正在为一个新项目进行初步研究。我买了一部覆盆子PI 3B,我正在试着运行一个小程序来检查我们所有的必需品:
- SQL Server连接。
- 将配置文件保存在磁盘上。
- 在Raspberry GPIO中配置和使用一些DI/DO。
到目前为止,我已经在上面安装了Mono库,并且正在我的Windows计算机中使用Visual Studio 2019来构建一个WinForms应用程序。
Raspberry OS version: Raspbian GNU/Linux 10 (buster)
Mono version : Mono JIT compiler version 6.12.0.122
这些是我的应用程序的包:(.Net Framework4.8)
<packages>
<package id="Microsoft.Win32.Registry" version="5.0.0" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Device.Gpio" version="1.5.0" targetFramework="net48" />
<package id="System.Memory" version="4.5.4" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net48" />
<package id="System.Runtime.InteropServices.WindowsRuntime" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime.WindowsRuntime" version="4.6.0" targetFramework="net48" />
<package id="System.Security.AccessControl" version="5.0.0" targetFramework="net48" />
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
</packages>
到目前为止,我还没有连接到GPIO,我只是尝试使用以下代码读取管脚值:
private void ReadPinTest()
{
int pin = 24;
PinValue pinValue = PinValue.Low;
try
{
using (GpioController gpio = new GpioController(PinNumberingScheme.Board))
{
if (gpio == null)
{
MessageBox.Show("No GPIO controller found.");
return;
}
gpio.OpenPin(pin, PinMode.Input);
pinValue = gpio.Read(pin);
}
MessageBox.Show($"Pin {pin} is {pinValue}");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
MessageBox.Show(ex.InnerException.Message);
MessageBox.Show(ex.InnerException.StackTrace);
}
}
我收到下一个错误:
异常消息:
"System.Device.Gpio.Drivers.LibGpiodDriver"的类型初始值设定项引发异常。
内部异常消息:
libgpiod
内部异常StackTrace:
At(包装器托管到本机)Interop+libgpiod.gpiod_Version_String()
At System.Device.Gpio.Drivers.LibGpiodDriver.IsLibgpiodVersion1_5orHigher()[0x00000]in<;d49ca6cd97194f038905958dbca2c58c>;:0
At System.Device.Gpio.Drivers.LibGpiodDriver..cctor()[0x0000f]in:0
我已尝试重新安装gpiod库:
sudo apt-get install gpiod
gpiod已是最新版本(1.2-3+rpi1)。
我做错了什么?
推荐答案
当面向linux/raspbian时,我推荐使用.NET 5.0。在这个版本中,对Linux的支持有了很大的改进,而Mono的未来还不确定。它还没有正式的图形用户界面支持,但你可以使用Avalonia或尝试Maui-Linux包,它最终将进入.NET 6.0(计划在今年秋天)。
您的特定问题可能通过运行
sudo apt install -y libgpiod-dev
然而,System.Device.Gpio还没有针对Mono进行过深入的测试,因为它主要是针对.NET Core的。.NET框架支持适用于Windows。
这篇关于(Raspbian+C#+Mono)';System.Device.Gpio.Drivers.LibGpiodDriver';的类型初始值设定项引发异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:(Raspbian+C#+Mono)';System.Device.Gpio.Drivers.LibGpiodDriver';的类型初始值设定项引发异常


- 如何用自己压缩一个 IEnumerable 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 输入按键事件处理程序 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01