精华内容
下载资源
问答
  • 资源介绍:易语言生成二维码模块源码资源作者:三叶自学网资源界面:资源下载:
  • 易语言生成二维码模块源码 系统结构:快速生成二维码,取位图图象顶点, ======程序集1 | | | |------ _启动子程序 | | | |------ _临时子程序 | | | |------ 快速生成二维码 | | | |------ 取位图图象顶
  • STM32F103ZET6控制二维码模块GM65(扫描数据为123任意排列组合,可自己修改需要扫描内容)
  • 易语言生成二维码模块源码
  • 利用该代码可以实现为一个页面添加一个二维码模块,用手机扫描即可进入相关网页
  • LOGO二维码模块.ec

    2021-10-15 16:43:44
    可设置logo 的二维码模块,LOGO图片可以自定义位置,可调整logo以及二维码的大小。调用画板组件
  • 易语言二维码生成模块(无需联网)简单易用 生成效率高
  • 易语言源码易语言生成二维码模块源码.rar 易语言源码易语言生成二维码模块源码.rar 易语言源码易语言生成二维码模块源码.rar 易语言源码易语言生成二维码模块源码.rar 易语言源码易语言生成二维码模块源码.rar ...
  • LOGO二维码模块.e

    2021-10-07 11:55:44
    此为易语言模块源码。可在二维码中间添加logo,可自定义LOGO路径、大小、格式。需要调用传递画板组件
  • 在论坛中有前辈发了中间留白的二维码模块源码,但是不能添加logo。前段时间就修改了一下源码,实现了添加logo的功能。 调用此函数时需要传递画板组件供模块使用。 logo图片可以自定义文件位置,不必固化到程序内,...
  • 易语言生成二维码模块源码 三叶自学网
  • qrcode模块安装 运行命令行工具(cmd),使用pip安装工具分别安装qrcode。 pip install qrcode 先来个简单的例子 import qrcode # 二维码内容 data = "hello world" # 生成二维码 img = qrcode....

    qrcode模块安装

    运行命令行工具(cmd),使用pip安装工具分别安装qrcode。

    pip install qrcode 

     

    先来个简单的例子

    import qrcode
    
    # 二维码内容
    data = "hello world"
    # 生成二维码
    img = qrcode.make(data=data)
    # 直接显示二维码
    img.show()
    # 保存二维码为文件
    # img.save("hello.jpg")

    效果

     

    我们来修改配置等

    import qrcode
    
    # 二维码内容
    data = "hello world"
    
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_L,#二维码的纠错范围
        box_size=10,# 每个点(方块)中的像素个数
        border=4#二维码距图像外围边框距离,默认为4,而且相关规定最小为4
    )
    
    qr.add_data(data)
    qr.make(fit=True)
    
    # 生成二维码
    img = qr.make_image()
    # 直接显示二维码
    img.show()
    # 保存二维码为文件
    # img.save("hello.jpg")

     

     安装pyzbar

    pip install pyzbar

    来测试

    import pyzbar.pyzbar as pyzbar
    from PIL import Image,ImageEnhance
    
    
    image = "hello.jpg"
    
    img = Image.open(image)
    
    #img = ImageEnhance.Brightness(img).enhance(2.0)#增加亮度
    
    #img = ImageEnhance.Sharpness(img).enhance(17.0)#锐利化
    
    #img = ImageEnhance.Contrast(img).enhance(4.0)#增加对比度
    
    #img = img.convert('L')#灰度化
    
    img.show()
    
    barcodes = pyzbar.decode(img)
    
    for barcode in barcodes:
        barcodeData = barcode.data.decode("utf-8")
        print(barcodeData)

     

    测试一下

     

     

    python3 + opencv +pyzbar 摄像头检测二维码并获取二维码内容

    https://blog.csdn.net/zx66zx/article/details/82785334

    # coding:utf8
     
    import cv2
    import pyzbar.pyzbar as pyzbar
     
    def decodeDisplay(image):
        barcodes = pyzbar.decode(image)
        for barcode in barcodes:
            # 提取条形码的边界框的位置
            # 画出图像中条形码的边界框
            (x, y, w, h) = barcode.rect
            cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
     
            # 条形码数据为字节对象,所以如果我们想在输出图像上
            # 画出来,就需要先将它转换成字符串
            barcodeData = barcode.data.decode("utf-8")
            barcodeType = barcode.type
     
            # 绘出图像上条形码的数据和条形码类型
            text = "{} ({})".format(barcodeData, barcodeType)
            cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
                        .5, (0, 0, 125), 2)
     
            # 向终端打印条形码数据和条形码类型
            print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
        return image
     
     
    def detect():
     
        camera = cv2.VideoCapture(0)
     
        while True:
            # 读取当前帧
            ret, frame = camera.read()
            # 转为灰度图像
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            im=decodeDisplay(gray)
     
            cv2.waitKey(5)
            cv2.imshow("camera", im)
     
        camera.release()
        cv2.destroyAllWindows()
     
     
    if __name__ == '__main__':
        detect()

     

    转载于:https://www.cnblogs.com/libra13179/p/11114432.html

    展开全文
  • GM65二维码识别模块简要设置。GM65串口通讯设置,波特率设置。
  • 摘要: 详解 Python qrcode 二维码模块。 项目地址 https://github.com/lincolnloop/python-qrcode 声明 import qrcode 使用 QRCode 方法   参数解释 1、version:控制二维码的大小,取值范围从1...

    原文链接

    摘要: 详解 Python qrcode 二维码模块。

    项目地址

    https://github.com/lincolnloop/python-qrcode
    

    声明

    import
     qrcode
    

    使用

    QRCode 方法

     

    image

    参数解释

    1、version:控制二维码的大小,取值范围从1到40。取最小值1时,二维码大小为21*21。取值为 None (默认)或者使用fit=true参数(默认)时,二维码会自动调整大小。

    2、error_correction:控制二维码纠错级别。

    ERRORCORRECTL:大约7%或者更少的错误会被更正。
    ERRORCORRECTM:默认值,大约15%或者更少的错误会被更正。
    ERRORCORRECTQ:大约25%或者更少的错误会被更正。
    ERRORCORRECTH:大约30%或者更少的错误会被更正。
    3、box_size:控制二维码中每个格子的像素数,默认为 10。

    4、border:控制二维码四周留白包含的格子数,默认为4。

    5、image_factory:选择生成图片的形式,默认为 PIL 图像。

    6、mask_pattern:选择生成图片的的掩模。

    方法属性解释

    常用方法:

    1、add_data(str,optimize=20):添加要转换的文字到data参数;如果使用了optimize优化参数,数据将被拆分为多个块来进行优化,以找到一个长度至少为这个值的足够简洁的方式来生成二维码。设置为“0”以避免优化。

    2、make(fit=True):当fit参数为真或者没有给出version参数时,将会调用bestfit方法来找到适合数据的最小尺寸。如果没有设置maskpattern,将会调用bestmaskpattern方法来找到找到最有效的掩模图案。最后将这些数据传递给makeImpl方法来生成二维码。与qrcode本体的make方法不一样的是,这个方法没有任何返回值。

    3、makeimage(fillcolor=None, backcolor=None,imagefactory=None):创建二维码的图像并返回,默认为 PIL 图像。如果要让二维码有颜色,可以在这里设置。

    4、clear:清空数据

    5、get_matrix:返回二维码数组。

    6、print_ascii(out=None, tty=False, invert=False):这个方法就比较有趣了,可以用字符画的形式来输出二维码,但是扫的时候一般都扫不出来。

     

    image

    其中的invert参数是决定是否反转颜色的参数,默认为假,如果为真的话会这样:

     

    image

    其他方法:

    1、bestfit(start=self.version):找到适合数据所需的最小尺寸。

    2、bestmaskpattern():找到最有效的掩模图案。

    3、makeImpl(test, maskpattern):生成二维码的直接函数

    4、mapdata:(内部函数,无需了解)

    5、printtty(out=None):用TTY颜色输出二维码,如果没有给出out参数,会使用sys.stdout。

    6、setuppositionadjustpattern:(内部函数)

    7、setuppositionprobepattern:(内部函数)

    8、setuptimingpattern:(内部函数)

    9、setuptypeinfo:(内部函数)

    10、setuptypenumber:(内部函数)

    属性:

    1、border:

    2、boxsize:

    3、datacache:

    4、datalist:

    5、errorcorrection:

    6、imagefactory:

    7、maskpattern:

    8、modules:

    9、modules_count:

    10、version:

    生成 SVG 图像

    qrcode可以生成三种不同的svg图像,一种是用路径表示的svg,一种是用矩形集合表示的完整svg文件,还有一种是用矩形集合表示的svg片段。第一种用路径表示的svg其实就是矢量图,可以在图像放大的时候可以保持图片质量,而另外两种可能会在格子之间出现空隙。

    这三种分别对应了svg.py中的SvgPathImage、SvgImage和SvgFragmentImage类。在调用qrcode.make函数或者实例化QRCode时当作image_factory参数的值传入就可以了。

     

    image

    生成 PNG 图像

    执行命令安装pymaging相关模块:

     

    image

    然后给image_factor参数传入qrcode.image.pure.PymagingImage就可以生成PNG图片了。

     

    image

    这是作者推荐的方式,但是我个人认为,完全没有必要这么麻烦,直接用默认的 PIL 就可以获取 PNG 图片了,例子看下文。

    make 方法

    make方法实际上就是在内部调用了QRCode(要转换的文本).make_image(),最后(默认)返回了一个PIL图像对象。

    # 显示图片qrcode.make("hello world!").show()
    # 保存 PNG 图片qrcode.make("hello world!").save('hello.png')
    

    run_example 方法

    生成一个作者项目网站地址的二维码并显示出来。

    原文发布时间为:2018-07-24
    本文作者:以茄之名
    本文来自云栖社区合作伙伴“ Python中文社区”,了解相关信息可以关注“ Python中文社区

    展开全文
  • 这个资料是条形码二维码扫描识别模块GM65在STM32F103ZET6上示例程序,主要用到的是串口通信和触摸屏显示器。
  • 由于项目需要用到二维码模块,因而在Android平台下写了一个测试程序用于调试二维码模块。开发中使用串口与二维码模块通信,接口使用的是FriendlyARM的JIN以及共享库friendlyarm-hardware.so,

    由于项目需要用到二维码模块,因而在Android平台下写了一个测试程序用于调试二维码模块。开发中使用串口与二维码模块通信,由于要调用到底层文件,又不想自己写接口函数,接口使用的是FriendlyARM的JIN以及共享库friendlyarm-hardware.so。本来需要使用一个按键控制二维码模块扫描,但是设备上不好外接按键,所以用一个GPIO口模拟扫描按键,代码不是很多,经过测试可以读出条形码和二维码。


    package com.example.serial;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.text.method.ScrollingMovementMethod;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.WindowManager;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.friendlyarm.AndroidSDK.HardwareControler;
    import com.hardware.Hardware;
    
    public class MainActivity extends Activity {
    
        TextView recvView;
        private Button stopButton;
        private Button recvButton;
        private Button scanButton;
        private Button cancelButton;
    
        private int fd = 0;
    
        String thread = "readThread";
        String choosed_serial = "/dev/s3c2410_serial2";//设置串口号
        int choosed_buad = 9600;//设置波特率
        byte[] buf= new byte[100];
        int count=0;
        Hardware gpio;//GPIO控制
        
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
                    
            gpio = new Hardware();
            System.out.println("openGPIO:"+gpio.openGPIO());
            gpio.setGPIO(1, 0);//通过设置GPIO控制模块电源
            gpio.setGPIO(0, 1);//通过设置GPIO控制模块扫描
          
            fd = HardwareControler.openSerialPort(choosed_serial,choosed_buad, 8, 1);//打开串口
    
            if (fd != -1) 
            {
    
                Toast.makeText(getApplicationContext(), "成功打开串口:"+choosed_serial, 1).show();
    
            }
            else 
            {
                Toast.makeText(this,"无法打开串口", 1).show();
    
            }
    
            stopButton = (Button)findViewById(R.id.stopButton);
            stopButton.setText("关闭");
    
            stopButton.setOnClickListener(new ClickEvent());
            
            scanButton = (Button)findViewById(R.id.scanButton);
            scanButton.setText("扫描");
            scanButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    // TODO Auto-generated method stub
                	gpio.setGPIO(0, 1);
                }
    
            });
            
            cancelButton = (Button)findViewById(R.id.cancel);
            cancelButton.setText("取消");
            cancelButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    // TODO Auto-generated method stub
                	gpio.setGPIO(1, 1);
                }
    
            });
    
            recvButton = (Button)findViewById(R.id.sendButton);//发送消息
            recvButton.setText("接收数据");
    
            recvButton.setOnClickListener(new OnClickListener() {
    
                public void onClick(View arg0) {
    
                    // TODO Auto-generated method stub
                	
                    new readThread().start();//开始串口的监听线程
                }
    
            });
    
            recvView = (TextView)findViewById(R.id.commucation_window);
    
    
        }
    
    
        public class ClickEvent implements Button.OnClickListener//退出
    
        {
    
            public void onClick(View arg0) {
    
                // TODO Auto-generated method stub
            	 gpio.setGPIO(1, 0);
                android.os.Process.killProcess(android.os.Process.myPid());
    
                System.exit(0);
    
            }
    
        }
        public static final String bytesToHexString(byte[] bArray) {
            StringBuffer sb = new StringBuffer(bArray.length);
            String sTemp;
            for (int i = 0; i < bArray.length; i++) {
             sTemp = Integer.toHexString(0xFF & bArray[i]);
             if (sTemp.length() < 2)
              sb.append(0);
             sb.append(sTemp.toUpperCase());
            }
            return sb.toString();
        }
    
        Handler handler = new Handler() {
    
            public void handleMessage(Message msg) {
    
            	byte[] buf= new byte[100];
            	if(count%10==0){
            		recvView.setText(null);
            	}
    	                int len = HardwareControler.read(fd, buf, 100);
    	                System.out.println("len:"+len);
    	                System.out.println(bytesToHexString(buf)+"\n");
    	                System.out.println(buf[0]+"\n");
    
    	                byte[] newbuf = new byte[len];
    	                for(int i=0;i<len;i++){
    	                	newbuf[i]=buf[i];
    	                }
    		                String string = new String(newbuf, 0, len);
    	
    		                if(string!=null){
    	
    		                	gpio.setGPIO(1, 1);
    		                	recvView.append(bytesToHexString(newbuf)+"\n");
    			                count++;
    			                System.out.println(count);
    	                
    		                }
    		        Log.d(thread,string);
    	                new readThread().start();//处理完消息后立即开启读取线程
            }
    
        };
        
    
        class readThread extends Thread//监听串口信息线程
        {        
            public void run()
            {
                Message msg = new Message();
    
                HardwareControler.setLedState(0, 0);
    	            if (HardwareControler.select(fd,5, 0)==1) {            
    	
    	                try {
    						Thread.sleep(100);
    					} catch (InterruptedException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    			System.out.println(">>>>>>>>>sendMessage");
    	            	handler.sendMessage(msg);
    	            	System.out.println("<<<<<<<<<<sendMessage");
    	            }
    	            else
    	            {
    	            	new readThread().start();
    	            }
            }
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    }


    展开全文
  • 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) ...上一节,我们编写了contact模块,极大的简化了联系人的获取,而且提供了两种方式,一种是通过手机内置app获...

    这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章:

    Android最佳实践(一)

    android最佳实践(二)

    android最佳实践(三)

    android最佳实践(四)

    android最佳实践(五)

    上一节,我们编写了contact模块,极大的简化了联系人的获取,而且提供了两种方式,一种是通过手机内置app获取联系人手机号码,另外一种是通过自写UI,来获取得到联系人手机号码。
    这一节,我们将会编写qrcode模块,该模块致力于简化扫描二维码的代码编写,同时也加上了Android 6.0的动态权限检查。

    那么我们开始吧。

    多模块的管理

    现阶段,我们已经有两个模块了,那么其对应得buildToolsVersion等都是一样,那以后模块多了,更改这些参数是不是会非常麻烦,有人说了我可以在project中定义变量,然后在各个子模块中引用,那么真的有必要吗,是否有更简单的办法。

    下面是我的project中的build.gradle文件,其含义是除了app模块,其他子模块一律为依赖模块,且定义了一些参数和内部库,当我们的子模块有自己特殊的库,你需要复写dependencies就可以了。

    subprojects{
        configure(allprojects - project(':app')) {
            apply plugin: 'com.android.library'
            android {
                compileSdkVersion 23
                buildToolsVersion '23.0.2'
    
                defaultConfig {
                    minSdkVersion 16
                    targetSdkVersion 23
                    versionCode 1
                    versionName "1.0"
                }
                lintOptions {
                    abortOnError false
                }
            }
            dependencies {
                testCompile 'junit:junit:4.12'
                compile 'com.android.support:appcompat-v7:23.1.1'
            }
            apply from: '../gradle/maven_push.gradle'
        }
    }
    

    那么例如我们的扫描二维码模块,你就应该在该子模块的gradle文件中添加如下代码:

    dependencies{
        compile 'com.google.zxing:core:3.2.0'
    }
    

    该含义为添加google提供的zxing依赖包,大家可以根据zxing依赖包进行二次开发,但是你会发现,使用zxing难度颇大,为何没有人进行其相关的二次封装,我能够更简单的调用呢,这就是我写该模块的目的。

    工厂模式

    该模块使用工厂模式,将实现和接口分离,同时为未来提供多样化的产品带来可能,用户可定制扫描二维码界面。同时提供了,该模块适合于activity和fragment以及v4包中的fragment。

    用法

    在你的activity或者你的fragment中调用:

    QrcodeFactory.newQrcode(this).start();
    

    因为该方法会调用相关的界面,所以如果你想接收数据,需要在该类中重写onActivityResult方法,在该方法内部调用QrCode模块的onActivityResult方法。例如这样:

    @Override
        public void onActivityResult(int requestCode, int resultCode, final Intent data) {
            mQrcode.onActivityResult(requestCode, resultCode, data, new QrcodeCallback() {
                @Override
                public void onSuccess(@NonNull QrcodeInfo info) {
                    String textInfo = "二维码信息" + info.getResult() + "图片高度" + info.getHeight() + "图片宽度" + info.getWidth();
                    mText.setText(textInfo);
                    mImageView.setImageBitmap(info.getQrCodeImage());
                }
    
                @Override
                public void onFailed(@NonNull String errMsg) {
                    mText.setText(errMsg);
                }
            });
        }
        

    当你的app需要Android6.0的适配,你需要对获取动态权限结果,你需要在该类中重写onRequestPermissionsResult方法,例如这样:

    @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            mQrcode.onRequestPermissionsResult(requestCode, permissions, grantResults, new com.neu.qrcode.callback.PermissionResultCallback() {
                @Override
                public void denyPermission() {
                    mText.setText("App无权限");
                }
            });
        }
    

    后续

    扫描二维码模块,因为每个公司都想有自己的扫描界面,所以自定义化扫描界面显得尤为重要,而利用camera自定义扫描界面,代码量和难度颇大,该项目后续会添加部分UI模板,适用于扫描界面的定制。大家可以fork或star我的github,https://github.com/neuyu/android-best-practices

    展开全文
  • 前言 该模块是小编在做工程实训的物流小车所用,当时因为某些特殊原因,不得不放弃视觉识别,...因为工训的二维码内容位数字,如123,所以测试时小编自己生成了一个二维码123+321这种,故一下代码均以此来写的。 首先us
  • 二维码扫描模块使用的是窜口通信,可以使用USB转TTL配合微信小程序(二维码生成器)生成二维码模块RXD,TXD一定要跟TTL的RXD,TXD反接,使用窜口调休助手就可以观察二维码扫描模块的的效果 STM32搭配二模块扫描...
  • GM65二维码条形码的识别模块的使用方法与说明。
  • python模块之MyQR——制作个性化二维码

    万次阅读 多人点赞 2019-11-28 12:34:31
    MyQR模块可以生成个性化的二维码图片。 安装MyQR 如果没有安装,那么就需要安装:pip install MyQR。 MyQR安装成功判断 模块使用 模块参数介绍 myqr.run()函数里面的参数如下: 参数 含义 详细 ...
  • dewo 二维码扫描设备开发文档,lib,源代码
  • 相关模块: pip install git+git://github.com/ojii/pymaging.git#egg=pymaging pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png 然后给 image_factor 参数传入 qrcode.image.pure....
  • 本资源是详细写明了 微光二维码扫码器的串口协议
  • arduino GM65扫码模块

    2019-01-23 22:02:40
    ARDUINO gm65扫码模块 + string强转 int 进行大小比较
  • 7D1F586E-602B-41FA-8C03-36FBC9F16506.png ...定义一个扫描二维码模块 模块名称 camera var camera = weex.requireModule('camera') API scanCode(callback) camera.scanCode(res=&gt;{ this....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,883
精华内容 17,953
关键字:

二维码模块