1、二维码有很多种标准,可以控制存储数据的信息量,也可以控制容错的数据量[使得部分污损的二维码可以被正常读取。通常的做法是调用二维码设计方提供的组件,如果是自己生成二维码,应该可以生成可以看起来很像的东西。
2、例程:
<pre name="code" class="cpp">int Fb_QrDisp(int iPenX,int iPenY,QRcode*pQRcode)
{
T_PixelDatasg_tOriginPixelDatas
T_PixelDatasg_tZoomPixelDatas
//intiZoom
inti
g_tOriginPixelDatas.iWidth= pQRcode->width
g_tOriginPixelDatas.iHeight=pQRcode->width
g_tOriginPixelDatas.iLineBytes=g_tOriginPixelDatas.iWidth
g_tOriginPixelDatas.aucPixelDatas= pQRcode->data
/*
if(pQRcode->version<= 1)
{
iZoom= 2
}
else
{
iZoom= 2
}
g_tZoomPixelDatas.iWidth = pQRcode->width*iZoom
g_tZoomPixelDatas.iHeight=pQRcode->width*iZoom
g_tZoomPixelDatas.iLineBytes=g_tZoomPixelDatas.iWidth
g_tZoomPixelDatas.aucPixelDatas= malloc(g_tZoomPixelDatas.iWidth* g_tZoomPixelDatas.iHeight)
if(g_tZoomPixelDatas.aucPixelDatas== NULL)
{
printf("g_tZoomPixelDatas->aucPixelDatasmalloc failed\n")
return-1
}
PicZoom(&g_tOriginPixelDatas,&g_tZoomPixelDatas)
#if 0
printf("g_tZoomPixelDatas.iWidth=%d,g_tZoomPixelDatas.iHeight=%d\n", g_tZoomPixelDatas.iWidth,g_tZoomPixelDatas.iHeight)
for(i=0i<(g_tZoomPixelDatas.iWidth*g_tZoomPixelDatas.iHeight)i++)
{
printf("0x%x,",g_tZoomPixelDatas.aucPixelDatas[i])
}
printf("\n")
#endif
*/
Disp_FixelPic(iPenX,iPenY,&g_tZoomPixelDatas)
return 0
}
因为stmf429运行起来后内存不够,这里不用申请内存再扩充放大二维码数据的方法,而是直接描点。所以这里注释掉了放大部分。
大力软件二维码在官网可以重新下载。
1.二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。
2.二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形。
3.在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理;它具有条码技术的一些共性;每种码制有其特定的字符集。
4.每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
5.多行组成的条形码,不需要连接一个数据库,本身可存储大量数据,应用于:医院、驾驶证、物料管理、货物运输,当条形码受一定破坏时,错误纠正能使条形码能正确解码二维码。它是一个多行、连续性、可变长、包含大量数据的符号标识。
6.每个条形码有3 - 90行,每一行有一个起始部分、数据部分、终止部分。它的字符集包括所有128个字符,最大数据含量是1850个字符。
7.一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)