From 46926935fbe25eea03e4bc38599d08a9138dc236 Mon Sep 17 00:00:00 2001 From: MassiveBox Date: Tue, 10 Sep 2024 22:45:30 +0200 Subject: [PATCH] First commit --- LICENSE | 21 ++++ README.md | 42 ++++++++ ble.go | 135 ++++++++++++++++++++++++ cli/main.go | 164 +++++++++++++++++++++++++++++ commands.go | 212 ++++++++++++++++++++++++++++++++++++++ demo.jpg | Bin 0 -> 135211 bytes examples/00-knownMac.go | 28 +++++ examples/01-unknownMac.go | 44 ++++++++ examples/02-options.go | 46 +++++++++ go.mod | 30 ++++++ go.sum | 60 +++++++++++ image.go | 104 +++++++++++++++++++ lib.go | 115 +++++++++++++++++++++ options.go | 88 ++++++++++++++++ 14 files changed, 1089 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 ble.go create mode 100644 cli/main.go create mode 100644 commands.go create mode 100644 demo.jpg create mode 100644 examples/00-knownMac.go create mode 100644 examples/01-unknownMac.go create mode 100644 examples/02-options.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 image.go create mode 100644 lib.go create mode 100644 options.go diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7eaad74 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2024 Matteo Bendotti + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..45175cd --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +![A printer which has just printed a Gopher](./demo.jpg) + +go-catprinter is a driver and CLI application that allows you to use some BLE printers, known as "cat printers", on Linux and MacOS, without needing to use the official app. + +# Documentation + +## CLI + +Grab a binary from the [Releases](https://git.massivebox.net/massivebox/go-catprinter/releases) page. Use `./catprinter --help` for help. + +- Basic example with provided MAC: `./catprinter --mac 41:c2:6f:0f:90:c7 --image ./gopher.png` +- Basic example with auto discovery by name: `./catprinter --name X6h --image ./gopher.png` + +## Driver + +For extensive documentation, please consult the [Go Reference](https://pkg.go.dev/git.massivebox.net/massivebox/go-catprinter). Check the `examples/` directory for examples: + +- `examples/00-knownMac.go`: Shows how to connect to a printer by its MAC address and print a file +- `examples/01-unknownMac.go`: Shows how to connect to a printer by its name address and print a file +- `examples/02-options.go`: Shows how `PrinterOptions` can be used to create a rich printing experience with previews and user interaction + +# Information + +## Printer compatibility + +This software should be compatible with printers whose official apps are [iPrint](https://play.google.com/store/apps/details?id=com.frogtosea.iprint&hl=en_US&gl=US), [Tiny Print](https://play.google.com/store/apps/details?id=com.frogtosea.tinyPrint&hl=en_US&gl=US) and similar. +Probably more printers work, but it's hard to tell with how fragmented the ecosystem is. Some printers with these apps might not work. The project takes no responsibility as per the LICENSE. + +The project's main developer uses a X6h (the one in the top of the README). It can be found in AliExpress bundles for around ~€8. + +## Thanks to... + +- [rbaron/catprinter](https://github.com/rbaron/catprinter) and [NaitLee/Cat-Printer](https://github.com/NaitLee/Cat-Printer), for providing most of the printer commands and inspiration for the project +- Shenzhen Frog To Sea Technology Co.,LTD +- Everyone who contributed, tested or used this software! + +## Alternatives + +- [NaitLee/Cat-Printer](https://github.com/NaitLee/Cat-Printer) - the cat printer central, with a CLI application, a web UI, CUPS/IPP support and an Android app. The code is a bit more cluttered, but it works well. +- [rbaron/catprinter](https://github.com/rbaron/catprinter) - simple CLI application for cat printers with batteries included, written in Python with code that's easy to understand. +- [NaitLee/kitty-printer](NaitLee/kitty-printer) - a web app for cat printers which leverages Web Bluetooth +- [jhbruhn/catprint-rs](jhbruhn/catprint-rs) - a driver for cat printers with a basic CLI utility, written in Rust \ No newline at end of file diff --git a/ble.go b/ble.go new file mode 100644 index 0000000..657dc50 --- /dev/null +++ b/ble.go @@ -0,0 +1,135 @@ +package catprinter + +import ( + "context" + "github.com/go-ble/ble" + "github.com/pkg/errors" + "strconv" + "strings" + "time" +) + +// For some reason, bleak reports the 0xaf30 service on my macOS, while it reports +// 0xae30 (which I believe is correct) on my Raspberry Pi. This hacky workaround +// should cover both cases. + +var possibleServiceUuids = []string{ + "ae30", + "af30", +} + +const txCharacteristicUuid = "ae01" + +const scanTimeout = 10 * time.Second + +const waitAfterEachChunkS = 20 * time.Millisecond + +const waitAfterDataSentS = 30 * time.Second + +func chunkify(data []byte, chunkSize int) [][]byte { + var chunks [][]byte + for i := 0; i < len(data); i += chunkSize { + end := i + chunkSize + if end > len(data) { + end = len(data) + } + chunks = append(chunks, data[i:end]) + } + return chunks +} + +func (c *Client) writeData(data []byte) error { + + chunks := chunkify(data, c.chunkSize) + c.log("Sending %d chunks of size %d...", len(chunks), c.chunkSize) + for i, chunk := range chunks { + err := c.printer.WriteCharacteristic(c.characteristic, chunk, true) + if err != nil { + return errors.Wrap(err, "writing to characteristic, chunk "+strconv.Itoa(i)) + } + time.Sleep(waitAfterEachChunkS) + } + c.log("All sent.") + + return nil +} + +// ScanDevices scans for a device with the given name, or auto discovers it based on characteristics (not implemented yet). +// Returns a map with MACs as key, and device names as values. +func (c *Client) ScanDevices(name string) (map[string]string, error) { + + var devices = make(map[string]string) + var found []string + + c.log("Looking for a BLE device named %s", name) + + ctx := ble.WithSigHandler(context.WithTimeout(context.Background(), c.Timeout)) + + err := ble.Scan(ctx, true, func(a ble.Advertisement) { + if strings.Contains(strings.Join(found, " "), a.Addr().String()) { + return + } + found = append(found, a.Addr().String()) + if strings.Contains(strings.ToLower(a.LocalName()), strings.ToLower(name)) { + devices[a.Addr().String()] = a.LocalName() + c.log("Matches %s %s", a.Addr().String(), a.LocalName()) + return + } + c.log("No match %s %s", a.Addr().String(), a.LocalName()) + }, nil) + + switch errors.Cause(err) { + case nil: + case context.DeadlineExceeded: + c.log("Timeout: scan completed") + case context.Canceled: + c.log("Scan was canceled") + default: + return nil, errors.Wrap(err, "failed scan") + } + + if len(devices) < 0 { + return nil, ErrPrinterNotFound + } + return devices, nil + +} + +// Connect establishes a BLE connection to a printer by MAC address. +func (c *Client) Connect(mac string) error { + + ctx := ble.WithSigHandler(context.WithTimeout(context.Background(), c.Timeout)) + connect, err := ble.Dial(ctx, ble.NewAddr(mac)) + if err != nil { + return err + } + + profile, err := connect.DiscoverProfile(true) + if err != nil { + return errors.Wrap(err, "discovering profile") + } + + var char *ble.Characteristic + for _, service := range profile.Services { + c.log("service %s", service.UUID.String()) + for _, characteristic := range service.Characteristics { + c.log(" %s", characteristic.UUID.String()) + if characteristic.UUID.Equal(ble.MustParse(txCharacteristicUuid)) && + strings.Contains(strings.Join(possibleServiceUuids, " "), service.UUID.String()) { + c.log(" found characteristic!") + char = characteristic + break + } + } + } + + if char == nil { + return ErrMissingCharacteristic + } + + c.characteristic = char + c.printer = connect + c.chunkSize = c.printer.Conn().RxMTU() - 3 + return nil + +} diff --git a/cli/main.go b/cli/main.go new file mode 100644 index 0000000..46db6da --- /dev/null +++ b/cli/main.go @@ -0,0 +1,164 @@ +package main + +import ( + "fmt" + "git.massivebox.net/massivebox/go-catprinter" + "github.com/pkg/errors" + "log" + "os" + "time" + + "github.com/urfave/cli/v2" +) + +var flags = []cli.Flag{ + &cli.StringFlag{ + Name: "mac", + Usage: "MAC address of the printer. Provide this or name.", + }, + &cli.StringFlag{ + Name: "name", + Usage: "common name of the printer. Provide this or MAC.", + }, + &cli.StringFlag{ + Name: "image", + Usage: "path to the image file to be printed", + Required: true, + TakesFile: true, + }, + &cli.BoolFlag{ + Name: "lowerQuality", + Usage: "print with lower quality, but slightly faster speed", + }, + &cli.BoolFlag{ + Name: "autoRotate", + Usage: "rotate image to fit printer", + }, + &cli.BoolFlag{ + Name: "dontDither", + Usage: "don't dither the image", + }, + &cli.Float64Flag{ + Name: "blackPoint", + Value: 0.5, + Usage: "regulate at which point a gray pixel is printed as black", + }, + &cli.BoolFlag{ + Name: "debugLog", + Usage: "print debugging messages", + }, + &cli.BoolFlag{ + Name: "dumpImage", + Usage: "save dithered image to ./image.png", + }, + &cli.BoolFlag{ + Name: "dumpRequest", + Usage: "save raw data sent to printer to ./request.bin", + }, + &cli.BoolFlag{ + Name: "dontPrint", + Usage: "don't actually print the image", + }, +} + +func findMac(name string, c *catprinter.Client) (string, error) { + fmt.Printf("Finding MAC by name (will take %d seconds)...", c.Timeout/time.Second) + devices, err := c.ScanDevices(name) + if err != nil { + return "", err + } + switch len(devices) { + case 0: + return "", errors.New("no devices found with name " + name) + case 1: + for k, _ := range devices { + return k, nil + } + break + default: + fmt.Println("Found multiple devices:") + for m, n := range devices { + fmt.Printf("%s\t%s", m, n) + } + return "", errors.New("multiple devices found with name " + name + ", please specify MAC directly") + } + return "", nil +} + +func action(cCtx *cli.Context) error { + + var ( + mac = cCtx.String("mac") + name = cCtx.String("name") + imagePath = cCtx.String("image") + lowerQuality = cCtx.Bool("lowerQuality") + autoRotate = cCtx.Bool("autoRotate") + dontDither = cCtx.Bool("dontDither") + blackPoint = cCtx.Float64("blackPoint") + debugLog = cCtx.Bool("debugLog") + dumpImage = cCtx.Bool("dumpImage") + dumpRequest = cCtx.Bool("dumpRequest") + dontPrint = cCtx.Bool("dontPrint") + ) + + fmt.Println("Initializing...") + c, err := catprinter.NewClient() + if err != nil { + return err + } + defer c.Stop() + + c.Debug.Log = debugLog + c.Debug.DumpImage = dumpImage + c.Debug.DumpRequest = dumpRequest + c.Debug.DontPrint = dontPrint + + opts := catprinter.NewOptions(). + SetBestQuality(!lowerQuality). + SetDither(!dontDither). + SetAutoRotate(autoRotate). + SetBlackPoint(float32(blackPoint)) + + if (mac != "") == (name != "") { + return errors.New("either mac or name must be provided") + } + + if name != "" { + mac, err = findMac(name, c) + if err != nil { + return err + } + } + + fmt.Println("Connecting...") + err = c.Connect(mac) + if err != nil { + return err + } + fmt.Println("Connected!") + + fmt.Println("Printing...") + err = c.PrintFile(imagePath, opts) + if err != nil { + return err + } + + fmt.Println("All done, exiting now.") + + return nil +} + +func main() { + + app := &cli.App{ + Name: "catprinter", + Usage: "print images to some BLE thermal printers", + Flags: flags, + Action: action, + } + + if err := app.Run(os.Args); err != nil { + log.Fatal(err) + } + +} diff --git a/commands.go b/commands.go new file mode 100644 index 0000000..4ec0432 --- /dev/null +++ b/commands.go @@ -0,0 +1,212 @@ +package catprinter + +import "fmt" + +var ( + cmdGetDevState = []byte{81, 120, 163, 0, 1, 0, 0, 0, 255} + cmdSetQuality200Dpi = []byte{81, 120, 164, 0, 1, 0, 50, 158, 255} + cmdGetDevInfo = []byte{81, 120, 168, 0, 1, 0, 0, 0, 255} + cmdLatticeStart = []byte{81, 120, 166, 0, 11, 0, 170, 85, 23, 56, 68, 95, 95, 95, 68, 56, 44, 161, 255} + cmdLatticeEnd = []byte{81, 120, 166, 0, 11, 0, 170, 85, 23, 0, 0, 0, 0, 0, 0, 0, 23, 17, 255} + cmdSetPaper = []byte{81, 120, 161, 0, 2, 0, 48, 0, 249, 255} + cmdPrintImg = []byte{81, 120, 190, 0, 1, 0, 0, 0, 255} + cmdPrintText = []byte{81, 120, 190, 0, 1, 0, 1, 7, 255} + + cmdStartPrinting = []byte{0x51, 0x78, 0xa3, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff} + cmdApplyEnergy = []byte{81, 120, 190, 0, 1, 0, 1, 7, 255} + cmdUpdateDevice = []byte{81, 120, 169, 0, 1, 0, 0, 0, 255} + cmdSlow = []byte{81, 120, 189, 0, 1, 0, 36, 252, 255} + cmdPower = []byte{81, 120, 175, 0, 2, 0, 255, 223, 196, 255} + + cmdFinalSpeed = []byte{81, 120, 189, 0, 1, 0, 8, 56, 255} + + checksumTable = []byte{ + 0, 7, 14, 9, 28, 27, 18, 21, 56, 63, 54, 49, 36, 35, 42, 45, 112, 119, 126, 121, 108, 107, 98, + 101, 72, 79, 70, 65, 84, 83, 90, 93, 224, 231, 238, 233, 252, 251, 242, 245, 216, 223, 214, 209, 196, 195, 202, + 205, 144, 151, 158, 153, 140, 139, 130, 133, 168, 175, 166, 161, 180, 179, 186, 189, 199, 192, 201, 206, 219, 220, + 213, 210, 255, 248, 241, 246, 227, 228, 237, 234, 183, 176, 185, 190, 171, 172, 165, 162, 143, 136, 129, 134, 147, + 148, 157, 154, 39, 32, 41, 46, 59, 60, 53, 50, 31, 24, 17, 22, 3, 4, 13, 10, 87, 80, 89, 94, 75, 76, 69, 66, 111, + 104, 97, 102, 115, 116, 125, 122, 137, 142, 135, 128, 149, 146, 155, 156, 177, 182, 191, 184, 173, 170, 163, 164, + 249, 254, 247, 240, 229, 226, 235, 236, 193, 198, 207, 200, 221, 218, 211, 212, 105, 110, 103, 96, 117, 114, 123, + 124, 81, 86, 95, 88, 77, 74, 67, 68, 25, 30, 23, 16, 5, 2, 11, 12, 33, 38, 47, 40, 61, 58, 51, 52, 78, 73, 64, 71, + 82, 85, 92, 91, 118, 113, 120, 127, 106, 109, 100, 99, 62, 57, 48, 55, 34, 37, 44, 43, 6, 1, 8, 15, 26, 29, 20, 19, + 174, 169, 160, 167, 178, 181, 188, 187, 150, 145, 152, 159, 138, 141, 132, 131, 222, 217, 208, 215, 194, 197, 204, + 203, 230, 225, 232, 239, 250, 253, 244, 243, + } +) + +// checksum calculates the checksum for a given byte array. +func checksum(bArr []byte, i, i2 int) byte { + var b2 byte + for i3 := i; i3 < i+i2; i3++ { + b2 = checksumTable[(b2^bArr[i3])&0xff] + } + return b2 +} + +// commandFeedPaper creates a command to feed paper by a specified amount. +func commandFeedPaper(howMuch int) []byte { + + bArr := []byte{ + 81, + 120, + 189, + 0, + 1, + 0, + byte(howMuch & 0xff), + 0, + 255, + } + + bArr[7] = checksum(bArr, 6, 1) + return bArr +} + +// cmdSetEnergy sets the energy level. Max to `0xffff` By default, it seems around `0x3000` (1 / 5) +func commandSetEnergy(val int) []byte { + + bArr := []byte{ + 81, + 120, + 175, + 0, + 2, + 0, + byte((val >> 8) & 0xff), + byte(val & 0xff), + 0, + 255, + } + + bArr[7] = checksum(bArr, 6, 2) + fmt.Println(bArr) + return bArr + +} + +// encodeRunLengthRepetition encodes repetitions in a run-length format. +func encodeRunLengthRepetition(n int, val byte) []byte { + var res []byte + for n > 0x7f { + res = append(res, 0x7f|byte(val<<7)) + n -= 0x7f + } + if n > 0 { + res = append(res, val<<7|byte(n)) + } + return res +} + +// runLengthEncode performs run-length encoding on an image row. +func runLengthEncode(imgRow []byte) []byte { + var res []byte + count := 0 + var lastVal byte = 255 + for _, val := range imgRow { + if val == lastVal { + count++ + } else { + res = append(res, encodeRunLengthRepetition(count, lastVal)...) + count = 1 + } + lastVal = val + } + if count > 0 { + res = append(res, encodeRunLengthRepetition(count, lastVal)...) + } + return res +} + +// byteEncode encodes an image row into a byte array. +func byteEncode(imgRow []byte) []byte { + var res []byte + for chunkStart := 0; chunkStart < len(imgRow); chunkStart += 8 { + var byteVal byte = 0 + for bitIndex := 0; bitIndex < 8; bitIndex++ { + if chunkStart+bitIndex < len(imgRow) && imgRow[chunkStart+bitIndex] != 0 { + byteVal |= 1 << uint8(bitIndex) + } + } + res = append(res, byteVal) + } + return res +} + +// commandPrintRow builds a print row command based on the image data. +func commandPrintRow(imgRow []byte) []byte { + + // Try to use run-length compression on the image data. + encodedImg := runLengthEncode(imgRow) + + // If the resulting compression takes more than PRINT_WIDTH // 8, it means + // it's not worth it. So we fall back to a simpler, fixed-length encoding. + if len(encodedImg) > printWidth/8 { + encodedImg = byteEncode(imgRow) + bArr := append([]byte{ + 81, + 120, + 162, + 0, + byte(len(encodedImg) & 0xff), + 0, + }, encodedImg...) + bArr = append(bArr, 0, 0xff) + bArr[len(bArr)-2] = checksum(bArr, 6, len(encodedImg)) + return bArr + } + + // Build the run-length encoded image command. + bArr := append([]byte{81, 120, 191, 0, byte(len(encodedImg)), 0}, encodedImg...) + bArr = append(bArr, 0, 0xff) + bArr[len(bArr)-2] = checksum(bArr, 6, len(encodedImg)) + return bArr +} + +// commandsPrintImg builds the commands to print an image. +func commandsPrintImg(imgS []byte) []byte { + + img := chunkify(imgS, printWidth) + var data []byte + + data = append(data, cmdGetDevState...) + data = append(data, cmdStartPrinting...) + data = append(data, cmdSetQuality200Dpi...) + data = append(data, cmdSlow...) + data = append(data, cmdPower...) + data = append(data, cmdApplyEnergy...) + data = append(data, cmdUpdateDevice...) + + data = append(data, cmdLatticeStart...) + for _, row := range img { + data = append(data, commandPrintRow(row)...) + } + data = append(data, cmdLatticeEnd...) + data = append(data, cmdFinalSpeed...) + data = append(data, commandFeedPaper(5)...) + data = append(data, cmdSetPaper...) + data = append(data, cmdSetPaper...) + data = append(data, cmdSetPaper...) + data = append(data, cmdGetDevState...) + return data + +} + +func weakCommandsPrintImg(imgS []byte) []byte { + + img := chunkify(imgS, printWidth) + + data := append(cmdGetDevState, cmdSetQuality200Dpi...) + data = append(data, cmdLatticeStart...) + for _, row := range img { + data = append(data, commandPrintRow(row)...) + } + data = append(data, commandFeedPaper(5)...) + data = append(data, cmdSetPaper...) + data = append(data, cmdSetPaper...) + data = append(data, cmdSetPaper...) + data = append(data, cmdLatticeEnd...) + data = append(data, cmdGetDevState...) + return data + +} diff --git a/demo.jpg b/demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76ee2cf0986fe7bed2cfae4f6c721261fbddc0b9 GIT binary patch literal 135211 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�kFw%;-aF-P&Fk(ED*rhP#f^z{^76`FWW2L zA;ng4E74H7=mBrU$SDmV!fNfCSJ;Buxpvxh;#n{SN)q`+g=D&@At*rrf5bCGaf9xo zQXAPj*;1<_=GtNi#gTEuRtvD&zx;@p&q3hDw=#59LK;Bc>L#ebMfjX6D~u2?pH z{lLJh0*p-UH4@8wMtg|DyZdzw;q2bn%q9XEa$vJra-ja@yK$m~O;WI}Tqo27Grslyp9|lR{ zYF5O!zcmRs2LUq7RNB~zVHE@@czwj?=4^i>FFTDPRa>fv;xIL@NndiR$^n8_$ZZ>K zcoFdxVd$d4^D14!*#1TcQhe-iq~W+#I}U~XM)n=0R``~ZJPS_}m^7f?VAj!=^!>$; zLYj-}jR+aL$bV3<)ZQHOODaXu%$*P$8p9@B76DBjWubOi%+0tuIQ&Iog_UuJNLUm9vKmzqlBd;>i6a(IG~SK_%!_ zn)-`w)|icmc$fX+A{CWtG50LQELh^GK*kXUTo%GalvW_I3@utz28K0tpcjl%N|3z{vru%kgJYu>ugkjCCp&lvFtLFG2mR zDnW>43mVJ`t|8uoej;^r(`WYqGdEB05f<24TvVi;1y}I*G4+JP^VGV8UW#@7Lsi=$ z%v*cPaq^*mbz#sV>zXr4SOyOXPWm5P@0{o2-Tc{-q5uge37FOSNc^ zsgK4%?juq(H)nKB$IO-t`HdD$wl_0y zXbAQ#&NeU?_Ax~kx&;!n=1@b7t4y`9nQIsIFggoF{-GULkU8^L0eXN`exl0JhcWkZ z&{LO^`v`yz35EBjJOhzI8kP--g{gD=#e4-`D*68as$P+HK$IjWb!+he1viBrMYv&A z;2w4OlsL>LQrKuM#4!z0pqXG;M*7!-xaba42t+k*=3l9_mZSR}%;@5|2h?;Iu>Sxg z2pyP~uTYRjg;+J)DN^dULS@E=*WHq`w)1NK(&zAjKzW&_rIt(caV>oUg-a6$tKodG z(Iq$x3a|wQ)y)8=G=0F2z*RW51ZMj)`jk{l1!Kj_51G*mQ@~<}?umjLVwQ;(Ag#C5 zsM^PfR*y!dW)Q0K_Y&GUL4=r*W980* zS?tIZt2&hP7Sml3zB{(3pD}w0N@RURVOKO9KT_8rHnv01+>lJYZIH-sGwGi6f|t-)GjoZ zwlwNiDl4W@?}&#USqSz1pfnvM2hoaLNY$1P{nP;)MwaiMVobimsu-fwAz!+HsI8bR zP-)#)FFA%X?)yJdv?y4hOVww3jDv1W!a!`olf^7T3|=-qrqar$L`WT_$M+v-OFH~S ztTVCt1YxitvA@c53W0x75`ylisjf#b(W*P{D z58_$HbXOdw=90^n1=*ouRXXfxsZbar{h)KnN5sd&r%zIaqj{fDcY$iD8|x8mHlhzB zf{N95a2g7$!MzgrKre*2IyG|F*ZG5pvYfBtF)b9=(0$4R955fa0!J*hh{BS*3fwYK z93KY}OsZSPCJV56>5g@XD}q<(=>8q|9jJ3dj{KfuUM3C4EkyAW3gH=NJrc}u(E


D9{>g*3 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 img.Bounds().Dy() && opts.autoRotate { + img = imaging.Rotate90(img) + } + + var newImg image.Image = imaging.New(img.Bounds().Dx(), img.Bounds().Dy(), color.White) + newImg = imaging.OverlayCenter(newImg, img, 1) + newImg = imaging.Resize(newImg, printWidth, 0, imaging.NearestNeighbor) + + if opts.dither { + newImg = ditherImage(newImg, opts.ditherAlgo) + } else { + newImg = imaging.Grayscale(newImg) + newImg = grayscaleToBlackWhite(newImg, opts.blackPoint) + } + + if c.Debug.DumpImage { + err := imaging.Save(newImg, "./image.png") + if err != nil { + log.Println("failed to save debugging image dump", err.Error()) + } + } + + return newImg + +} diff --git a/lib.go b/lib.go new file mode 100644 index 0000000..2b60b86 --- /dev/null +++ b/lib.go @@ -0,0 +1,115 @@ +package catprinter + +import ( + "github.com/disintegration/imaging" + "github.com/go-ble/ble" + "github.com/go-ble/ble/examples/lib/dev" + "github.com/pkg/errors" + "image" + "log" + "os" + "time" +) + +var ( + ErrPrinterNotFound = errors.New("unable to find printer, make sure it is turned on and in range") + ErrMissingCharacteristic = errors.New("missing characteristic, make sure the MAC is correct and the printer is supported") + ErrNotBlackWhite = errors.New("image must be black and white (NOT only grayscale)") + ErrInvalidImageSize = errors.New("image must be 384px wide") +) + +// Client contains information for the connection to the printer and debugging options. +type Client struct { + device ble.Device + printer ble.Client + characteristic *ble.Characteristic + chunkSize int + Timeout time.Duration + Debug struct { + Log bool // print logs to terminal + DumpRequest bool // saves last data sent to printer to ./request.bin + DumpImage bool // saves formatted image to ./image.png + DontPrint bool // if true, the image is not actually printed. saves paper during testing. + } +} + +// NewClient initiates a new client with sane defaults +func NewClient() (*Client, error) { + d, err := dev.DefaultDevice() + if err != nil { + return nil, errors.Wrap(err, "can't create device, superuser permissions might be needed") + } + return NewClientFromDevice(d) +} + +// NewClientFromDevice initiates a new client with a custom ble.Device and sane defaults +func NewClientFromDevice(d ble.Device) (*Client, error) { + var c = &Client{} + ble.SetDefaultDevice(d) + c.device = d + c.Timeout = scanTimeout + return c, nil +} + +// Stop closes any active connection to a printer and detaches the GATT server +func (c *Client) Stop() error { + if err := c.Disconnect(); err != nil { + return errors.Wrap(err, "can't disconnect printer") + } + return c.device.Stop() +} + +// Disconnect closes any active connection to a printer +func (c *Client) Disconnect() error { + if c.printer != nil { + if err := c.printer.CancelConnection(); err != nil { + return err + } + c.printer = nil + } + return nil +} + +// Print prints an image to the connected printer. It also formats it and dithers if specified by opts and isAlreadyFormatted. +// Only set isAlreadyFormatted to true if the image is in black and white (NOT ONLY grayscale) and 384px wide. +func (c *Client) Print(img image.Image, opts *PrinterOptions, isAlreadyFormatted bool) error { + if !isAlreadyFormatted { + img = c.FormatImage(img, opts) + } + fmtImg, err := convertImageToBytes(img) + if err != nil { + return err + } + if opts.bestQuality { + fmtImg = commandsPrintImg(fmtImg) + } else { + fmtImg = weakCommandsPrintImg(fmtImg) + } + if c.Debug.DumpRequest { + err = os.WriteFile("./request.bin", fmtImg, 0644) + if err != nil { + log.Println("failed to save debugging request dump", err.Error()) + } + } + if c.Debug.DontPrint { + log.Println("image will not be printed as Client.Debug.DontPrint is true") + return nil + } + return c.writeData(fmtImg) +} + +// PrintFile dithers, formats and prints an image by path to the connected printer +func (c *Client) PrintFile(path string, opts *PrinterOptions) error { + img, err := imaging.Open(path) + if err != nil { + return err + } + return c.Print(img, opts, false) +} + +func (c *Client) log(format string, a ...any) { + if !c.Debug.Log { + return + } + log.Printf(format, a...) +} diff --git a/options.go b/options.go new file mode 100644 index 0000000..5379e9a --- /dev/null +++ b/options.go @@ -0,0 +1,88 @@ +package catprinter + +import ( + "github.com/makeworld-the-better-one/dither/v2" + "log" +) + +type PrinterOptions struct { + bestQuality bool + autoRotate bool + dither bool + blackPoint float32 + ditherAlgo dither.ErrorDiffusionMatrix +} + +// NewOptions creates a new PrinterOptions object with sane defaults. +func NewOptions() *PrinterOptions { + return &PrinterOptions{ + bestQuality: true, + autoRotate: false, + dither: true, + ditherAlgo: dither.FloydSteinberg, + blackPoint: 0.5, + } +} + +// SetBestQuality sets the quality option. Default is true. +// If true, prints slower with higher thermal strength, resulting in a darker image. +// Recommended for self-adhesive paper. +func (o *PrinterOptions) SetBestQuality(best bool) *PrinterOptions { + o.bestQuality = best + return o +} + +// BestQuality returns the quality option. +func (o *PrinterOptions) BestQuality() bool { + return o.bestQuality +} + +// SetAutoRotate sets the auto rotate option. Default is false. +// If true and the image is landscape, it gets rotated to be printed in higher resolution. +func (o *PrinterOptions) SetAutoRotate(rotate bool) *PrinterOptions { + o.autoRotate = rotate + return o +} + +// AutoRotate returns the auto rotate option. +func (o *PrinterOptions) AutoRotate() bool { + return o.autoRotate +} + +// SetDither sets the dither option. Default is true. +// If false, dithering is disabled, and the image is converted to black/white and each pixel is printed if less white than BlackPoint. +func (o *PrinterOptions) SetDither(dither bool) *PrinterOptions { + o.dither = dither + return o +} + +// Dither returns the dither option. +func (o *PrinterOptions) Dither() bool { + return o.dither +} + +// SetDitherAlgo sets the dither algorithm. Default is FloydSteinberg. +func (o *PrinterOptions) SetDitherAlgo(algo dither.ErrorDiffusionMatrix) *PrinterOptions { + o.ditherAlgo = algo + return o +} + +// DitherAlgo returns the dither algorithm. +func (o *PrinterOptions) DitherAlgo() dither.ErrorDiffusionMatrix { + return o.ditherAlgo +} + +// SetBlackPoint sets the black point. Default is 0.5. +// If 0.5, a gray pixel will be printed as black if it's less than 50% white. Only effective if Dither is disabled. +func (o *PrinterOptions) SetBlackPoint(bp float32) *PrinterOptions { + if bp < 0 || bp > 1 { + log.Panic("Invalid black point value. Must be between 0 and 1.") + } + o.blackPoint = bp + return o +} + +// BlackPoint returns the black point. +func (o *PrinterOptions) BlackPoint() float32 { + return o.blackPoint +}