ZBLOG

golang 实现串口通信服务

  1. 引入 go-serial 库
  1. go get github.com/jacobsa/go-serial/serial
  1. 编写串口读取函数
  1. func readFromPort(port io.ReadWriteCloser) {
  2. buf := make([]byte, 1024)
  3. for {
  4. n, err := port.Read(buf)
  5. if err != nil {
  6. log.Fatal(err)
  7. }
  8. fmt.Print(string(buf[:n]))
  9. }
  10. }
  1. 打开串口
  1. port, err := serial.Open(serial.OpenOptions{
  2. PortName: "COM1",
  3. BaudRate: 115200,
  4. DataBits: 8,
  5. StopBits: 1,
  6. MinimumReadSize: 4,
  7. })
  8. if err != nil {
  9. log.Fatal(err)
  10. }
  11. defer port.Close()
  1. 向串口写入数据
  1. _, err = port.Write([]byte("hello"))
  2. if err != nil {
  3. log.Fatal(err)
  4. }

完整代码:

  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "log"
  6. "github.com/jacobsa/go-serial/serial"
  7. )
  8. func readFromPort(port io.ReadWriteCloser) {
  9. buf := make([]byte, 1024)
  10. for {
  11. n, err := port.Read(buf)
  12. if err != nil {
  13. log.Fatal(err)
  14. }
  15. fmt.Print(string(buf[:n]))
  16. }
  17. }
  18. func main() {
  19. // 打开串口
  20. port, err := serial.Open(serial.OpenOptions{
  21. PortName: "COM1",
  22. BaudRate: 115200,
  23. DataBits: 8,
  24. StopBits: 1,
  25. MinimumReadSize: 4,
  26. })
  27. if err != nil {
  28. log.Fatal(err)
  29. }
  30. defer port.Close()
  31. // 开启读取协程
  32. go readFromPort(port)
  33. // 写入数据到串口
  34. _, err = port.Write([]byte("hello"))
  35. if err != nil {
  36. log.Fatal(err)
  37. }
  38. // 等待
  39. select {}
  40. }

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=2079

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?