CircleCode
LAB

CircleCode

Oryginalny dwuwymiarowy kod kreskowy o geometrii polarnej na okrągłe etykiety 20–40 mm.

PROJECT
LAB-052
GEOMETRIA
POLARNA, Ø 20–40 mm
KOREKCJA
REED-SOLOMON GF(256)
KONTROLA
CRC-32
DRUK
ZPL · TSPL · EPL · PDF
STATUS
UKOŃCZONY
DATA
11 sierpnia 2026

Format zaprojektowany do znakowania reklamacji, zwrotów, paczek, części i dokumentów na okrągłych etykietach drukowanych na drukarkach termicznych 203/300 DPI i odczytywanych aparatem telefonu. To nie jest zdeformowany QR — ma własną geometrię, własny strumień bitów i własne wzorce pozycjonujące.

CIRCLECODE / SYMULACJA ODCZYTUDANE Z REALNEGO PRZEBIEGU cc-tool
GOTOWY
Wygenerowana etykieta CircleCode Ø30 mm

Ø 30 mm · 600 DPI · MODUŁ 0,381 mm

  1. 1DETEKCJA26 znaczników, 1 kandydat3.13 ms
  2. 2REKTYFIKACJAbłąd reprojekcji 0.337 px2.64 ms
  3. 3PRÓBKOWANIEmoduł 8.99 px0.47 ms
  4. 4DEKODOWANIERS: 0 korekcji, CRC poprawne0.12 ms
STATUS: —
TYP
NUMER

ADRES DOCELOWY · OZNACZONY JAKO BEZPIECZNY

████████████████████████████

GDYBY CRC NIE PRZESZŁO, W TYM MIEJSCU POJAWIŁBY SIĘ KOMUNIKAT „NIE MOŻNA ODCZYTAĆ” — NIGDY PRAWDOPODOBNY NUMER. TO JEST ZASADA FAIL-CLOSED.

KOD WYGENEROWANY POLECENIEM cc-tool encode --number RMA-2026-001245 --url … --diameter 30 --dpi 600 · ODCZYT: cc-tool decode
CIRCLECODEKOD 2D O GEOMETRII POLARNEJ
FAIL-CLOSED
WEJŚCIEDECYZJAPRZETWARZANIENARZĘDZIEWYJŚCIEKONTROLAODRZUCENIE ODCZYTU01DANETLV02DOBÓR WERSJI03CRC-32 + RSGF(256)04INTERLEAVING05MASKOWANIE06RENDER POLARNYsiatka kropek07DRUKZPL · TSPL · EPL08APARAT09POTOK CVwzorce pozycjonujące10WERYFIKACJA CRC
PRIORYTET 1: BRAK FAŁSZYWYCH ODCZYTÓW · CRC-32 NIE PRZESZŁO = „NIE MOŻNA ODCZYTAĆ”, NIGDY ZGADYWANIE
01

PROBLEM

Okrągła etykieta o średnicy 25 mm nie mieści czytelnego kodu QR w rozdzielczości drukarki termicznej. Wpisanie kwadratu w koło marnuje dużą część powierzchni, a zmniejszanie modułów poniżej fizycznej rozdzielczości głowicy daje kod, który wygląda dobrze na ekranie i nie odczytuje się z wydruku.

02

POMYSŁ

Zaprojektować format od zera pod okrągłą powierzchnię: dane rozłożone w pierścieniach, wzorce pozycjonujące dopasowane do geometrii polarnej, rozmiar modułu wyznaczony przez fizyczne możliwości drukarki termicznej.

Nad wszystkim jedna zasada — fail-closed, z jawną hierarchią priorytetów: brak fałszywych odczytów, niezawodne dekodowanie, odporność na wydruk, szybkość, rozmiar, wygląd. W tej kolejności, bez wyjątków.

03

PROJEKT

Projekt dzieli się na pięć bibliotek. Rdzeń obsługuje arytmetykę GF(256), kodowanie Reeda-Solomona, sumę CRC-32, format TLV, ramkę i geometrię. Koder odpowiada za maskowanie, przeplot i dobór wersji. Dekoder za odzyskanie formatu i logiczne odczytanie danych. Biblioteka druku renderuje w siatce kropek do PNG, BMP, SVG i PDF oraz generuje polecenia dla drukarek etykiet. Osobna biblioteka realizuje pełny potok widzenia komputerowego — z własną implementacją, przy czym OpenCV pozostaje opcjonalny.

Konsekwencje zasady fail-closed są widoczne w dwóch miejscach. Dekoder nigdy nie zgaduje: gdy CRC-32 nie przechodzi, użytkownik widzi komunikat „nie można odczytać”, a nie prawdopodobny numer reklamacji. Generator odmawia wygenerowania kodu, którego nie da się bezpiecznie wydrukować, zamiast zmniejszać moduły poniżej minimum głowicy.

Geometria polarna wymusiła własne wzorce pozycjonujące. W kodzie QR trzy kwadraty w narożnikach wyznaczają orientację i skalę; na okręgu nie ma narożników, więc rolę tę pełnią struktury pierścieniowe o znanej sygnaturze, wykrywalne niezależnie od obrotu etykiety pod aparatem.

04

REALIZACJA

Wszystkie pięć komponentów jest zaimplementowanych i przetestowanych. Repozytorium zawiera pełną specyfikację formatu, opis strumienia danych, dokumentację potoku dekodera, dziennik decyzji projektowych oraz osobny dokument dotyczący wersji na Androida.

Wyjście na drukarki obejmuje trzy języki poleceń — ZPL, TSPL i EPL — czyli praktycznie każdą drukarkę etykiet spotykaną w magazynie.

05

EFEKT

Format działa na etykietach o średnicy od dwudziestu milimetrów, przy rozdzielczości druku 203 DPI, i odczytuje się aparatem telefonu. Wersja pierwsza jest zamknięta i udokumentowana na tyle, żeby dało się napisać niezależną implementację ze specyfikacji.

Osobnym wyzwaniem był druk termiczny. Głowica ma skończoną rozdzielczość i skończoną powtarzalność, a etykieta bywa naklejona na powierzchni zakrzywionej. Renderowanie w siatce kropek — zamiast rysowania krzywych i liczenia na rasteryzator drukarki — daje kontrolę nad tym, gdzie dokładnie wypadnie każdy moduł.

06

GALERIA

01 ZDJĘĆ
  • CircleCode — etykieta Ø30 mm wygenerowana narzędziem cc-tool, CC-V1-L, ECC-Q, maska 5 · wygenerowane przez projekt

07

WNIOSKI

Jawna hierarchia priorytetów okazała się najskuteczniejszym narzędziem projektowym w całym przedsięwzięciu. Przy każdym sporze — czy zmniejszyć moduł, czy dopuścić odczyt bez pełnej kontroli sumy — odpowiedź wynikała z listy, a nie z dyskusji.