(QRCODE)C语言实现二维码显示

所属分类:其他
开发工具:C/C++
文件大小:65KB
下载次数:26
上传日期:2018-09-26 18:35:09
上 传 者天然卷
说明:  使用c语言实现二维码生成,有助于帮助学习二维码编码原理。
(Using C language to achieve QR code generation, help to learn two-dimensional code coding principle.)

文件列表:
(QRCODE)C语言实现二维码显示\12864显示二维码参考方法.txt (2130, 2018-01-16)
(QRCODE)C语言实现二维码显示\QRcode_源代码(2017.12.12).zip (63759, 2018-03-08)
(QRCODE)C语言实现二维码显示\利用画矩形的方式显示二维码.txt (839, 2018-03-08)
(QRCODE)C语言实现二维码显示\第二种方法 .txt (1139, 2018-03-08)
(QRCODE)C语言实现二维码显示 (0, 2018-03-08)

注意:本二维码驱动代码是完整版,无需修改,编解码都有,并适当注释。 使用方法:找到QR_Encode.c文件,并找到在此文件中找到BOOL EncodeData(char *lpsSource)函数, 这个函数就是生成二维码的核心函数,用法也很简单,只需把你需要转换的字符作为参数传入即可。 如 EncodeData("http://www.csdn.net/")。这时二维码的转换结果,已经保存在全局变量二维数组 m_byModuleData[MAX_MODULESIZE][MAX_MODULESIZE]中,这个二维数组中保存的都是0、1比特值 (有点像单色BMP位图),0就代表二维码的空白点,1就代表二维码的黑点了。现在你需要做的就是 把这些空白点和黑点通过LCD显示屏显示出来,最终就会得到你要的二维码。 知识传播才有价值,欢迎大家奔走相告,不保留版权,随便用。 CSDN Blog:http://blog.csdn.net/qq_21475601 ---泡在妞里的Feel. 11/03/2017 //////////////////////////////////////修复记录///////////////////////////////////// (1)增加“data_type.h”文件,此文件包含必要数据类型的定义。__(12/12/2017) /////////////////////////////////////////////////////////////////////////////////// *********************************Questions and Answers***************************** Q:二维码生成后的尺寸怎么确定? A: 在"QR_Encode.h"中,通过设置宏定义MAX_MODULESIZE的值,来确定你需要的二维码的尺寸, 这个宏只是设置最大所能生成二维码的尺寸。当你转换的字符数比较少,而MAX_MODULESIZE 的值较大时,全局数组m_byModuleData[MAX_MODULESIZE][MAX_MODULESIZE]将不会被填满。 我们可以通过查看另一个全局变量m_nSymbleSize的值,来确定转换成的二维码尺寸。 Q: 内存消耗问题? A:宏定义MAX_MODULESIZE的值,决定了全局数组m_byModuleData[MAX_MODULESIZE][MAX_MODULESIZE] 的大小,假如#define MAX_MODULESIZE 37,那么(37*37)/1024 = 1.34Kb.除次之外还有很多 全局变量和局部变量,所以对单片机来说内存消耗还是不可忽略的。 根据很多朋友反映,表示很想在低性能的单片机(如:传统的51)上移植此套二维码驱动。 在51上不是不能移植,是内存和ROM都太小,当然现在的增强型51已经很棒了。在这里给大家 一个粗略的指标,至少(RAM:4K,Flash:10K),满足这个你可以尝试移植。ARM现在都这么便宜 性能也强,资料也很多,建议用ARM芯片吧。 Q: 二维码怎么放大? A: 由于生成的二维码是单倍的,在直接显示时,会非常小,不利于扫码。但很遗憾,这套二维码 驱动不支持放大。鉴于此,你可能要自己写一个放大算法。这也很简单,放大二倍就是一个点 变四个点,三倍就是一个点变九个点......在某些显示器(如LCD128***),由于128***是以字节 的形式写数据的,鉴于此,你需要把生成的二维码原始数据,转换成字节的形式。 ************************************************************************************ CSDN Blog:http://blog.csdn.net/qq_36508028 ---RadishV. 08/03/2018 在上一个作者的基础上添加自己的理解和处理的问题 1.代码文件中有很多.c .h 文件,本程序只用到了QR_Encode.c 和 QR_Encode.h 其他文件如果不用,可以删除 2.其他文件的代码也是用来生成二维码的,直接调用"第二种显示方法"文件夹中的函数即可, 优点,可以直接传参直接设置二维码等级,显示大小和模式,不必要再去研究内部运作, 不足,占用堆内存较多,本人使用开辟6K堆空间,才只能显示4等级的二维码,大家可以尝试一下 3.本例程有较多的全局变量,占用内存较多,在编译的时候就能发现是否内存不足 4.调用的程序是可以根据信息量的多少来变换二维码的版本的,版本不同,二维码显示的大小也不同,如果想 用高版本显示少量字符,可以在int EncodeData(char *lpsSource)函数中将nEncodeVersion参数固定为你 想要设置的大小,注,必须在计算编码数据版本后重新设置版本大小,不能注释计算版本的函数(GetEncodeVersion(nVersion, lpsSource, ncLength);) 否则将出错 例如: nEncodeVersion = GetEncodeVersion(nVersion, lpsSource, ncLength);//计算编码数据需要的版本 nEncodeVersion = 8;

近期下载者

相关文件


收藏者