我已经在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!"))
}
我在做什么错了?
答案 0 :(得分:8)
如文档os.Open()
中所述,以只读方式打开文件。
如果您检查了Write()
通话的收益,就会发现问题。始终检查错误。即使在像这样的小程序中,也不要忽略它们。他们会为您提供有关错误之处的线索。
要解决此问题,请打开专用于os.OpenFile()
进行写操作的设备。
f, err := os.OpenFile("/dev/usb/lp0", os.O_RDWR, 0)