Написать на термопринтер устройства в Голанге - PullRequest
0 голосов
/ 10 ноября 2018

У меня уже есть термопринтер (ESC / POS), настроенный на моем Linux-компьютере, и с помощью команды терминала (от имени 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 голосов
/ 10 ноября 2018

Как описано в документации os.Open() открывает файл только для чтения.

Вы бы обнаружили проблему, если бы проверили возврат от вашего Write() звонка. Всегда проверяйте ошибки. Не игнорируйте их, даже в крошечных программах, подобных этой; они дадут вам подсказку о том, что не так.

Чтобы решить эту проблему, откройте устройство, специально предназначенное для записи, с помощью os.OpenFile().

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