为了完成一项学校作业,我正在制作一个“智能冰箱”,为了在冰箱中注册产品,我正在使用 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/