Skip to main content

Kontinuirano čitanje barkodova

Što ovaj primjer prikazuje​

Primjer prebacuje skener u kontinuirani način rada, u kojem skener čita samostalno, bez tipke okidača i bez poziva startScan(). Usmjerite ga prema kodu i kod se ispisuje u konzoli. Primjer postavlja interval ponavljanja istog koda na 0,5 s.

Povežite pin 5 (TX) kontrolera na RX skenera i njegov pin 4 (RX) na TX skenera, uz 3V3 i GND, ili promijenite tx i rx tako da odgovaraju vašem spoju. Prvo prebacite skener na UART skeniranjem konfiguracijskog barkoda POR232.

Kod primjera​

from machine import UART
from de2120 import DE2120
import time

# Adjust tx and rx to match the pins you have wired on your board.
scanner = DE2120(tx=5, rx=4)

if not scanner.begin():
print("DE2120 not detected. Check wiring.")
raise SystemExit

# Enable continuous read with a 0.5 s repeat interval for the same barcode
scanner.enableContinuousRead(repeat_interval=2)

print("DE2120 in continuous read mode. Point at a barcode.")

while True:
barcode = scanner.readBarcode()
if barcode:
print("Scanned:", barcode)
time.sleep_ms(50)

🔗Otvorite cijeli primjer

Examples/de2120-continuousRead.py u commitu 848e03e

→

Očekivani rezultat:

ShellMicroPython
DE2120 in continuous read mode. Point at a barcode.

Svaki kod koji skener pročita ispisuje se kao Scanned:, a iza toga slijedi sadržaj koda. Kada skener ne odgovara, primjer ispisuje DE2120 not detected. Check wiring. i zaustavlja se.

Korištene funkcije​

DE2120(uart=None, tx=None, rx=None, uart_id=1)returns DE2120

Stvara objekt skenera. Proslijedite UART koji ste sami izradili kao uart ili proslijedite brojeve pinova tx i rx, pa modul na njima stvara UART(uart_id) brzinom 9600 baud. Ako nije zadano ništa od toga, javlja ValueError.

ReturnsObjekt skenera.

Parametri

TipNazivOpis
UARTuartGotov objekt machine.UART. Neobavezno.
inttxPin kontrolera koji šalje, spojen na RX skenera. Primjer koristi 5.
intrxPin kontrolera koji prima, spojen na TX skenera. Primjer koristi 4.
intuart_idKoji UART treba stvoriti kada proslijedite tx i rx. Zadano je 1.
scanner.begin()returns bool

Provjerava odgovara li skener. Postavlja UART na 9600 baud i traži verziju firmwarea. Ako nema odgovora, ponovno pokušava brzinom 115200 baud, nalaže skeneru da prijeđe na 9600 baud i ponovno pita. Nakon uspjeha prazni prijemni međuspremnik.

ReturnsTrue kada je skener odgovorio, False kada nije.

scanner.enableContinuousRead(repeat_interval=2)returns bool

Prebacuje skener u kontinuirani način rada (SCMCNT), u kojem čita bez okidača, i postavlja koliko se često isti kod ponovno šalje (CNTALW).

ReturnsTrue kada je skener potvrdio postavku intervala; False za vrijednost izvan raspona od 0 do 3.

Parametri

TipNazivOpis
intrepeat_intervalZa isti kod: 0 jedan izlaz, 1 bez odgode, 2 svakih 0,5 s, 3 svake 1 s. Zadano je 2; primjer prosljeđuje 2.
scanner.readBarcode()returns str or None

Prikuplja bajtove koje skener šalje i koji čekaju na čitanje. Skeniranje završava znakom za povratak na početak retka (carriage return); kada on stigne, funkcija vraća kod bez tog znaka. Pozivajte je opetovano u petlji. Jedan kod može imati najviše 256 bajtova.

ReturnsSkenirani kod ili None ako potpuno skeniranje još nije stiglo.

Sve zajedno​

Nakon što begin() pronađe skener, jedan poziv enableContinuousRead() mijenja njegov način čitanja. Od tada skener sam šalje kodove, a petlja ih samo prikuplja pomoću readBarcode() svakih 50 ms.

Za povratak na tipku okidača pozovite disableContinuousRead(), čime se skener ponovno prebacuje u ručni način rada.