本帖最后由 mgn 于 2019-1-15 15:11 编辑
文接上周的《如何在EINK屏幕上显示一颗圣诞树》,小编这次带来“MCU+墨水屏幕”的一个典型应用 - 显示QR二维码。 如果您对QR二维码的基础知识不是特别了解,这里分享两个链接讲解QR二维码的基础知识
[硬件] 硬件还是基于LPCXpresso55S69开发板以及那块淘宝来的1.54寸的墨水屏。 [软件] 接下来的部分,小编逐步介绍如何利用MCU软件生成二维码。
------------------------------------------------ 代码移植 -------------------------------------------------------------- 下载的libqrencode代码包里对我们实际有用的文件见下图,从代码包里取出复制到您的工程路径下即可,如果您用的是基于LPC55S69的代码包,相关代码文件在工程目录的middleware\libqrencode中。
注意fukuchi同志的代码里并没有config.h这个文件,如果没有config.h里的一些声明编译的时候会提示各种错误,如没有版本号等等,所以小伙伴不用忘记这个config.h代入到工程的编译中去。 ------------------------------------------------ 工程配置 -------------------------------------------------------------- 接下来以KEIL工程为例,介绍下创建好一个编译工程后,对编译器要配置那些地方。 首先,在KEIL下要勾选”Options->Target”下的 “Use MicroLIB”
在“Options->C/C++(AC6)”中的“Define:” 加入 “HAVE_CONFIG_H”, 以及在“IncludePaths”中添加入libqrencode的代码路径。
工程配置的最后一步,也是重中之重的一步,通过工程的分散加载文件把堆栈的大小调的尽可能的大一些。原因是libqrencode中用malloc申请了大量heap空间。
------------------------------------------------ API生成QR二维码 ------------------------------------------------ 在介绍libqrencode生成QR二维码前,大家先要把libqrencode相关的.h文件包含进main.h里或者在合适的地方声明下
一切就绪后,让我们来认识下libqrencode生成QR二维码相关的API,核心的API只有两个,一个是QRcode_encodeString()和QRcode_free()。如下图代码中的第69行和94行, 我们要生成一组文字的QR二维码,就类似调用QRcode_encodeString(你要显示的字符串, 2,QR_ECLEVEL_H, QR_MODE_8, 0)即可,函数最终计算的结果会传递给qrcode,所以这个qrcode您需要在之前声明下类似这样QRcode *qrcode。 QRcode_free主要是要释放掉QRcode生成过程中申请的堆。 代码从第72行到92行,其主要任务是把生成的二维码按照显示器的实际分辨率最大化的显示。
如果一切正常,那么结合小编上期的小文章,就可以把二维码的图像数据显示到EINK屏幕上去了。看结果:
新年快乐! Hello2019!
关注恩智浦MCU加油站
|