搜索
bottom↓
回复: 45

QR码和PDF417 For STM8

  [复制链接]

出0入0汤圆

发表于 2014-10-29 22:42:02 | 显示全部楼层 |阅读模式
本帖最后由 linjunxiong 于 2014-10-29 22:42 编辑

    二维码,种类比较多,常见的有QR码和PDF417,比一维码可以存储的信息多了很多。很多应用还是可以应用到。
了解具体原理和历史可以维基下,

国标有中文的 《GB 17172-1997-TPDF417国标》《GBT 18284-2000 QRcode国标》

    之前对于二维码不怎么感冒,但是由于,
xx前由于xx项目需要打印出QR码,所以开始收集二维码在单片机上的应用,最后发现稍微少了些,而且想做出动态版本和纠错基本的RAM开销不小。继续搜刮。。。

关于单片机使用QR的应用可以G到的资源确实不多,主要资源都是PC端的,最后还是找到一些合适的,虽然没有用在应用中加入动态调节版本和纠错级别(RAM没那么多挥霍),但是固定的版本还是足够用。
qrduino-master  https://github.com/tz1/qrduino
QRcodegenerator http://forum.43oh.com/topic/3433-qr-code-generator/

最后整理到了SM8S105上,直接打印到OLED上,居然可是实现,so移植到应用中,放大,ThermalPrinter打印出来,居然可以被扫描枪识别。



至于不同版本的选择qrduino-master 也提供生成不同版本的version.c



PDF417

pdf417_enc  http://sourceforge.jp/projects/sfnet_pdf417encode/releases/


这个在单片机上的参考就真的没能G到,索性直接找的PC端的移植下,整体的流程基本差不多,只是差最后一步整理把它打印出来,一直想把它弄出来,就是没那个动力,有兴趣的可以了解下。


代码些许乱,懒得去整理它了。。。多少懒


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2014-10-29 22:42:36 | 显示全部楼层
sleep...............

出0入0汤圆

发表于 2014-10-29 23:05:22 | 显示全部楼层
本帖最后由 richards 于 2014-10-29 23:06 编辑

牛逼,图像采集是怎么做的呢?


sorry 没注意到是生成哦

出0入10汤圆

发表于 2014-10-29 23:36:59 | 显示全部楼层
赞一个。

出0入0汤圆

发表于 2014-10-30 00:30:27 | 显示全部楼层
反过来,STM8能对这些二维码进行decode就好了!

出0入0汤圆

发表于 2015-6-24 19:51:05 | 显示全部楼层
靠!
牛!!!
正在找这方面的资料,不知道占用多少资源?
还没下载看,对中文是怎么处理呢?需要unicode之类的编码吗?
还是只有数字和字母?

出0入0汤圆

发表于 2015-6-24 19:51:27 | 显示全部楼层
靠!
牛!!!
正在找这方面的资料,不知道占用多少资源?
还没下载看,对中文是怎么处理呢?需要unicode之类的编码吗?
还是只有数字和字母?

出0入0汤圆

发表于 2015-6-24 22:49:33 | 显示全部楼层
这个太强悍了

出0入42汤圆

发表于 2015-6-25 00:47:30 | 显示全部楼层
这个确实厉害!

出0入0汤圆

发表于 2015-6-25 10:14:03 | 显示全部楼层
QR code 确实厉害啊。

出0入0汤圆

发表于 2015-6-25 16:14:20 | 显示全部楼层
之前有移植到微型打印机上,占用资源确实有点大。

出0入0汤圆

发表于 2015-6-25 23:26:03 | 显示全部楼层
高手赞一个

出0入0汤圆

发表于 2015-6-26 15:34:55 | 显示全部楼层
本帖最后由 XUEPENGBIN 于 2015-6-26 16:17 编辑


为什么 显示 framebase【】里边的内容出来是这个啊。。
有什么规律。。


折腾了一下,可以显示了。但是感觉不对。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-6-26 18:52:20 | 显示全部楼层
XUEPENGBIN 发表于 2015-6-26 15:34
为什么 显示 framebase【】里边的内容出来是这个啊。。
有什么规律。。

