async Task _render() { var r = new RenderTargetBitmap(); await r.RenderAsync(OLEDRenderer); var colors = await PixelRender.GetPixels(r); for (var i = 0; i < r.PixelHeight; i++) { for (var x = 0; x < r.PixelWidth; x++) { var pixel = colors[x, i]; var average = (pixel.Red + pixel.Green + pixel.Blue) / 3; if (average > 0) { _oled.DrawPixel((ushort)x, (ushort)i, 1); } else { _oled.DrawPixel((ushort)x, (ushort)i, 0); } } } _oled.Display(); await Task.Yield(); }
async void _init() { await Task.Delay(500); _factory.Init(); var oled = _factory.GetComponent <IOLED_SSD1306_I2C>(); await oled.Init(OLEDConstants.SSD1306_I2C_ADDRESS, OLEDDisplaySize.SSD1306_128_64); oled.Display(); while (true) { var r = new RenderTargetBitmap(); await r.RenderAsync(OLEDRenderer); var colors = await PixelRender.GetPixels(r); for (var i = 0; i < r.PixelHeight; i++) { for (var x = 0; x < r.PixelWidth; x++) { var pixel = colors[x, i]; var average = (pixel.Red + pixel.Green + pixel.Blue) / 3; if (average > 0) { oled.DrawPixel((ushort)x, (ushort)i, 1); } else { oled.DrawPixel((ushort)x, (ushort)i, 0); } } } oled.Display(); await Task.Yield(); } }
async void _init() { await Task.Delay(500); // var _lcdExamples = new LcdExamples_Rpi2(); // _lcdExamples.Init(); // var oledExmples = new OLEDExamples_Pi(); // await oledExmples.Init(); //return; //_factory.Builder.Register( // c => new HC_SR04(c.Resolve<IExplorerHat_Output1>(), c.Resolve<IExplorerHat_Input2>())).As<IHC_SR04>(); //_factory.Init(); //_hc = _factory.GetComponent<IHC_SR04>(); //await _hc.Init(); //_loop(); //return; _factory.Init(); var oled = _factory.GetComponent <IOLED_SSD1306_I2C>(); await oled.Init(OLEDConstants.SSD1306_I2C_ADDRESS, OLEDDisplaySize.SSD1306_128_64); oled.Display(); //var random = new Random(Convert.ToInt32(DateTime.Now.Millisecond)); while (true) { var r = new RenderTargetBitmap(); await r.RenderAsync(OLEDRenderer); var colors = await PixelRender.GetPixels(r); for (var i = 0; i < r.PixelHeight; i++) { for (var x = 0; x < r.PixelWidth; x++) { var pixel = colors[x, i]; var average = (pixel.Red + pixel.Green + pixel.Blue) / 3; if (average > 0) { oled.DrawPixel((ushort)x, (ushort)i, 1); } else { oled.DrawPixel((ushort)x, (ushort)i, 0); } } } oled.Display(); await Task.Yield(); } }