如何在Python中读取条形码?

3
为了完成一项学校作业,我正在制作一个“智能冰箱”,为了在冰箱中注册产品,我使用了MCR12-USB条形码扫描仪:https://www.adafruit.com/product/1203。连接到一个树莓派模型B3+。
我想把条形码放在一个变量中,以便通过UPC api进行查找。 任何获取条形码的方法都可以。
我尝试使用输入字段(将条形码设置为键盘;hidraw0)获取条形码。 但是这种方法的问题是光标不会自动位于输入字段中。
现在,我正在尝试通过串行接口(将条形码设置为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")

我期望得到的输出是条形码,但我只得到了一行空白。翻译后的内容为:

我希望能够获得条形码的输出,但是实际上却只得到了一行空白。


当您对URL执行显式的REST GET操作时会发生什么? - undefined
在进行GET请求之前,尝试打印url。在GET请求之后,只需打印response。还有,你看到任何异常吗? - undefined
产品文档中提到该设备将条形码作为键盘输入提供:当扫描条形码时,原始数据会被解码、进行奇偶校验,并以键盘输入的方式输出。你尝试过不使用串口,以与读取键盘输入相同的方式读取条形码吗?这只是一个猜测,但通常答案都隐藏在文档中。 - undefined

@susenj 链接是:https://api.upcdatabase.org/product/b''/AC939DFDCBCA58BD57DF47EF508DE3B8 响应是:<Response [400]>

b'' { "error": true, "message": "错误请求。您尝试输入的代码不包含所有数字。", "status": 400 }

- undefined
从手册上我了解到,你需要将USB设置为虚拟串口,然后可以选择使用另一个独立的RS232接口。但是要使用这个接口,你需要将它与你的树莓派连接起来,似乎使用USB更简单一些。STMicroelectronics不是唯一的选择,还有其他选项吗? - undefined
显示剩余17条评论
1个回答

1

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

请按照以下步骤操作:

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

-然后写入:xinput test xx,其中xx是您在上一步中获得的数字

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

-接下来扫描第12页中间的条形码,直到您在终端上看到000603

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


当我输入xinput list时,它返回"无法连接到X服务器"。 - undefined
仍然返回相同的结果 - undefined
最新版本的Raspbian - undefined
但是你没有X窗口...你有另一台Linux电脑可以尝试吗? - undefined
我重新启动了我的树莓派,现在它运行得非常完美!谢谢你的帮助! - undefined
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接