我只是想开始体验 DHT22/AM2302(温度和湿度传感器),但我不知道如何初始化和获取它的数据......我尝试使用 GpioPin:
gpioController = GpioController.GetDefault();
if(gpioController == null)
{
Debug.WriteLine("GpioController Initialization failed.");
return;
}
sensorPin = gpioController.OpenPin(7); //Exception throws here
sensorPin.SetDriveMode(GpioPinDriveMode.Input);
Debug.WriteLine(sensorPin.Read());
但得到异常:“此操作所需的资源已禁用。”
之后,我查看了 unixoids 的库,发现了这个:
https://github.com/technion/lol_dht22/blob/master/dht22.c
但我不知道如何在使用 Windows 10 的 VCSharp 中实现这一点,任何人都有想法或经验吗?
非常感谢您!
更新:
我得到提示,没有 GPIO-Pin 7,这是真的,所以我重试了,但 GPIO 输出似乎只是高或低……所以我必须使用 I2C 或 SPI ...根据这个项目,我决定尝试使用 SPI:http ://microsoft.hackster.io/windowsiot/temperature-sensor-sample并向前迈出一步......现在的困难是翻译上述链接C-Library 到 C-Sharp-SDK 以接收正确的数据...
private async void InitSPI()
{
try
{
var settings = new SpiConnectionSettings(SPI_CHIP_SELECT_LINE);
settings.ClockFrequency = 500000;
settings.Mode = SpiMode.Mode0;
string spiAqs = SpiDevice.GetDeviceSelector(SPI_CONTROLLER_NAME);
var deviceInfo = await DeviceInformation.FindAllAsync(spiAqs);
SpiDisplay = await SpiDevice.FromIdAsync(deviceInfo[0].Id, settings);
}
catch(Exception ex)
{
Debug.WriteLine("SPI Initialization failed: " + ex.Message);
}
}
这工作不太好,要清楚:它只在启动树莓派 pi2 时工作一次,然后启动/远程调试应用程序,但在退出应用程序并重新启动它们后,SPI 初始化失败。
现在我正在努力从 pin 中读取数据,并将在未来的更新中显示一些代码。仍然欢迎任何意见、答案和/或建议。