android平台1.3寸OLED屏调试

本文介绍了在Android平台上,如何将彩色RGB8888图片转换为适合1.3寸黑白OLED屏显示的单色图片。通过修改`screenshot`命令的源代码,实现了RGB888、RGB565到单色图的转换,并详细展示了转换算法。在实际操作中,由于屏幕刷新延迟和图片失真问题,最终选择了在HAL层添加字库并模拟处理数据的方案。
摘要由CSDN通过智能技术生成

引言:

Android平台为彩色屏,图片格式为RGB8888,而1.3OLED屏为黑白屏,即像素为1,让屏正常工作能采用的方案有:

1. 方便apk开发,减少应用层开发的工作量,采取读取framebuf中的数据,将彩色转为单色图片,用8080并口的方式发送数据至GRAM.

2. 加字库与图片,用单色屏开发的方式,省却图片数据转换的步骤。

当时与客户讨论屏幕显示的效果等细节时,客户需要至少一种字体,二种字号字体显示及跑马灯等动画要求。因没接触过增加字库,不了解apk软件对屏幕的处理;另客户要求的时间短,综合考虑,先采用第1种实现方案。

 

实现步骤:

1. 在FAE的协助下,OLED屏能正常点亮,并且发送单色图片通过Img2Lcd.exe转换工具转换好的图片数据能正常显示该图片。

2. 图片格式转换:

   修改frameworks\base\cmds\screenshot\Screenshot.c,先用截图的方式尝试将RGB8888 转换成RGB888RGB565、单色图,保存为BMP格式,adb pull出来看实际效果。在网上参考相关转换算法后,转换代码如下:

   1). RGB888,其实质是将RGB8888的后一字节给丢掉。

static int get_rgb888_header(int w, int h, BMPHEADER * head, BMPINFO * info)

{

int size = 0;

if (head && info) {

size = w * h * 3;

memset(head, 0, sizeof(* head));

memset(info, 0, sizeof(* info));

head->bfType[0] = 'B';

head->bfType[1] = 'M';

head->bfOffBits = 14 + sizeof(* info);

head->bfSize = head->bfOffBits + size;

head->bfSize = (head->bfSize + 3) & ~3;//windows要求文件大小必须是4的倍数<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值