LuatOS-SOC接口文档(air780E)--eink - 墨水屏操作库

常量

常量

类型

解释

eink.MODEL_1in02d

number

1.02寸d

eink.MODEL_1in54

number

1.54寸

eink.MODEL_1in54_V2

number

1.54寸_V2

eink.MODEL_1in54b

number

1.54寸b

eink.MODEL_1in54b_V2

number

1.54寸b_V2

eink.MODEL_1in54_V3

number

1.54寸_V3

eink.MODEL_1in54c

number

1.54寸c

eink.MODEL_1in54r

number

1.54寸三色屏152*152

eink.MODEL_2in13

number

2.13寸

eink.MODEL_2in13bc

number

2.13寸bc

eink.MODEL_2in13d

number

2.13寸d

eink.MODEL_2in13_V2

number

2.13寸V2

eink.MODEL_2in54b_V3

number

2.13寸b_V3

eink.MODEL_2in66

number

2.66寸

eink.MODEL_2in66b

number

2.66寸b

eink.MODEL_2in7

number

2.7寸

eink.MODEL_2in7b

number

2.7寸b

eink.MODEL_2in9

number

2.9寸

eink.MODEL_2in9_V2

number

2.9寸_V2

eink.MODEL_2in9bc

number

2.9寸bc

eink.MODEL_2in9b_V3

number

2.9寸b_V3

eink.MODEL_2in9d

number

2.9寸d

eink.MODEL_3in7

number

3.7寸

eink.MODEL_4in2

number

4.2寸

eink.MODEL_4in2bc

number

4.2寸b

eink.MODEL_4in2b_V2

number

4.2寸V2

eink.MODEL_5in65f

number

5.65寸f

eink.MODEL_5in83

number

5.83寸

eink.MODEL_5in83bc

number

5.83寸bc

eink.MODEL_5in83_V2

number

5.83寸V2

eink.MODEL_5in83b_V2

number

5.83寸bV2

eink.MODEL_7in5

number

7.5寸

eink.MODEL_7in5_HD

number

7.5寸HD

eink.MODEL_7in5_V2

number

7.5寸V2

eink.MODEL_7in5bc

number

7.5寸bc

eink.MODEL_7in5b_HD

number

7.5寸b_HD

eink.MODEL_7in5b_V2

number

7.5寸b_V2

eink.font_opposansm8

font

8号字体

eink.font_unifont_t_symbols

font

符号字体

eink.font_open_iconic_weather_6x_t

font

天气字体

eink.font_opposansm10

font

10号字体

eink.font_opposansm12

font

12号字体

eink.font_opposansm16

font

16号字体

eink.font_opposansm18

font

18号字体

eink.font_opposansm20

font

20号字体

eink.font_opposansm22

font

22号字体

eink.font_opposansm24

font

24号字体

eink.font_opposansm32

font

32号字体

eink.font_opposansm8_chinese

font

8号中文字体

eink.font_opposansm8_chinese

font

10号中文字体

eink.font_opposansm12_chinese

font

12号中文字体

eink.font_opposansm16_chinese

font

16号中文字体

eink.font_opposansm18_chinese

font

18号中文字体

eink.font_opposansm20_chinese

font

20号中文字体

eink.font_opposansm22_chinese

font

22号中文字体

eink.font_opposansm24_chinese

font

24号中文字体

eink.font_opposansm32_chinese

font

32号中文字体

eink.init(tp, args,spi_device)

eink显示屏初始化

参数

传入值类型

解释

number

eink类型,当前支持:https://wiki.luatos.com/api/eink.html#id1

table

附加参数,与具体设备有关:
pin_busy(busy)
port:spi端口,例如0,1,2…如果为device方式则为”device”
pin_dc:eink数据/命令选择引脚
pin_rst:eink复位引脚

userdata

spi设备,当port = “device”时有效

返回值

例子