framebase[] 是固定的;

    你可以试下
    //计算QR码.
    strcopy(strinbuf,"QR Code");
    qrencode();// qrencode函数根据strinbuf的内容处理

    生成的图片保存在,qrframe数组中,你再打印出来试下, 现在没东西试

出0入0汤圆

发表于 2015-6-26 20:32:18 | 显示全部楼层
linjunxiong 发表于 2015-6-26 18:52
framebase[] 是固定的;

    你可以试下

我是这样的。
后来用你传的文件里边有一个LCD.C 文件 里边的算法显示。显示正常了。但是扫描不出来。。
下边使用的 定义 3-1的

unsigned char neccblk1 = 1;
unsigned char neccblk2 = 0;
unsigned char datablkw = 55;
unsigned char eccblkwid = 15;
unsigned char VERSION = 3;
unsigned char ECCLEVEL = 1;
unsigned char WD = 29;
unsigned char WDB = 4;
unsigned char strinbuf[116]="http://www.amobbs.com;http://bbs.yleee.com.cn";
//unsigned char strinbuf[116]="abcdefghijklmnopqrst";
unsigned char qrframe[600];
unsigned char rlens[30];


unsigned char framebase[]  = {
0xfe,0x00,0x03,0xf8,
0x82,0x00,0x02,0x08,
0xba,0x00,0x02,0xe8,
0xba,0x00,0x02,0xe8,
0xba,0x00,0x02,0xe8,
0x82,0x00,0x02,0x08,
0xfe,0xaa,0xab,0xf8,
0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x02,0x00,0x0f,0x80,
0x00,0x80,0x08,0x80,
0xfe,0x00,0x0a,0x80,
0x82,0x00,0x08,0x80,
0xba,0x00,0x0f,0x80,
0xba,0x00,0x00,0x00,
0xba,0x00,0x00,0x00,
0x82,0x00,0x00,0x00,
0xfe,0x00,0x00,0x00,
};

unsigned char framask[]  = {
0xff,0xff,0xff,0xff,
0xff,0xf8,0x10,0x04,
0x00,0x80,0x08,0x00,
0x40,0x01,0x00,0x02,
0x00,0x02,0x00,0x01,
0x00,0x00,0x40,0x00,
0x08,0x00,0x00,0x80,
0x03,0xff,0x00,0x1f,
0xfc,0x00,0x7f,0xf8,
0x00,0xff,0xf8,0x00,
0xff,0xfc,0x00,0x01,
0xff,0x00,0x00,0x3f,
0xe0,0x00,0x03,0xfe,
0x00,0x00,0x00,
};
下边是从 LCD.C 里边移植过来的 代码

QRBIT.H 里边有定义  红色的是我参考  QRBIT 修改的

#define QRBIT(x,y) ( ( qrframe[((x)>>3) + (y) * WDB] >> (7-((x) & 7 ))) & 1 )
#define QRBITB(x,y) ( ( framebase[((x)>>3) + (y) * WDB] >> (7-((x) & 7 ))) & 1 )
#define SETQRBIT(x,y) qrframe[((x)>>3) + (y) * WDB] |= 0x80 >> ((x) & 7)
#define TOGQRBIT(x,y) qrframe[((x)>>3) + (y) * WDB] ^= 0x80 >> ((x) & 7)


void DrwBit(unsigned char x1,unsigned char y1,unsigned char X_Long,unsigned char Y_Long,unsigned char *Data)
{
          unsigned char Y_Cout,X_Cout,x,y;
          unsigned char i,k,b,t;
          
         X_Long=X_Long;          
   X_Cout = 0;
         Y_Cout = 0;       
                t = 0;
    b = 0;

   for(y=0;y<Y_Long;y++)
                 {
      for(x=0;x<(X_Long*8);x++)
         {
                                          
            b >>= 1;
            if( x <( Y_Long) && y < (Y_Long))
                                                  
            if( QRBITB(Y_Long-x-1,y) )   b |= 0x80;
            if( ++t > 7 )
                  {
                    t = 0;
                                                                                PutByte(x/8+x1,y+y1,b);

                                                                                X_Cout ++;
                                                                                if(X_Cout == X_Long)
                                                                                {
                     X_Cout = 0;
                                                                                 Y_Cout ++;
                                                                                }                                                                                                 
                    b = 0;
                  }
              
        }
}
}

