serial.go 936 B

123456789101112131415161718192021222324252627282930313233343536
  1. package serial
  2. import (
  3. "encoding/binary"
  4. "io"
  5. )
  6. // ReadUint16 reads first two bytes from the reader, and then coverts them to an uint16 value.
  7. func ReadUint16(reader io.Reader) (uint16, error) {
  8. var b [2]byte
  9. if _, err := io.ReadFull(reader, b[:]); err != nil {
  10. return 0, err
  11. }
  12. return binary.BigEndian.Uint16(b[:]), nil
  13. }
  14. // WriteUint16 writes an uint16 value into writer.
  15. func WriteUint16(writer io.Writer, value uint16) (int, error) {
  16. var b [2]byte
  17. binary.BigEndian.PutUint16(b[:], value)
  18. return writer.Write(b[:])
  19. }
  20. // WriteUint32 writes an uint32 value into writer.
  21. func WriteUint32(writer io.Writer, value uint32) (int, error) {
  22. var b [4]byte
  23. binary.BigEndian.PutUint32(b[:], value)
  24. return writer.Write(b[:])
  25. }
  26. // WriteUint64 writes an uint64 value into writer.
  27. func WriteUint64(writer io.Writer, value uint64) (int, error) {
  28. var b [8]byte
  29. binary.BigEndian.PutUint64(b[:], value)
  30. return writer.Write(b[:])
  31. }