serial.go 637 B

12345678910111213141516171819202122232425262728293031
  1. package service
  2. import (
  3. "fmt"
  4. "github.com/tarm/serial"
  5. )
  6. type SerialPrinter struct {
  7. Port *serial.Port
  8. }
  9. func NewSerialPrinter(portName string, baudRate int) (*SerialPrinter, error) {
  10. if baudRate <= 0 {
  11. baudRate = 9600 // EMD807 factory default
  12. }
  13. c := &serial.Config{Name: portName, Baud: baudRate}
  14. port, err := serial.OpenPort(c)
  15. if err != nil {
  16. return nil, fmt.Errorf("打开串口失败 %s: %w", portName, err)
  17. }
  18. return &SerialPrinter{Port: port}, nil
  19. }
  20. func (p *SerialPrinter) Write(data []byte) error {
  21. _, err := p.Port.Write(data)
  22. return err
  23. }
  24. func (p *SerialPrinter) Close() error {
  25. return p.Port.Close()
  26. }