直接用  下边函数显示  framebase 就是不正常的图片

void DrwBit2(unsigned char x1,unsigned char y1,unsigned char X_Long,unsigned char Y_Long,unsigned char *Data)
{
        unsigned char x,y;
        for(y=0;y<Y_Long;y++)
        {
          for(x=0;x<X_Long;x++)
                 {
                  PutByte(x,y,*Data);
                  Data ++;
                  }
         }
}

出0入0汤圆

发表于 2015-6-26 20:33:43 | 显示全部楼层
linjunxiong 发表于 2015-6-26 18:52
framebase[] 是固定的;

    你可以试下

你 main 函数里边的那种方式 我观察了下 移植过来 显示好像不怎么对劲。。

出0入0汤圆

 楼主| 发表于 2015-6-27 06:35:18 来自手机 | 显示全部楼层
生成数据在qrframe,不在franebase,还有strinbuf试下弄小些,不同等级可以包含的字节不同的,

出0入0汤圆

发表于 2015-6-27 11:21:10 | 显示全部楼层
本帖最后由 XUEPENGBIN 于 2015-6-27 11:45 编辑
linjunxiong 发表于 2015-6-27 06:35
生成数据在qrframe,不在franebase,还有strinbuf试下弄小些,不同等级可以包含的字节不同的, ...


谢谢你的指导,现在终于可以正确显示了。


主要不是容量的问题,
qrencode.c 文件里有一个 下边图片蓝选 的那个定义 去掉就可以了。




总结 :当蓝选的不注释掉的话 ,framebase[] 数组里边是 错误的二维码注释掉以后,qrframe[]数组里边是正常的二维码
所谓的错误的二维码 就是我前边上传的显示正常但是扫不出来。

下边我再上传一个 7版本 矫正为4级的图片,放了一个螺丝钉 和一个芯片,照样可以扫出来


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-6-27 16:56:42 | 显示全部楼层
XUEPENGBIN 发表于 2015-6-27 11:21
谢谢你的指导,现在终于可以正确显示了。

可以上你的测试工程吗?

出0入0汤圆

发表于 2015-6-27 17:33:35 | 显示全部楼层
zyw19987 发表于 2015-6-27 16:56
可以上你的测试工程吗?

主要是 15楼的 显示代码
这个是我这次修改的。其他的楼主都上传了。

出0入0汤圆

发表于 2015-7-1 17:15:03 | 显示全部楼层
学习了,mark一下

出0入0汤圆

发表于 2015-7-1 19:20:33 | 显示全部楼层
XUEPENGBIN 发表于 2015-6-27 11:21
谢谢你的指导,现在终于可以正确显示了。

我移植了也是扫描不出来,但是我在qrencode.c 里并没有找到你蓝色注释掉的两句话


#include <string.h>
#include "qrencode.h"

extern unsigned char neccblk1;
extern unsigned char neccblk2;
extern unsigned char datablkw;
extern unsigned char eccblkwid;
extern unsigned char VERSION;
extern unsigned char ECCLEVEL;
extern unsigned char WD, WDB;

extern unsigned char rlens[46];
extern unsigned char framebase[];
extern unsigned char framask[];


//========================================================================
// Reed Solomon error correction
static unsigned modnn(unsigned x)
{
    while (x >= 255)
    {
        x -= 255;
        x = (x >> 8) + (x & 255);
    }
   
    return x;
}

