第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

無法通過串口解析 GPS 信息

無法通過串口解析 GPS 信息

Go
烙印99 2022-06-13 16:07:54
我使用了以下軟件包:從串口讀取 ( go get go.bug.st/serial)解析來自串口的傳入消息 ( go get adrianmo/go-nmea)主機(jī):Windows 10轉(zhuǎn)到版本:轉(zhuǎn)到版本 go1.14.4 windows/amd64根據(jù)文檔,我編寫了一個(gè)簡單的代碼,打開專用串行端口(COM4)并從端口讀取 NMEA 數(shù)據(jù)并嘗試根據(jù)go-nmea包解析數(shù)據(jù)數(shù)據(jù)來自 GPS 傳感器的傳入數(shù)據(jù):$GPRMC,135533.000,A,5306.6644,N,00851.3177,E,0.11,214.59,300620,,,A*6E$GPRMC,135534.000,A,5306.6643,N,00851.3177,E,0.06,187.72,300620,,,A*68$GPRMC,135535.000,A,5306.6643,N,00851.3177,E,0.22,341.68,300620,,,A*6C$GPRMC,135536.000,A,5306.6644,N,00851.3176,E,0.20,324.35,300620,,,A*60$GPRMC,135537.000,A,5306.6645,N,00851.3176,E,0.12,348.37,300620,,,A*69代碼片段package mainimport (    "fmt"    "log"    "github.com/adrianmo/go-nmea"    "go.bug.st/serial"        }    }}問題如果我運(yùn)行代碼,我會(huì)收到以下錯(cuò)誤:2020/06/30 16:02:16 nmea: sentence does not start with a '$' or '!'exit status 1這很奇怪,因?yàn)槿绻易⑨尩舸a解析代碼:        // s, err := nmea.Parse(rawSentence)        // if err != nil {        //  log.Fatal(err)        // }        // if s.DataType() == nmea.TypeRMC {        //  m := s.(nmea.RMC)        //  fmt.Printf("Raw sentence: %v\n", m)        //  fmt.Printf("Time: %s\n", m.Time)        //  fmt.Printf("Validity: %s\n", m.Validity)        //  fmt.Printf("Latitude GPS: %s\n", nmea.FormatGPS(m.Latitude))        //  fmt.Printf("Latitude DMS: %s\n", nmea.FormatDMS(m.Latitude))        //  fmt.Printf("Longitude GPS: %s\n", nmea.FormatGPS(m.Longitude))        //  fmt.Printf("Longitude DMS: %s\n", nmea.FormatDMS(m.Longitude))        //  fmt.Printf("Speed: %f\n", m.Speed)        //  fmt.Printf("Course: %f\n", m.Course)        //  fmt.Printf("Date: %s\n", m.Date)        //  fmt.Printf("Variation: %f\n", m.Variation)        // }如上所述,串口打印 GPS 坐標(biāo)。我在哪里錯(cuò)了?我嘗試通過在代碼中執(zhí)行以下操作來刪除換行符和回車符:        rawSentence := string(buff[:n])        rawSentence = string.ReplaceAll(rawSentence, "\r\n", "")        fmt.Print(rawSentence)但我仍然得到同樣的錯(cuò)誤。
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

我能夠找出問題所在。我首先檢查我的字節(jié)是如何從以下代碼中讀取的:


     n, err := serPort.Read(buff)

     fmt.Printf("%d", n)

它依次給出值1和73, 74。假設(shè)1是設(shè)備本身發(fā)送的換行符,我發(fā)現(xiàn)這可能是代碼無法捕獲的原因$GPRMC。


因此我修改了我的代碼以檢查讀取的字節(jié)數(shù)是否總是大于 1 字節(jié)


    for {

        n, err := serPort.Read(buff)

        fmt.Printf("%v\n", n)

        if err != nil {

            log.Fatal(err)

            break

        }

        // do not try to parse a single read byte

        // instead parse the actual incoming string.

        if n > 1 {

            rawSentence := string(buff[:n])

            fmt.Print(rawSentence)

            s, err := nmea.Parse(rawSentence)

            if err != nil {

                log.Fatal(err)

            }

            if s.DataType() == nmea.TypeRMC {

                m := s.(nmea.RMC)

                fmt.Printf("Raw sentence: %v\n", m)

                fmt.Printf("Time: %s\n", m.Time)

                fmt.Printf("Validity: %s\n", m.Validity)

                fmt.Printf("Latitude GPS: %s\n", nmea.FormatGPS(m.Latitude))

                fmt.Printf("Latitude DMS: %s\n", nmea.FormatDMS(m.Latitude))

                fmt.Printf("Longitude GPS: %s\n", nmea.FormatGPS(m.Longitude))

                fmt.Printf("Longitude DMS: %s\n", nmea.FormatDMS(m.Longitude))

                fmt.Printf("Speed: %f\n", m.Speed)

                fmt.Printf("Course: %f\n", m.Course)

                fmt.Printf("Date: %s\n", m.Date)

                fmt.Printf("Variation: %f\n", m.Variation)

            }

        }

    }

果然,代碼現(xiàn)在可以工作了,得到的輸出是我所期望的:


$GPRMC,142312.000,A,5306.6774,N,00851.3114,E,0.04,14.48,300620,,,A*5A

Raw sentence: $GPRMC,142312.000,A,5306.6774,N,00851.3114,E,0.04,14.48,300620,,,A*5A

Time: 14:23:12.0000

Validity: A

Latitude GPS: 5306.6774

Latitude DMS: 53° 6' 40.644000"

Longitude GPS: 851.3114

Longitude DMS: 8° 51' 18.684000"

Speed: 0.040000

Course: 14.480000

Date: 30/06/20

Variation: 0.000000


查看完整回答
反對 回復(fù) 2022-06-13
  • 1 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號