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

Aug*_*nta 1 linux thermal-printer go

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

echo "Hello!" > /dev/usb/lp0
Run Code Online (Sandbox Code Playgroud)

但是,在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!"))
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Mic*_*ton 9

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

如果您检查了Write()来电的回复,您会发现问题.始终检查错误.不要忽视它们,即使在像这样的小程序中; 他们会告诉你什么是错的.

要解决此问题,请打开特殊设备以进行书写os.OpenFile().

f, err := os.OpenFile("/dev/usb/lp0", os.O_RDWR, 0)
Run Code Online (Sandbox Code Playgroud)