GO語言實現(xiàn)串口簡單通訊
背景
最近再學習 go 語言,在某寶用5塊錢買了個教學視頻 8 日速成,目前看到了第3天的視頻,進度龜速。。。。。這周末加油!
然后,學習 go 語言的目的是想用 go 做自動測試,我是只學過 C ,感覺 go 語言和 C 比較相近,學起來比較簡單、迅速。
串口通訊代碼
golang 串口源碼:https://github.com/huin/goserial
對于 go 的串口通訊要求如下:
- Data Bits:8
- Stop Bits:1
- Parity:None
- Hardware Flow Control:None
- Software Flow Control:None
代碼塊分解解析
- 設(shè)置串口號和波特率
c := &serial.Config{Name: "COM5", Baud: 115200}
Config 是一個結(jié)構(gòu)體。原型如下:
type Config struct {
Name string
Baud int
Size ByteSize
Parity ParityMode
StopBits StopBits
// RTSFlowControl bool
// DTRFlowControl bool
// XONFlowControl bool
CRLFTranslate bool // Ignored on Windows.
// TimeoutStuff int
}
- 打開串口
OpenPort 函數(shù)用于打開串口。傳參 c 是 Config 結(jié)構(gòu)體的指針。返回結(jié)果有兩個:s 和 err。s 是個句柄,err 是打開結(jié)果。err = nil 表示打開失敗。
s, err := serial.OpenPort(c)
if err != nil {
log.Fatal(err)
}
- 發(fā)送串口數(shù)據(jù)
n, err := s.Write([]byte("012345"))
if err != nil {
log.Fatal(err)
}
- 接收串口數(shù)據(jù)
buf := make([]byte, 128)
n, err = s.Read(buf)
if err != nil {
log.Fatal(err)
}
完整代碼
package main
import (
"fmt"
"log"
"time"
"github.com/tarm/goserial"
)
func main() {
//設(shè)置串口編號
c := &serial.Config{Name: "COM5", Baud: 115200}
//打開串口
s, err := serial.OpenPort(c)
if err != nil {
log.Fatal(err)
}
// 寫入字符串“012345”
n, err := s.Write([]byte("012345"))
if err != nil {
log.Fatal(err)
}
//延時100
time.Sleep(100)
buf := make([]byte, 128)
n, err = s.Read(buf)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Read %d Bytes\r\n", n)
for i := 0; i < n; i++ {
fmt.Printf("buf[%d]=%c\r\n", i, buf[i])
}
}
運行結(jié)果

到此這篇關(guān)于GO語言實現(xiàn)串口簡單通訊的文章就介紹到這了,更多相關(guān)GO 串口通訊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Go語言實現(xiàn)xmind文件轉(zhuǎn)換為markdown
這篇文章主要來和大家一起深入探討如何用Go語言構(gòu)建一個強大的命令行工具,實現(xiàn)XMind到Markdown的無損轉(zhuǎn)換,感興趣的小伙伴可以跟隨小編一起學習一下2025-06-06
基于go interface{}==nil 的幾種坑及原理分析
這篇文章主要介紹了基于go interface{}==nil 的幾種坑及原理分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
go slice 數(shù)組和切片使用區(qū)別示例解析
這篇文章主要為大家介紹了go slice 數(shù)組和切片使用區(qū)別示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Golang中調(diào)用deepseekr1的教程詳解
這篇文章主要為大家詳細介紹了Golang中調(diào)用deepseekr1的相關(guān)教程,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解下2025-02-02
Go語言中三個輸入函數(shù)(scanf,scan,scanln)的區(qū)別解析
本文詳細介紹了Go語言中三個輸入函數(shù)Scanf、Scan和Scanln的區(qū)別,包括用法、功能和輸入終止條件等,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-10-10

