将二进制整数字节写入与GO的串行连接

时间:2014-01-24 07:38:17

标签: binary serial-port go

这是否将4(字节00000100)写入串口?

buf := make([]byte, 4)
d, err := connection.Write(buf)

因为似乎正在发送某些内容,但我的另一端的代码却没有被触发。我有另一种语言的其他代码,它向Arduino发送一个4,它响应很好。当上面的代码运行时,我可以看到指示灯闪烁,但不管怎么说,它不是我期待的字节。

那么如何通过串口发送字节00000100

完整代码:

package main

import (
  "github.com/tarm/goserial"
  "log"
  "time"
)

func main() {
  config := &serial.Config{Name: "/dev/tty.usbmodem1421", Baud: 9600}
  connection, err := serial.OpenPort(config)
  if err != nil {
    log.Fatal(err)
  }

  // Wait for Arduino
  time.Sleep(5 * time.Second)

  // Send the binary integer 4 to the serial port
  buf := make([]byte, 4)
  _, err = connection.Write(buf)
  if err != nil {
    log.Fatal(err)
  }

  // Wait for Arduino
  time.Sleep(1 * time.Second)

  // Cleanup
  connection.Close()
}

1 个答案:

答案 0 :(得分:0)

看起来我完全误解了make ...

的第二个参数
buf := make([]byte, 1) // second arg is lenght of array, not a value in the array
binary.PutUvarint(buf, 8) // add my int value to the buffer
connection.Write(buf) // send it!