本文使用香橙派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博客