如何读取 python 中的条形码?

How to read barcodes in python?

我正在做一项学校作业 "smartfridge",为了登记冰箱中的产品,我正在使用 MCR12-USB 条形码扫描仪:https://www.adafruit.com/product/1203。 连接到 raspberry pi 型号 B3+

我想将条形码放入变量中以使用 UPC api 进行查找。 任何获取条形码的方法都可以。

我尝试获取带有输入字段的条形码(条形码设置为键盘;hidraw0)。 但是这种方法的问题是光标不会自动位于输入字段中。

现在我正尝试通过串行接口(条码设置为 RS232)从 reader 获取条码,但我无法正常工作,我真的不知道哪个端口要打开,我试过 serial0、serial1、ttyAMA0 和 ttyS0,但在所有这些上我只得到一个空行。

import requests
import serial

def barcode():
    with serial.Serial('/dev/serial0', 9600, timeout=1) as port:
        while True:

            print(port.name)
            line = port.readline()
            print(line)
            url = "https://api.upcdatabase.org/product/%s/%s" % (line, api_key)

            headers = {
                'cache-control': "no-cache",
            }

            response = requests.request("GET", url, headers=headers)

            print("-----" * 5)
            print(line)
            print(json.dumps(response.json(), indent=2))
            print("-----" * 5 + "\n")

我希望输出是条形码,但我只得到一个空行

默认情况下,您的设备被 Rpi 视为键盘。如果要将USB用作串口,则必须更改配置。

按照以下步骤操作:

-在新的终端上写:xinput list并找到条形码的IDreader(一个数字,id=3或10,你应该通过名称找到它)

-然后写:xinput test xx 其中xx是你在上一步得到的数字

-现在扫描手册第 3 页顶部的条码,直到您看到 02501 出现在终端

-接下来扫描12页面中间的条码,直到看到000603出现在终端

现在断开并重新连接您的 reader,当您执行 ls /dev/tty* 时,您应该会看到 /dev/ttyUSB0。这意味着您的设备已准备好用作虚拟串行端口,您的代码现在应该可以工作了。