Skip to main content

PC Printer Driver

The PC printer driver is a local Windows service for Plato POS printing. It accepts print jobs over HTTP, stores them in Redis-backed BullMQ queues, and writes ESC/POS bytes to network thermal printers over TCP. It is not an operating-system printer driver. It is a small local bridge between Plato’s browser POS and raw ESC/POS printers.

What It Does

  • Receives print jobs from Plato Console through POST /print.
  • Converts incoming base64 ESC/POS raster chunks into queued printer jobs.
  • Keeps a separate queue per printer address.
  • Processes one job at a time per printer.
  • Sends raw ESC/POS bytes to TCP printers.
  • Supports printer status checks, cash drawer kick, beep commands, queue inspection, HTTPS proxying, and PeerJS mesh signaling.

Runtime Shape

Plato POS browser
  |
  | POST /print
  v
PC printer HTTP server
  |
  | build print chunks
  v
PrinterStores
  |
  | one BullMQ queue per ip:port
  v
PrinterStore worker
  |
  | TCP socket
  v
ESC/POS thermal printer

Main Files

FileRole
drivers/pc-printer/src/index.tsExpress app, CORS, startup, HTTPS, mesh server, shutdown handlers.
drivers/pc-printer/src/routes.tsHTTP endpoints for print, status, beep, cash drawer, health, and queue state.
drivers/pc-printer/src/printer-stores.tsPer-printer queue, worker, socket lifecycle, status probing, retry recovery.
drivers/pc-printer/src/printer.tsLow-level TCP writes, write timeout, printer init command, local IP discovery.
drivers/pc-printer/src/lib/config.tsconfig.json defaults, parsing, and sanitization.
drivers/pc-printer/src/lib/redis.tsEmbedded or external Redis runtime.
drivers/pc-printer/src/lib/receipt-encoder.tsESC/POS chunk wrapping, cut, beep, and cash drawer commands.
drivers/pc-printer/src/scripts/*Caddy HTTPS setup and release helpers.

Network Ports

PortDefaultUsed For
server.port8080Main HTTP API.
caddy.httpsPort443HTTPS reverse proxy when enabled.
redis.port6379Embedded or external Redis.
Printer portUsually 9100Raw TCP connection to the printer.

Capabilities

  • Network printers that accept ESC/POS over TCP.
  • Raster print jobs generated by Plato Console.
  • Deferred print jobs through runAt.
  • Persistent retry queues.
  • Cash drawer pulse through ESC/POS.
  • Repeated beep sequence.
  • HTTPS through Caddy on Windows.
  • PeerJS mesh signaling on /mesh.