在 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)
我的 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)