如何读取 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
。这意味着您的设备已准备好用作虚拟串行端口,您的代码现在应该可以工作了。
我正在做一项学校作业 "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
。这意味着您的设备已准备好用作虚拟串行端口,您的代码现在应该可以工作了。