【发布时间】:2019-06-11 16:20:42
【问题描述】:
对于学校作业,我正在制作“智能冰箱”,要在冰箱中注册产品,我正在使用 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 时会发生什么?
-
我收到一个 json 响应
-
尝试在 GET 调用之前打印
url。在 GET 调用之后,只需打印response另外,您是否看到任何异常? -
产品文档说设备提供条形码作为键盘输入:
When a barcode is scanned, the raw data is decoded, parity-checked and spit out as if they were typed on a keyboard.您是否尝试过不使用串行和读取条形码的方式与读取键盘输入的方式相同?只是在黑暗中拍摄,但通常答案隐藏在文档中。 -
@BrandonTweed 当我这样做时出现错误:serial.serialutil.SerialException: 无法配置端口:(22, 'Invalid argument')