开发环境:
Linux平台:虚拟机下ubuntu 14.04
交叉编译工具:gcc-4.4.3
arm开发板:mini2440
arm 内核版本:linux-3.4.99
最近公司的项目需要在展讯功能机平台下实现字符串生成二维码功能,在网上搜了下,有个linux平台下的开源QR码C函数库qrencode。于是在此源码上进行了一番尝试移植。
下载qrencode-3.4.4.tar.gz源代码,进入qrencode-3.4.4目录,因为实际代码并不运行在linux环境下,故我并不按照./configuer ,make,make install ......等一系列命令去生成linux下需要的函数库,头文件等。
新建一个工程文件夹,把qrencode相关文件拷贝到该文件夹下,尝试编译(对于makefile的编写,不在这雷述了),最后发现基本所有的文件都有依赖关系(并没有深入去对源码进行裁剪),需要文件见下图:
其中main文件是自己编写的。
对于字符串生成二维码,其实最简单的调用函数就是:
QRcode *qrcode; qrcode = QRcode_encodeString("sissi", 2, QR_ECLEVEL_L, QR_MODE_8, 0);
在level2中(第二个参数指定二维码等级)生成的二维码图像是25x25。写一个测试程序串口打印:
for(i=0;i<25;i++) { for(j=0;j<25;j++) { if(qrcode->data[i*25+j]&0x01) { printf("#"); } else { printf("_"); } } printf("\n"); } printf("\n");在开发板上运行发现:
此时已经能看出二维码的大概图像了。
接着尝试在LCD上显示,对于lcd的显示,这边也不再介绍,无非就是最基本的描点,但要注意,如果只是按照原来一点一点的描的话,图像会太小扫不出来,可以先对图像进行放大再显示:
从显示的二维码确实能扫出“sissi”字符串。
自己建立的整个工程源码并不依赖什么别的什么特殊的函数库,故应该能很容易移植到别的处理器上,并且不依赖linux系统。
原文地址:http://blog.csdn.net/l_backkom/article/details/38793639