#ifndef RTGENEXPLOG
static const unsigned char g0log[256]  = {
0xff,0x00,0x01,0x19,0x02,0x32,0x1a,0xc6,0x03,0xdf,0x33,0xee,0x1b,0x68,0xc7,0x4b,
0x04,0x64,0xe0,0x0e,0x34,0x8d,0xef,0x81,0x1c,0xc1,0x69,0xf8,0xc8,0x08,0x4c,0x71,
0x05,0x8a,0x65,0x2f,0xe1,0x24,0x0f,0x21,0x35,0x93,0x8e,0xda,0xf0,0x12,0x82,0x45,
0x1d,0xb5,0xc2,0x7d,0x6a,0x27,0xf9,0xb9,0xc9,0x9a,0x09,0x78,0x4d,0xe4,0x72,0xa6,
0x06,0xbf,0x8b,0x62,0x66,0xdd,0x30,0xfd,0xe2,0x98,0x25,0xb3,0x10,0x91,0x22,0x88,
0x36,0xd0,0x94,0xce,0x8f,0x96,0xdb,0xbd,0xf1,0xd2,0x13,0x5c,0x83,0x38,0x46,0x40,
0x1e,0x42,0xb6,0xa3,0xc3,0x48,0x7e,0x6e,0x6b,0x3a,0x28,0x54,0xfa,0x85,0xba,0x3d,
0xca,0x5e,0x9b,0x9f,0x0a,0x15,0x79,0x2b,0x4e,0xd4,0xe5,0xac,0x73,0xf3,0xa7,0x57,
0x07,0x70,0xc0,0xf7,0x8c,0x80,0x63,0x0d,0x67,0x4a,0xde,0xed,0x31,0xc5,0xfe,0x18,
0xe3,0xa5,0x99,0x77,0x26,0xb8,0xb4,0x7c,0x11,0x44,0x92,0xd9,0x23,0x20,0x89,0x2e,
0x37,0x3f,0xd1,0x5b,0x95,0xbc,0xcf,0xcd,0x90,0x87,0x97,0xb2,0xdc,0xfc,0xbe,0x61,
0xf2,0x56,0xd3,0xab,0x14,0x2a,0x5d,0x9e,0x84,0x3c,0x39,0x53,0x47,0x6d,0x41,0xa2,
0x1f,0x2d,0x43,0xd8,0xb7,0x7b,0xa4,0x76,0xc4,0x17,0x49,0xec,0x7f,0x0c,0x6f,0xf6,
0x6c,0xa1,0x3b,0x52,0x29,0x9d,0x55,0xaa,0xfb,0x60,0x86,0xb1,0xbb,0xcc,0x3e,0x5a,
0xcb,0x59,0x5f,0xb0,0x9c,0xa9,0xa0,0x51,0x0b,0xf5,0x16,0xeb,0x7a,0x75,0x2c,0xd7,
0x4f,0xae,0xd5,0xe9,0xe6,0xe7,0xad,0xe8,0x74,0xd6,0xf4,0xea,0xa8,0x50,0x58,0xaf,
};

