使用 GO 将二进制整数字节写入串行连接

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


buf := make([]byte, 4)

d, err := connection.Write(buf)

因为看起来有些东西正在发送,但是我在另一端期待 4 的代码没有被触发。我有另一种语言的其他代码,将 4 发送到 Arduino,它响应良好。当上面的代码运行时,我可以看到灯闪烁,但不知何故不是我期待的字节。


那么如何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()

}


侃侃无极
浏览 262回答 1
1回答

白猪掌柜的

看起来我完全误解了第二个论点make......buf := make([]byte, 1) // second arg is lenght of array, not a value in the arraybinary.PutUvarint(buf, 8) // add my int value to the bufferconnection.Write(buf) // send it!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go