python - 如何在python中读取条形码?

标签 python barcode-scanner

为了完成一项学校作业,我正在制作一个“智能冰箱”,为了在冰箱中注册产品,我正在使用 MCR12-USB 条形码扫描仪:https://www.adafruit.com/product/1203 . 连接到树莓派型号 B3+

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

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

现在我正尝试通过串行接口(interface)(条码设置为 RS232)从阅读器获取条码,但我无法正常工作,我真的不知道打开哪个端口,我已经尝试了 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 并找到条形码阅读器的 ID(一个数字,id=3 或 10,你应该通过名称找到它)

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

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

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

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

关于python - 如何在python中读取条形码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56547986/

相关文章:

python - 如何连接两个数据框并留下未找到的空白项?

python - Cx_Freeze - 如何包含模块

Python App Engine 后端为 cron 工作,但如果我直接点击 url 则不会

python - 从字典键和值中获取元组列表

android - Ionic Native 条码扫描器无法在 Android 8 上运行

python - 没有名为 basemap 的模块

ios - Zxing条码扫描器PhoneGap插件iOS横向模式

android - Cordova,条码扫描器在 Android 中打开两次

iphone - 应用程序中的条形码识别

使用 Zxing 的 Android 条码扫描器