Skip to main content

Slanje konfiguracijske naredbe

Što ovaj primjer prikazuje​

sendCommand() mijenja bilo koju postavku skenera, čak i onu za koju modul nema posebnu funkciju. Ovaj primjer uključuje i isključuje Code ID. Kad je Code ID uključen, skener ispred svakog koda stavlja identifikator simbologije (na primjer A za Code 128 i Q za QR Code), pa vaš program može razlikovati vrste barkodova.

Utipkajte y ili n u REPL kako biste ga uključili ili isključili. Primjer i dalje ispisuje skenirane kodove dok čeka vaš pritisak tipke.

Povežite pin 5 (TX) kontrolera sa RX skenera i njegov pin 4 (RX) s TX skenera, uz 3V3 i GND, ili promijenite tx i rx prema svom spoju. Prvo prebacite skener na UART skeniranjem konfiguracijskog barkoda POR232.

Primjer čita ulaz REPL-a bez blokiranja pomoću uselect i sys, koji nisu dio modula de2120; pogledajte MicroPythonovu dokumentaciju za select.

Kod primjera​

import sys
import uselect
from de2120 import DE2120
import time

scanner = DE2120(tx=5, rx=4)

if not scanner.begin():
print("Scanner did not respond. Check wiring. Did you scan the POR232 barcode?")
raise SystemExit

print("Scanner online!")

# Set up non-blocking stdin so we can poll for barcodes while waiting for input
poll = uselect.poll()
poll.register(sys.stdin, uselect.POLLIN)


def stdin_available():
return bool(poll.poll(0))


def flush_stdin():
while stdin_available():
sys.stdin.read(1)


while True:
flush_stdin()

print()
print("Transmit Code ID with barcode? (y/n)")
print("-------------------------------------")
print("Type 'y' or 'n', or scan a barcode:")

while not stdin_available():
barcode = scanner.readBarcode()
if barcode:
print("...")
print("Code found:", barcode)
time.sleep_ms(200)

cmd = sys.stdin.read(1)

if cmd == "y":
print("Code ID will be displayed on scan")
scanner.sendCommand("CIDENA", "1")
elif cmd == "n":
print("Code ID will NOT be displayed on scan")
scanner.sendCommand("CIDENA", "0")
else:
print("Command not recognized")

🔗Otvorite cijeli primjer

Examples/de2120-sendCommand.py na commitu 848e03e

→

Očekivani rezultat:

ShellMicroPython
Scanner online!

Transmit Code ID with barcode? (y/n)
-------------------------------------
Type 'y' or 'n', or scan a barcode:

Utipkajte y i primjer ispisuje Code ID will be displayed on scan; utipkajte n i ispisuje Code ID will NOT be displayed on scan. Svaka druga tipka ispisuje Command not recognized. Zatim se ponovno pojavljuje upit. Kod skeniran dok upit čeka ispisuje se kao ..., a zatim Code found: i sadržaj koda, s identifikatorom ispred koda kad je Code ID uključen.

Korištene funkcije​

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

Stvara objekt skenera. Proslijedite UART koji ste sami stvorili kao uart ili proslijedite brojeve pinova tx i rx pa modul na njima stvara UART(uart_id) brzine 9600 baud. Ako nema ni jednog ni drugog, podiže 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 stvoriti kad proslijedite tx i rx. Zadano 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 na 115200 baud, kaže skeneru da se prebaci na 9600 baud i ponovno pita. Nakon uspjeha prazni prijemni međuspremnik.

ReturnsTrue kad je skener odgovorio, False kad nije.

scanner.readBarcode()returns str or None

Prikuplja bajtove koji čekaju od skenera. Skeniranje završava znakom carriage return; kad on stigne, funkcija vraća kod bez njega. Jedan kod zadržava najviše 256 bajtova.

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

scanner.sendCommand(cmd, arg, max_wait_ms)returns bool

Šalje skeneru jednu konfiguracijsku naredbu, uokvirenu na način koji skener očekuje: ^_^, naredba, argument i završna točka (ovdje ^_^CIDENA1.). Zatim čeka odgovor skenera: ACK bajt (0x06) ili NACK bajt (0x15).

ReturnsTrue kod ACK-a; False kod NACK-a ili kad istekne max_wait_ms bez odgovora.

Parametri

TipNazivOpis
strcmdNaredba ili naziv svojstva, na primjer CIDENA (prijenos Code ID-a).
strargVrijednost, na primjer "1" za uključivanje ili "0" za isključivanje. Zadano prazno.
intmax_wait_msKoliko čekati odgovor, u milisekundama. Zadano 3000.

Sastavljanje cjeline​

Svaki prolaz petlje prvo isprazni sve tipke koje još čekaju, a zatim ispiše upit. Dok nijedna tipka ne stigne, poziva readBarcode() svakih 200 ms, pa se skeniranja i dalje prikazuju. Tipka y ili n postaje sendCommand("CIDENA", "1") ili sendCommand("CIDENA", "0").

Isti obrazac šalje bilo koju drugu postavku. Modul navodi one koje poznaje na vrhu datoteke de2120.py, na primjer BEPSUC (zvučni signal pri uspješnom dekodiranju, zadano 1) ili IMGREG (područje čitanja).