Skip to content

v1.1.0 - Continuous multi-label batch printing

Choose a tag to compare

@iscarelli iscarelli released this 05 Jun 12:09
· 19 commits to main since this release

Continuous multi-label batch printing (B1 Pro / protocol V4)

Multi-label batches now print as a single continuous job. Previously each
label ran as its own full job, so the printer stopped, fed the label out, and
retracted the paper before every next label - slow and unlike the Niimbot
app. Now the job is opened once, all pages stream through, and it closes once.

Fixed

  • No more retract between labels. The per-label PrintEnd (0xF3) - which
    triggers the B1 Pro end-of-job feed-out + paper retract - now runs exactly
    once at the end of the batch instead of after every label.
  • No stop between labels. Pages are pipelined with a 2-page look-ahead:
    the next page(s) are queued while the current one prints, throttled by the
    0xA3->0xB3 page counter so a long or dense batch still cannot overrun the
    printer line buffer.

Changed

  • Print sequence refactored into beginJob / sendPagePacked / waitPage /
    endJob. PrintStart now declares the total page count (16-bit BE) up front;
    each page sends 1 copy via SetPageSize. waitPage compares the cumulative
    page counter against the running page index rather than a fixed 1.

Demo

  • Added "3-label batch", "3 dense labels" and "5 dense labels" stress buttons,
    plus a dependency-free static server (demo/serve.mjs) for local Web
    Bluetooth testing over localhost.

Verified

Tested on real B1 Pro hardware: no retract, continuous flow, and no
corruption at 5x worst-case (random-noise) label density. A minor, bounded gap
can remain only at maximum density; real-world labels (which compress under
run-length encoding) stream cleanly.

Note: maximum print width / page buffering is firmware-dependent; very dense
labels at the largest size are where any residual gap would appear.