在Golang热敏打印机设备上写

时间:2018-11-10 00:13:36

标签: linux go thermal-printer

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

我在做什么错了?

1 个答案:

答案 0 :(得分:8)

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

如果您检查了Write()通话的收益,就会发现问题。始终检查错误。即使在像这样的小程序中,也不要忽略它们。他们会为您提供有关错误之处的线索。

要解决此问题,请打开专用于os.OpenFile()进行写操作的设备。

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