二维码移植笔记

# QRCODE 二维码的移植

这是本人第一篇bog,可能会有些模仿一些文章的内容格式等,不用猜也知道会有很多不完善的地方很多,待今后慢慢补漏。望各位读者大人见谅。 在生活钟二维码无处不在,以至于如今二维码成为IT 开发移植中常见的应用之一。这次在应用中用到了二维码,主要是编码,解码方面会直接给出包,自己去摸索。QRcode是主流的二维码应用,

## 一.QR code 的特点

1、高密度,容量大,可容纳多达1850个大写字母(字符)或2710个数字,支持最高1108个字节的数据存储,比一维码信息容量高几十倍。

2、 范围广,支持对图片、声音、文字、签字、指纹等各类可以数字化信息的编码,还可以表示多种语言文字和图像数据。

3、 容错能力强,具有纠错功能,当二维码因穿孔、污损等引起局部损坏时,照样可以正常识别,损毁面积达50%仍可恢复。

4、 成本低,易制作,持久耐用

具体可自己手动查询QR code,会得到更多的信息

## 二.QR code 的代码

这里我会给出QRCODE的编码和解码。

void qr_ram_display(const int x, const int y, const int size)
{
#ifdef QR_USER_SDRAM
 int width = QR_Info->qr_code.width;
 unsigned char *frame = QR_Info->qr_code.data;
#else
 int width = qrcode->width;
 unsigned char *frame = qrcode->data;
#endif
 int i = 0, j = 0;
 int xtemp = x, ytemp = y;

 

 while(width > i++)
 {
  if(!MODBUS_ENABLE)
  CommandTask();

 

  while(width > j++)
  {
   GDI_DraFulRect2(xtemp, ytemp, size, size, (*frame++ & 0x01) ? COLOR_BLACK : COLOR_WHITE);

 

   xtemp += size;
  }

  xtemp = x;
  ytemp += size;
  j = 0;
 }
}

二维码显示代码


void qr_ram_creat(const char version, const char* src, const int length)
{
#ifdef QR_USER_SDRAM
 QRinput *stream;
 QRcode *qrcode;
#endif

 

#ifndef QR_USER_SDRAM
 QRinput_free(stream);
 QRcode_free(qrcode);
#endif

 

 stream = QRinput_new2(version, QR_ECLEVEL_H);
 QRinput_append(stream, QR_MODE_8, length, (const unsigned char *)src);
 qrcode = QRcode_encodeInput(stream);

#ifdef QR_USER_SDRAM
 memcpy((char *)&QR_Info->qr_code, (char *)qrcode, sizeof(qrcode->version) + sizeof(qrcode->width) + qrcode->width * qrcode->width);
 QRinput_free(stream);
 QRcode_free(qrcode);
#endif
}

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值