我有二维码和条形码阅读器 GM875。我通过 uart 将其连接到树莓派 4 model b,并编写了 python 代码来获取结果,但它无法正常工作。从我的脚本中我得到错误的数据字节,如下所示:
Barcode Data: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...'
Barcode Data: b'\xe0\xe0\xe0\x00\xe0\xe0\x00\xe0\xe0\x00\xe0\xe0\xe0\x00\xe0\xe0\xe0\x00\xe0\xe0\x00\x00\xe0\xe0\x00\xe0\xe0\xe0\x00\xe0\xe0\xe0\x00\x00\xe0\x00\xe0\xe0\xe0\x00\x00\x00\xe0\x00\xe0\xe0\x00\x00\x00\xe0\xe0\xe0\xe0\x00\x00\xe0...'
Barcode Data: b'\xf8x\x00x\x80x\x00\xf8x\x80xxx\x80\x80x\x00\xf8x\x80x\xf8\x80\x80\xf8\x00xx\x80\x00x\xf8x\x80\x80xx\x80\x80x\x80xx\x80\x00\x80xxx\x80x\x00xx\x80x\x80xxxxx\xf8xxxxx\x80xx\x80x\x80\x80\x80\x00xxx\x80xxx\x00xx\x80\xf8x\xf8\x80x\xf8xxxx\x80x\x00x\x80x\x00x\x00x\xf8\x80\xf8\x00x\x00x\xf8\x00x\xf8xx\x80\x80x\x80\x80\x80xx\x80\xf8\xf8x\x80x\x00x\x00\x80xx\x80\x80\x80\x00\xf8x\xf8x\x80x\x00x\xf8xx\x80x\x80xxx\x80xx\x80x\xf8x\x80x\x00xxx\xf8x\x80\xf8xxx\xf8x\xf8x\xf8\x80x\x80x\x00'
Barcode Data: b'\xa5\xacj\x85\xd1\xb3\xe6]\xa6/\x92\x85\xae%J\x95\x91\xa4N\xd6I\xe1\xaf\x14\x89\x8a\x12\xe9\xa49\x14\xa5\x95\xa8\xd5\xe9\xa7v\x99\xb7L5\xe9\xb0\x8e\xb2M\xb7\xf6e\xb9&\x97+\x91\xb6\xa5\x8a\xa9\xa1\xba\x16\x95\xf9\xa9\xd5ku\x9d\xe3'
但是经过几次扫描后我得到了正确的数据:
Barcode Data: b'zcYlSQRlS3C/Fz0jIN+LVSTdre/ux/QJN9FjdeDPvMhPyrGdcF7cQczp99f+wfG1Y2tlsDvxYJ/jHzgQqniVnw==\n'
在正确的数据识别脚本停止后出现此错误:
Traceback (most recent call last):
File "/home/pi/qrcode_project/qrcode_rpi/t1.py", line 24, in <module>
read_from_scanner()
File "/home/pi/qrcode_project/qrcode_rpi/t1.py", line 13, in read_from_scanner
if ser.in_waiting > 0:
^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 549, in in_waiting
s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 5] Input/output error
这不是阅读器的问题,它可以在 ESP32 上正常工作,但在树莓派和 python 上有这个问题。我还允许在 RPI 上使用 uart
这是我使用的最简单的代码:
import serial
# Configure the serial connection (adjust parameters as needed)
ser = serial.Serial(
port='/dev/serial0', # Use /dev/serial0 for the Raspberry Pi UART
baudrate=9600, # Adjust baudrate to match your barcode reader's settings
timeout=1 # Timeout in seconds for read operations
)
def read_from_scanner():
try:
while True:
if ser.in_waiting > 0:
# Read data from the barcode scanner
data = ser.readline()
if data:
print(f"Barcode Data: {data}")
except KeyboardInterrupt:
print("Program interrupted. Closing..")
finally:
ser.close()
if __name__ == "__main__":
read_from_scanner()
我尝试在 C++ 上编写代码,但它也显示错误的数据,如 python 代码
这个答案对我有帮助 该错误消息表明这是硬件或驱动程序级别的问题。如果您看到“错误数据”,则可能表明您没有对 UART 的独占控制权。您是否在 raspi-config 中禁用了串行控制台?看到该错误后,您可以通过运行 sudo dmesg Linux 命令来显示内核日志来获取更多调试信息。检查最近是否提及串行或 uart,或任何其他似乎相关的错误