blitzer-v2/printer/main.go
2025-08-07 23:17:13 +02:00

48 lines
975 B
Go

package printer
import (
"image"
"os"
"git.ctdo.de/henne/blitzer-v2/config"
"git.ctdo.de/henne/blitzer-v2/db"
"github.com/hennedo/escpos"
"github.com/sirupsen/logrus"
"go.bug.st/serial"
)
var printer *escpos.Escpos
var whyImage image.Image
func init() {
if config.C.PrinterPort == "" {
return
}
socket, err := serial.Open(config.C.PrinterPort, &serial.Mode{
BaudRate: 19200,
StopBits: serial.OneStopBit,
DataBits: 8,
Parity: serial.NoParity,
})
if err != nil {
logrus.Panicf("printer error serial port: %s", err)
}
printer = escpos.New(socket)
imageFile, err := os.Open("webserver/assets/img/traffic_police.jpg")
if err != nil {
logrus.Errorf("error loading image: %s", err)
}
whyImage, _, err = image.Decode(imageFile)
if err != nil {
logrus.Errorf("image decoding error: %s", err)
}
}
func PrintTicket(ticket db.SpeedingTicket) {
if config.C.PrinterPort == "" {
return
}
printer.Initialize()
printer.PrintImage(whyImage)
}