static const unsigned char g0exp[256]  = {
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1d,0x3a,0x74,0xe8,0xcd,0x87,0x13,0x26,
0x4c,0x98,0x2d,0x5a,0xb4,0x75,0xea,0xc9,0x8f,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,
0x9d,0x27,0x4e,0x9c,0x25,0x4a,0x94,0x35,0x6a,0xd4,0xb5,0x77,0xee,0xc1,0x9f,0x23,
0x46,0x8c,0x05,0x0a,0x14,0x28,0x50,0xa0,0x5d,0xba,0x69,0xd2,0xb9,0x6f,0xde,0xa1,
0x5f,0xbe,0x61,0xc2,0x99,0x2f,0x5e,0xbc,0x65,0xca,0x89,0x0f,0x1e,0x3c,0x78,0xf0,
0xfd,0xe7,0xd3,0xbb,0x6b,0xd6,0xb1,0x7f,0xfe,0xe1,0xdf,0xa3,0x5b,0xb6,0x71,0xe2,
0xd9,0xaf,0x43,0x86,0x11,0x22,0x44,0x88,0x0d,0x1a,0x34,0x68,0xd0,0xbd,0x67,0xce,
0x81,0x1f,0x3e,0x7c,0xf8,0xed,0xc7,0x93,0x3b,0x76,0xec,0xc5,0x97,0x33,0x66,0xcc,
0x85,0x17,0x2e,0x5c,0xb8,0x6d,0xda,0xa9,0x4f,0x9e,0x21,0x42,0x84,0x15,0x2a,0x54,
0xa8,0x4d,0x9a,0x29,0x52,0xa4,0x55,0xaa,0x49,0x92,0x39,0x72,0xe4,0xd5,0xb7,0x73,
0xe6,0xd1,0xbf,0x63,0xc6,0x91,0x3f,0x7e,0xfc,0xe5,0xd7,0xb3,0x7b,0xf6,0xf1,0xff,
0xe3,0xdb,0xab,0x4b,0x96,0x31,0x62,0xc4,0x95,0x37,0x6e,0xdc,0xa5,0x57,0xae,0x41,
0x82,0x19,0x32,0x64,0xc8,0x8d,0x07,0x0e,0x1c,0x38,0x70,0xe0,0xdd,0xa7,0x53,0xa6,
0x51,0xa2,0x59,0xb2,0x79,0xf2,0xf9,0xef,0xc3,0x9b,0x2b,0x56,0xac,0x45,0x8a,0x09,
0x12,0x24,0x48,0x90,0x3d,0x7a,0xf4,0xf5,0xf7,0xf3,0xfb,0xeb,0xcb,0x8b,0x0b,0x16,
0x2c,0x58,0xb0,0x7d,0xfa,0xe9,0xcf,0x83,0x1b,0x36,0x6c,0xd8,0xad,0x47,0x8e,0x00,
};
#define glog(x) __LPM(&g0log[x])
#define gexp(x) __LPM(&g0exp[x])

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-7-1 20:21:32 | 显示全部楼层
桂电小手 发表于 2015-7-1 19:20
我移植了也是扫描不出来,但是我在qrencode.c 里并没有找到你蓝色注释掉的两句话

不知道这个二维码用LED点阵屏(静态扫描), 用64*64点的点阵屏, 不知道可行不. 想做个只显示二维码的单色点阵屏, 就是不知道可行不.

出0入0汤圆

发表于 2015-7-2 09:04:41 | 显示全部楼层
桂电小手 发表于 2015-7-1 19:20
我移植了也是扫描不出来,但是我在qrencode.c 里并没有找到你蓝色注释掉的两句话

你的显示二维码函数是用哪种方法?感觉你显示出来的不对的。。没有蓝色选中的那个代码,就不用管了。主要可能还是你的显示那边问题。

出0入0汤圆

发表于 2015-7-2 15:28:22 | 显示全部楼层
XUEPENGBIN 发表于 2015-7-2 09:04
你的显示二维码函数是用哪种方法?感觉你显示出来的不对的。。没有蓝色选中的那个代码,就不用管了。主要 ...

这是我的显示函数,PutByte(,,) 就是在指定位置横向显示

//显示QR基本框架.
  for(y=0;y<WDB;y++)
  {
    for(x=0;x<WD;x++)
    {         
      data1 = framebase[x*WDB+y];
      for(l=0;l<8;l++)
      {
        data2 <<= 1;
        if(data1&0x01) data2|=0x01;
        data1 >>= 1;
      }
      PutByte(y*8+ax,x+ay,data2);
    }
  }
  //计算QR码.
  strcopy(strinbuf,"www.baidu.com");
  qrencode();
  //显示QR计算结果.
  for (i = 0; i < WDB; i++)
  {
    for (j = 0; j < WD; j++)
    {
      data1 = 0;
      for (k = 0; k < 8; k++)
      {
        data1 |= QRBIT(j, ((i*8)+k)) << k;
      }
      PutByte(i*8+ax,j+ay,data1);
    }
  }

出0入0汤圆

发表于 2015-7-2 15:34:06 | 显示全部楼层
这个不错,赞

出0入0汤圆

发表于 2015-7-2 15:36:30 | 显示全部楼层
XUEPENGBIN 发表于 2015-7-2 09:04
你的显示二维码函数是用哪种方法?感觉你显示出来的不对的。。没有蓝色选中的那个代码,就不用管了。主要 ...

