Я использую принтер (ESC POS), который печатает текст при записи данных на / dev / usb / lp0
Упрощенный код:
package main
import (
"bufio"
"os"
)
func main() {
f, err := os.Create("/dev/usb/lp0")
if err != nil {
panic(err)
}
defer f.Close()
w := bufio.NewWriter(f)
w.Write([]byte("\x1B@"))
w.WriteString("test-1\n")
w.WriteString("test-2\n")
w.WriteString("test-3\n")
w.WriteString("test-4\n")
w.WriteString("test-5\n")
w.WriteString("test-6\n")
w.WriteString("test-7\n")
w.WriteString("test-8\n")
w.WriteString("test-9\n")
w.Flush()
f.Sync()
}
и большинствовремя последней строки не печатается, если я не добавлю таймер в самом конце.
Я думаю, что я все правильно закрыл, поэтому не уверен, что здесь происходит ... Если я пишу в файл, онпрекрасно работает Кстати, удача?
Заранее спасибо, я потратил вчера вечером на это, и это сводит меня с ума:)
РЕДАКТИРОВАТЬ: код с обработкой ошибок (на самом деле f.Sync ()не удалось и я его удалил)
package main
import (
"bufio"
"os"
)
func main() {
f, err := os.Create("/dev/usb/lp0")
if err != nil {
panic(err)
}
defer f.Close()
w := bufio.NewWriter(f)
_, err = w.Write([]byte("\x1B@"))
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-1\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-2\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-3\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-4\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-5\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-6\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-7\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-8\n")
if err != nil {
panic(err)
}
_, err = w.WriteString("toto-9\n")
if err != nil {
panic(err)
}
err = w.Flush()
if err != nil {
panic(err)
}
}