本文使用香橙派orangepi pi 3lts+SSD1306 oled显示屏作为例子,其它型号的也是一样使用的
在nuget包中安装
Sang.IoT.SSD1306;
以下两个二选一
SkiaSharp;//在window下运行装这个SkiaSharp.NativeAssets.Linux.NoDependencies;//在linux下运行一定要装这个
在c# .net 8中开发的代码
using Sang.IoT.SSD1306;
using SkiaSharp;namespace IotDeviceToolHepler.Device
{public class DeviceDisplay_SSD1306{public void Test(){Display();}public void Display(){Console.WriteLine("Start. Press Ctrl+C to end.");// 显示准备using var oled = new SSD1306_128_64(0); //这里的0对应i2c通道oled.Begin();oled.Clear();var bitmap = new SKBitmap(128, 64, true);SKPaint paint = new SKPaint(){Color = new SKColor(255, 255, 255),StrokeWidth = 1, //画笔宽度Typeface = SKTypeface.FromFile("/usr/share/fonts/truetype/wqy/MSYH.TTC"),//linux下显示中文,需要字库,从window中的C:\Windows\Fonts\目录中copy过去TextSize = 13, //字体大小Style = SKPaintStyle.Fill,};SKCanvas canvas = new SKCanvas(bitmap);while (true){paint.TextSize = 13;canvas.DrawText(System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"), 0, 12, paint);paint.TextSize = 30;canvas.DrawText("设备正常", 0, 50, paint);oled.Image(bitmap.Encode(SKEncodedImageFormat.Png, 100).ToArray());oled.Display();canvas.Clear();Thread.Sleep(1000);}}}
}
这里出现的问题,就是中文出现乱码,需要在linux中上传中文字库,详细处理方法见:.net 在ubuntu下动态写入 中文字乱码 解决:ubuntu下添加中文字库-CSDN博客
驱动官方例子:https://github.com/sangyuxiaowu/Sang.IoT.SSD1306