现在我发现用淘宝、支付宝都可以扫出来,用微信QQ就不行了

出0入0汤圆

发表于 2015-7-2 15:36:47 | 显示全部楼层
桂电小手 发表于 2015-7-2 15:28
这是我的显示函数,PutByte(,,) 就是在指定位置横向显示

//显示QR基本框架.

你的代码不对。直接用15楼的 显示QR代码。。这个是我测试了好久才正常的。。

出0入0汤圆

发表于 2015-12-21 17:01:06 | 显示全部楼层
请问下楼主如何生成版本信息的 Version.c,要自己画么?那掩码怎么选?

出0入0汤圆

发表于 2015-12-21 17:25:09 | 显示全部楼层
谢谢楼主!!!

出0入0汤圆

发表于 2015-12-21 20:54:45 | 显示全部楼层
谢谢楼主的资料

出0入0汤圆

发表于 2016-1-4 14:45:03 | 显示全部楼层
QR PDF417 mark

出0入0汤圆

发表于 2016-6-23 18:22:17 | 显示全部楼层
本帖最后由 tianxiaoMCU 于 2016-6-23 18:24 编辑

        我也捣鼓这玩意了,使用version71。
        显示framebase的时候是正确的,说明我的显示函数没问题,
       

        但是显示qrframe没法扫描到。
       
       
        qrencode函数在有几个变量的定义不是在函数开始的地方,编译时报错了,我就把它们移到前面去,这个应该没有影响吧。
        代码调用如下,没多少东西;
       

        请大伙帮忙看看。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-6-24 09:32:57 | 显示全部楼层
tianxiaoMCU 发表于 2016-6-23 18:22
我也捣鼓这玩意了,使用version71。
        显示framebase的时候是正确的,说明我的显示函数没问题,
       

还真是不能改qrencode里的那些不在开头定义的变量的位置啊 ,现在好了

出0入0汤圆

 楼主| 发表于 2016-6-24 11:32:24 | 显示全部楼层
tianxiaoMCU 发表于 2016-6-24 09:32
还真是不能改qrencode里的那些不在开头定义的变量的位置啊 ,现在好了  ...

这个OLED屏够大,够清晰

出0入0汤圆

发表于 2016-6-27 11:06:13 | 显示全部楼层
mark一下,可能要用到的

出0入4汤圆

发表于 2016-6-27 11:49:04 | 显示全部楼层
好资料,会用到

出0入0汤圆

发表于 2017-5-25 00:57:09 来自手机 | 显示全部楼层
tianxiaoMCU 发表于 2016-6-24 09:32
还真是不能改qrencode里的那些不在开头定义的变量的位置啊 ,现在好了  ...

今天移植到keil也发现了,变量定义的位置改在开头就不正常,什么原因

出0入0汤圆

发表于 2017-5-25 17:43:54 | 显示全部楼层
准备用到,先收藏了,好帖子

出0入0汤圆

发表于 2017-5-25 19:41:03 | 显示全部楼层
桂电小手 发表于 2017-5-25 00:57
今天移植到keil也发现了,变量定义的位置改在开头就不正常,什么原因

那是C99的规则,要么改到开头,要么使能C99标准

出0入0汤圆

发表于 2017-5-26 23:34:36 | 显示全部楼层
tianxiaoMCU 发表于 2017-5-25 19:41
那是C99的规则,要么改到开头,要么使能C99标准

改到开头运行结果不正常。我现在改成C99可以

出0入0汤圆

发表于 2017-5-27 00:14:05 来自手机 | 显示全部楼层
记着,应该会用到

出0入0汤圆

发表于 2017-9-15 12:38:24 | 显示全部楼层
好资源,希望能做成标准库。

出0入0汤圆

发表于 2017-9-17 20:22:10 | 显示全部楼层
学习学习

出0入8汤圆

发表于 2017-9-18 07:06:11 来自手机 | 显示全部楼层
好资源,希望能做成标准库。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 09:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表