在Golang中编写热敏打印机设备

4

我已经在我的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!"))
}

我做错了什么?

也许类似于 https://godoc.org/github.com/google/gousb? - grooveplex
1个回答

14
根据文档 os.Open() ,该函数只能以只读方式打开文件。
如果您检查了Write()调用的返回值,就会发现问题。无论是在此类小程序中还是其他程序中,始终要检查错误并且不要忽略它们;它们将为您提供有关问题的线索。
要解决此问题,请使用os.OpenFile()打开特定于写入设备。
f, err := os.OpenFile("/dev/usb/lp0", os.O_RDWR, 0)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接