-- 初始化spi0的eink.MODEL_4in2bc) 注意:eink初始化之前需要先初始化spi
spi_eink = spi.deviceSetup(0,20,0,0,8,20000000,spi.MSB,1,1)
log.info("eink.init",
eink.init(eink.MODEL_4in2bc,{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_eink))

eink.setup(full, spiid, pin_busy, pin_reset, pin_dc, pin_cs)

初始化eink

参数

传入值类型

解释

int

全屏刷新0,局部刷新1,默认是全屏刷新

int

所在的spi,默认是0

int

Busy 忙信号管脚

int

Reset 复位管脚

int

DC 数据命令选择管脚

int

CS 使能管脚

返回值

返回值类型

解释

boolean

成功返回true,否则返回false

例子


eink.sleep()

进入休眠模式,再次使用时需要重新初始化

参数

返回值

例子


eink.clear(color, force)

清除绘图缓冲区,默认不会马上刷新到设备

参数

传入值类型

解释

number

color 可选,默认1。刷屏颜色

bool

force 可选,默认false。如果为true则马上清屏

返回值

返回值类型

解释

nil

无返回值

例子


eink.setWin(width, height, rotate)

设置窗口

参数

传入值类型

解释

int

width 宽度

int

height 高度

int

rotate 显示方向,0/1/2/3, 相当于旋转0度/90度/180度/270度

返回值

返回值类型

解释

nil

无返回值

例子


eink.getWin()

获取窗口信息

参数

返回值

返回值类型

解释

int

width 宽

int

height 高

int

rotate 旋转方向

例子


eink.setFont(font)

设置字体

参数

传入值类型

解释

userdata

字体

返回值

例子

-- 设置为字体,对之后的print有效
eink.setFont(eink.font_opposansm12_chinese)

eink.print(x, y, str, colored)

绘制字符串

参数

传入值类型

解释

int

x坐标

int

y坐标

string

字符串

int

颜色, 可以是0或者1, 默认是0

返回值

返回值类型

解释

nil

无返回值

例子

-- 先设置字体, 然后写字
-- 可用字体取决于具体的固件, 如果没有你想要的大小,可以云编译一份自定义固件
-- font_opposansm8_chinese
-- font_opposansm10_chinese
-- font_opposansm12_chinese
-- font_opposansm14_chinese
-- font_opposansm16_chinese
eink.setFont(eink.font_opposansm12_chinese)
eink.print(10, 20, "LuatOS")

eink.show(x, y, noClear)

将缓冲区图像输出到屏幕

参数

传入值类型

解释

int

x 输出的x坐标,默认0

int

y 输出的y坐标,默认0

bool

可选,默认false。如果为true则不进行清屏,直接刷上新内容

返回值

返回值类型

解释

nil

无返回值

例子


eink.draw(buff, buff2, noclear)

直接输出数据到屏幕,支持双色数据

参数

传入值类型

解释

userdata

zbuff指针

userdata

zbuff指针

bool

可选,默认false。如果为true则不进行清屏,直接刷上新内容

返回值

返回值类型

解释

nil

无返回值

例子


eink.line(x, y, x2, y2, colored)

缓冲区绘制线

参数

传入值类型

解释

int

起点x坐标

int

起点y坐标

int

终点x坐标

int

终点y坐标

返回值

返回值类型

解释

nil

无返回值

例子

eink.line(0, 0, 10, 20, 0)

eink.rect(x, y, x2, y2, colored, fill)

缓冲区绘制矩形

参数

传入值类型

解释

int

左上顶点x坐标

int

左上顶点y坐标

int

右下顶点x坐标

int

右下顶点y坐标

int

默认是0

int

是否填充,默认是0,不填充

返回值

返回值类型

解释

nil

无返回值

例子

eink.rect(0, 0, 10, 20)
eink.rect(0, 0, 10, 20,0, 1) -- Filled

eink.circle(x, y, radius, colored, fill)

缓冲区绘制圆形

参数

传入值类型

解释

int

圆心x坐标

int

圆心y坐标

int

半径

int

默认是0

int

是否填充,默认是0,不填充

返回值

返回值类型

解释

nil

无返回值

例子

eink.circle(0, 0, 10)
eink.circle(0, 0, 10, 1, 1) -- Filled

eink.qrcode(x, y, str, size)

缓冲区绘制QRCode

参数

传入值类型

解释

int

x坐标

int

y坐标

string

二维码的内容

int

显示大小 (注意:二维码生成大小与要显示内容和纠错等级有关,生成版本为1-40(对应 21x21 - 177x177)的不定大小,如果和设置大小不同会自动在指定的区域中间显示二维码,如二维码未显示请查看日志提示)

返回值

返回值类型

解释

nil

无返回值

例子


eink.bat(x, y, bat)

缓冲区绘制电池

参数

传入值类型

解释

int

x坐标

int

y坐标

int

电池电压,单位毫伏

返回值

返回值类型

解释

nil

无返回值

例子


eink.weather_icon(x, y, code)

缓冲区绘制天气图标

参数

传入值类型

解释

int

x坐标

int

y坐标

int

天气代号

返回值

返回值类型

解释

nil

无返回值

例子


eink.model(m)

设置墨水屏驱动型号

参数

传入值类型

解释

int

型号名称, 例如 eink.model(eink.MODEL_1in54_V2)

返回值

返回值类型

解释

nil

无返回值

例子


eink.drawXbm(x, y, w, h, data)

绘制位图

参数

传入值类型

解释

int

X坐标

int

y坐标

int

位图宽

int

位图高

int

位图数据,每一位代表一个像素

返回值

例子

-- 取模使用PCtoLCD2002软件即可
-- 在(0,0)为左上角,绘制 16x16 "今" 的位图
eink.drawXbm(0, 0, 16,16, string.char(
    0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,
    0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00
))

eink.setCtx(index)

切换颜色画板, 适合多色墨水屏

参数

传入值类型

解释

int

颜色索引, 黑色为0, 红色为1

返回值

例子

-- 仅适合多色墨水屏, 对单色墨水屏(只有黑白)的无效
eink.setCtx(1)
-- 切换后, 所有drawXXX都会操作在指定颜色的画板

eink.async(index)

异步方式,使用此方式需要先 require(“sysplus”) 之后 eink.clear().wait() eink.show().wait()进行刷屏

参数

传入值类型

解释

int

1 使用异步

返回值

例子

    eink.async(1)
    spi_eink = spi.deviceSetup(spi_id,pin_cs,0,0,8,20*1000*1000,spi.MSB,1,1)
    eink.init(eink.MODEL_1in54,
            {port = "device",pin_dc = pin_dc, pin_busy = pin_busy,pin_rst = pin_reset},
            spi_eink)
    eink.setWin(200, 200, 0)
    sys.wait(100)
    log.info("e-paper 1.54", "Testing Go")
    eink.print(30, 20, "LuatOS-AIR780E",0x00)
    eink.show().wait()
    log.info("e-paper 1.54", "Testing End")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
void EinkMessageHandler::producesEinkBuffersByGpu(int startFrameIndex, int totalFrames) { const nsecs_t start = systemTime(); // EinkBufferQueue ALOGD("producesEinkBuffersByGpu # startFrameIndex:%d, totalFrames:%d, wiskyWaveform:%d", startFrameIndex, totalFrames, mCurrentWaveform->mode); // Dequeue using DequeueBufferInput = IGraphicBufferProducer::DequeueBufferInput; using DequeueBufferOutput = IGraphicBufferProducer::DequeueBufferOutput; DequeueBufferInput dequeueInput; dequeueInput.width = mCurrentGrayBuffer->getWidth(); dequeueInput.height = mCurrentGrayBuffer->getHeight(); dequeueInput.format = HAL_PIXEL_FORMAT_RGBA_8888; dequeueInput.usage = EINK_GRALLOC_USAGE; dequeueInput.getTimestamps = false; vector<DequeueBufferInput> dequeueInputs(totalFrames, dequeueInput); vector<DequeueBufferOutput> dequeueOutputs; mEinkProducer->dequeueBuffers(dequeueInputs, &dequeueOutputs); // Request vector<int32_t> requestInputs; requestInputs.reserve(totalFrames); for (const DequeueBufferOutput &dequeueOutput : dequeueOutputs) { ALOGE_IF(dequeueOutput.result != NO_ERROR, "producesEinkBuffersByGpu # EinkBufferQueue dequeueBuffers slot%d:%s (%d)", dequeueOutput.slot, strerror(-dequeueOutput.result), dequeueOutput.result); requestInputs.emplace_back(dequeueOutput.slot); } using RequestBufferOutput = IGraphicBufferProducer::RequestBufferOutput; vector<RequestBufferOutput> requestOutputs; mEinkProducer->requestBuffers(requestInputs, &requestOutputs); sp<GraphicBuffer> graphicBuffers[totalFrames]; int j = 0; for (const RequestBufferOutput &requestOutput : requestOutputs) { ALOGE_IF(requestOutput.result != NO_ERROR, "producesEinkBuffersByGpu # EinkBufferQueue requestBuffers:%s (%d)", strerror(-requestOutput.result), requestOutput.result); graphicBuffers[j++] = requestOutput.buffer; } mGpuDecodeEink->composeEinkBuffersByGpu(graphicBuffers, mCurrentGrayBuffer, mPreviousGrayBuffer, startFrameIndex, totalFrames, mCurrentWaveform); // Queue using QueueBufferInput = IGraphicBufferProducer::QueueBufferInput; using QueueBufferOutput = IGraphicBufferProducer::QueueBufferOutput; vector<QueueBufferInput> queueInputs; queueInputs.reserve(totalFrames); for (const DequeueBufferOutput &dequeueOutput : dequeueOutputs) { queueInputs .emplace_back(systemTime(), false, HAL_DATASPACE_UNKNOWN, Rect(mCurrentGrayBuffer->getWidth(), mCurrentGrayBuffer->getHeight()), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, Fence::NO_FENCE) .slot = dequeueOutput.slot; } vector<QueueBufferOutput> queueOutputs; mEinkProducer->queueBuffers(queueInputs, &queueOutputs); for (const QueueBufferOutput &queueOutput : queueOutputs) { ALOGE_IF(queueOutput.result != NO_ERROR, "producesEinkBuffersByGpu # EinkBufferQueue queueBuffers:%s (%d)", strerror(-queueOutput.result), queueOutput.result); } ALOGD("producesEinkBuffersByGpu # total time:%ld ms", long(ns2ms(systemTime() - start))); }
06-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值