在 golang 中写在热敏打印机设备上

Write on thermal printer device in golang

我的 linux 机器上已经配置了热敏打印机 (ESC/POS),使用终端命令(作为 root)我可以打印:

echo "Hello!" > /dev/usb/lp0

然而,在 golang 中执行相同的过程没有任何反应:

package main

import (
    "fmt"
    "os"
)

func main() {
   fmt.Println("Hello Would!")

   f, err := os.Open("/dev/usb/lp0")

   if err != nil {
       panic(err)
   }

   defer f.Close()

   f.Write([]byte("Hello world!"))
}

我做错了什么?

如文档中所述os.Open() 以只读方式打开文件。

如果您检查了 Write() 调用中的 return,您就会发现问题。始终检查错误。不要忽略它们,即使是在像这样的小程序中;他们会给你一个线索,告诉你哪里出了问题。

解决问题,打开写入专用设备os.OpenFile()

f, err := os.OpenFile("/dev/usb/lp0", os.O_RDWR, 0)