Útmutatók
Hardver (I2C, kamera)
A hardvert a Context.Hardware (IHardwareAccess) adja. Minden eszköz egy erőforrás (i2c-1:0x40, video:/dev/video0, gpio:18), amelyet egyszerre csak egy példány használhat. A második példány hibával (Faulted, „foglalt: a(z) 'X' példány használja”) áll le.
protected override Task InitializeAsync(CancellationToken ct)
{
_device = Context.Hardware.OpenI2cDevice(Settings.BusId, Settings.Address); // lefoglal és megnyit
WriteNeutral();
Context.Hardware.RegisterFailsafe(() => { lock (_lock) WriteNeutral(); }); // watchdog
return Task.CompletedTask;
}
Szabályok
- A megnyitott eszközök a példányéi: leálláskor és hibánál a KOFA előbb lefuttatja a regisztrált failsafe-eket, aztán lezárja az eszközöket és felszabadítja a foglalást. A
DisposeAsync-ben nem kell (és nem érdemes) lezárnod őket. - Ha a beállításokból kiderül, milyen erőforrás kell, a beállítás-rekord valósítsa meg az
IHardwareResourceSettings-et: a gráf ellenőrzése így már alkalmazás előtt jelzi, ha két csomópont ugyanazt kérné. - Működtetőnél (motor, szervó, relé) a bemeneti
Deadline+OnInputTimeoutkötelező, és ajánlott egyestopbemenet is; lásd Életciklus és biztonság.
Kamera
OpenVideoCapture(new VideoCaptureOptions(device, width, height, fps)), majd ReadFramesAsync JPEG képkockákat ad (MJPEG-et dekódolás nélkül). A kimenet típusa CameraFrame. A képkocka nagy adat: távoli használatnál relay prioritás Low való rá.
A Kofa.Abstractions.Imaging egy baseline JpegDecoder-t és egy ImageResampler.ResizeBox átméretezőt ad. A progresszív JPEG-et nem dekódolja; egy JpegDecoder példányt egy szálról használj.
Szimulált hardver
Fejlesztői gépen (Windows, macOS) a szimulált backend fut: minden I2C cím válaszol (a regisztereket tárolja), a kamera tesztképet ad, és a Context.Hardware.IsSimulated igaz. Így a Komodod valódi eszköz nélkül is kipróbálható.
Más eszközök (GPIO, soros port)
Az Acquire("gpio:18") lefoglal egy erőforrást anélkül, hogy eszközt nyitna: a lábat vagy portot te magad hajtod (például saját NuGet csomaggal, mint a System.Device.Gpio), a foglalás pedig megakadályozza, hogy egy másik példány ugyanazt használja. A visszaadott IHardwareLease-t a leállítás felszabadítja. Natív könyvtárak: Natív függőségek.