private async Task Init() { try { await InitGpio(); var deviceSPI = await InitSPI(); var deviceI2C = await InitI2C(); //create SPI display SSD1603.SSD1603Configuration cfg_128_64 = SSD1603.CreateConfiguration(Screen.OLED_128_64); cfg_128_64.CommonPinConfiguration = SSD1603.CommonPinConfigurationOptions.Alternative; cfg_128_64.IsSegmentRemapped = true; cfg_128_64.IsCommonScanDirectionRemapped = true; _displaySpi = new SSD1603(cfg_128_64, deviceSPI, _pinDataCmd, _pinReset); //create I2C display //SSD1603.SSD1603Configuration cfg_128_32 = SSD1603.CreateConfiguration(Screen.OLED_128_32); //cfg_128_32.IsSegmentRemapped = true; //cfg_128_32.IsCommonScanDirectionRemapped = true; _displayI2c = new SSD1603(Screen.OLED_128_32, deviceI2C); } catch (Exception ex) { Debug.WriteLine("initialization failed", ex.Message); return; } }
private void ShowEmoji(int idx, string emoji) { SSD1603 display = idx == 0 ? _displaySpi : _displayI2c; CanvasTextFormat fmt = idx == 0 ? _fmtBg : _fmtSm; if (display != null && display.State == SSD1603.States.Ready) { //draw using (CanvasDrawingSession ds = display.Render.CreateDrawingSession()) { ds.Antialiasing = CanvasAntialiasing.Aliased; ds.TextAntialiasing = CanvasTextAntialiasing.Aliased; ds.Clear(SSD1603.BackgroundColor); ds.DrawText(emoji, 0, 0, SSD1603.ForeColor, fmt); } Debug.WriteLine("display " + emoji); display.Display(); } }