(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;
近期下载者:
相关文件:
收藏者: