Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f4a427f3b | |||
| 7bb8778611 |
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
APP_NAME="libgofunc"
|
APP_NAME="libgofunc"
|
||||||
VERSION="${1:-v0.1.9}"
|
VERSION="${1:-v0.1.10}"
|
||||||
OUTPUT_DIR="../assets"
|
OUTPUT_DIR="../assets"
|
||||||
BUILD_DIR="../build"
|
BUILD_DIR="../build"
|
||||||
|
|
||||||
|
|||||||
17
cmd/main.go
17
cmd/main.go
@@ -9,6 +9,8 @@ import (
|
|||||||
_ "image/png"
|
_ "image/png"
|
||||||
)
|
)
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
"gt.mokkon.com/sainw/libgofunc"
|
"gt.mokkon.com/sainw/libgofunc"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -99,11 +101,24 @@ func main() {
|
|||||||
စက်သုံးဆီ အရေအတွက် နှင့် အရည်အသွေးစျေးနှုန်းများ အားသံသယရှိပါက ph 09450539099, 09765421033, 09765421029 သို့တိုင်ကြား နိုင်ပါသည်။</p>
|
စက်သုံးဆီ အရေအတွက် နှင့် အရည်အသွေးစျေးနှုန်းများ အားသံသယရှိပါက ph 09450539099, 09765421033, 09765421029 သို့တိုင်ကြား နိုင်ပါသည်။</p>
|
||||||
|
|
||||||
`
|
`
|
||||||
|
type Data struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
Result []string `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
result := libgofunc.GenImg(550, "./", payload, temp, "./")
|
result := libgofunc.GenImg(550, "./", payload, temp, "./")
|
||||||
fmt.Println("Result:", result)
|
fmt.Println("Result:", result)
|
||||||
// PrintImg(C.CString("usb:/dev/usb/lp1"), C.CString("build/out.png"))
|
// PrintImg(C.CString("usb:/dev/usb/lp1"), C.CString("build/out.png"))
|
||||||
// libgofunc.Print("int:/dev/bus/usb/001/046", "./out.png")
|
// libgofunc.Print("int:/dev/bus/usb/001/046", "./out.png")
|
||||||
// libgofunc.Print("tcp:192.168.100.110:9100", "./out.png")
|
|
||||||
|
data := Data{}
|
||||||
|
json.Unmarshal([]byte(result), &data)
|
||||||
|
fmt.Println("Data:", data)
|
||||||
|
|
||||||
|
for _, imgPath := range data.Result {
|
||||||
|
fmt.Println("Printing image:", imgPath)
|
||||||
|
libgofunc.Print("tcp:192.168.100.151:9100", imgPath)
|
||||||
|
}
|
||||||
// libgofunc.Print("usb:/dev/usb/lp1", "./out.png")
|
// libgofunc.Print("usb:/dev/usb/lp1", "./out.png")
|
||||||
// printer := "tcp:192.168.100.151:9100"
|
// printer := "tcp:192.168.100.151:9100"
|
||||||
// ListUSB()
|
// ListUSB()
|
||||||
|
|||||||
19
img.go
19
img.go
@@ -22,8 +22,6 @@ import (
|
|||||||
"golang.org/x/net/html"
|
"golang.org/x/net/html"
|
||||||
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/kenshaw/escpos"
|
|
||||||
)
|
)
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
@@ -377,30 +375,25 @@ func findNode(n *html.Node, tag string) *html.Node {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func printImg(prt *escpos.Escpos, imgPath string) error {
|
func imgData(imgPath string) ([]byte, error) {
|
||||||
imgFile, err := os.Open(imgPath)
|
imgFile, err := os.Open(imgPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
img, _, err := image.Decode(imgFile)
|
img, _, err := image.Decode(imgFile)
|
||||||
defer imgFile.Close()
|
defer imgFile.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
data := []byte{0x1D, 0x4C, 0x00, 0x00}
|
data := []byte{0x1D, 0x4C, 0x00, 0x00}
|
||||||
_, err = prt.WriteRaw(data)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("error 0x1D, 0x4C:", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
gray := toMonochrome(img)
|
gray := toMonochrome(img)
|
||||||
data = escposRaster(gray)
|
imgData := escposRaster(gray)
|
||||||
|
data = append(data, imgData...)
|
||||||
_, err = prt.WriteRaw(data)
|
return data, err
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadFont(size float64) (*font.Face, error) {
|
func LoadFont(size float64) (*font.Face, error) {
|
||||||
|
|||||||
34
printer.go
34
printer.go
@@ -17,7 +17,9 @@ import (
|
|||||||
|
|
||||||
"github.com/kenshaw/escpos"
|
"github.com/kenshaw/escpos"
|
||||||
)
|
)
|
||||||
import "errors"
|
import (
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
//export PrintImg
|
//export PrintImg
|
||||||
func PrintImg(printer *C.char, imagePath *C.char) *C.char {
|
func PrintImg(printer *C.char, imagePath *C.char) *C.char {
|
||||||
@@ -87,10 +89,17 @@ func PrintImg(printer *C.char, imagePath *C.char) *C.char {
|
|||||||
prt.SetSmooth(1)
|
prt.SetSmooth(1)
|
||||||
prt.SetAlign("left")
|
prt.SetAlign("left")
|
||||||
|
|
||||||
err := printImg(prt, goImagePath)
|
imgBytes, err := imgData(goImagePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return NewErr(err)
|
return NewErr(err)
|
||||||
}
|
}
|
||||||
|
err = WriteChunk(w, prt, imgBytes)
|
||||||
|
if err != nil {
|
||||||
|
return NewErr(err)
|
||||||
|
}
|
||||||
|
time.Sleep(500 * time.Millisecond)
|
||||||
|
w.Flush()
|
||||||
|
|
||||||
prt.WriteRaw([]byte{0x1B, 0x64, 0x03})
|
prt.WriteRaw([]byte{0x1B, 0x64, 0x03})
|
||||||
prt.Cut()
|
prt.Cut()
|
||||||
prt.End()
|
prt.End()
|
||||||
@@ -104,3 +113,24 @@ func Print(printer, imagePath string) string {
|
|||||||
r := C.GoString(result)
|
r := C.GoString(result)
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WriteChunk breaks the large byte array into smaller chunks
|
||||||
|
func WriteChunk(w *bufio.ReadWriter, prt *escpos.Escpos, data []byte) error {
|
||||||
|
chunkSize := 1024 // 1 KB chunks work best for network printers
|
||||||
|
for i := 0; i < len(data); i += chunkSize {
|
||||||
|
end := min(i+chunkSize, len(data))
|
||||||
|
|
||||||
|
_, err := prt.WriteRaw(data[i:end])
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Error writing image chunk:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := w.Flush(); err != nil {
|
||||||
|
log.Println("Error flushing buffer:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// Give the printer's network chip a microsecond to breathe
|
||||||
|
time.Sleep(5 * time.Millisecond)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user