www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 原創(chuàng) > 振南技術(shù)干貨集(風云錄)
[導讀]很多時候我們需要進行長字符串的拆分。在振南的研發(fā)經(jīng)歷中,使用到這種操作的最典型的應(yīng)用場合有三個。

長字符串的拆分技巧

很多時候我們需要進行長字符串的拆分。在振南的研發(fā)經(jīng)歷中,使用到這種操作的最典型的應(yīng)用場合有三個。

1.NMEA協(xié)議數(shù)據(jù)的解析

NMEA可能很多人不太了解,但是說到GPS肯定大家都很熟悉。當我們從GPS模塊中讀取定位信息的時候,數(shù)據(jù)就是遵循NMEA協(xié)議格式的。圖2.2為一個標準的GPS數(shù)據(jù)幀。

圖2.2 一個符合NMEA協(xié)議標準的GPS數(shù)據(jù)幀

整個數(shù)據(jù)幀采用ASCII編碼,它以$GP作為開始,后面依次排列的是各項參數(shù),參數(shù)之間使用,作為分隔。比如$GPRMC為推薦定位信息,我當時就是使用這一條數(shù)據(jù)來獲取經(jīng)緯度信息的(當時是Intel杯嵌入式邀請賽需要作一個手持GPS跟蹤器)。這條數(shù)據(jù)中N后面是緯度,E后面是經(jīng)度。我們要作的就是將它們從整個數(shù)據(jù)幀(一個長字符串)中提取出來。所以,這就涉及到了所謂的“長串拆分”。

2.Shell命令行的命令解析

在很多項目中,我都習慣于基于串口編寫一個后臺Shell系統(tǒng),可以起到一個基本的調(diào)試作用。從而一定程度上減少修改代碼和固件燒錄的次數(shù)。比如,項目中如果涉及DAC電壓經(jīng)常的調(diào)整輸出,我就會在后臺中設(shè)計一個命令SetV n,以便隨時靈活的操控DAC。隨著項目功能的升級,后臺命令也會變得開始復雜。比如SetArg a b c d e f g h....,用于同時設(shè)置程序中多個關(guān)鍵參數(shù)的值;再比如SetV channel n freq a,設(shè)置某通道第n個信號的輸出幅值和頻率。

這些命令通過PC上的串口助手或調(diào)試終端來發(fā)送,比如超級終端、SecureCRT或XShell等。程序中從串口接收到命令之后,將其放入內(nèi)存的緩沖區(qū)中,其形式就是一個字符串。命令字以及后面的若干參數(shù)之間使用空格來分隔。程序要匹配命令字,并提取參數(shù),以便執(zhí)行相應(yīng)的操作。所以,這也涉及到長串的拆分。

3.DTU模塊的AT指令解析

AT指令其實和NMEA是一個道理,它們都是一種通信協(xié)議格式,只不過AT指令更多使用在網(wǎng)絡(luò)通信模塊中,比如SIM800、ESP8266、HC06藍牙串口等。舉個例子,我們想知道網(wǎng)絡(luò)信號強度,就可以向模塊發(fā)送”AT+CSQ\r\n”,模塊會返回”+CSQ: 29,0\r\n”。CSQ:后面的29就是信號強度。它們都是ASCII編碼的,也就是一個字符串。我們需要將29從其中提取出來。當然,AT指令也有比較復雜的,字符串會比較長,包含的參數(shù)也會比較多。所以,要想使用這些網(wǎng)絡(luò)模塊實現(xiàn)網(wǎng)絡(luò)通信,就必須實現(xiàn)對AT指令的解析。

說了這么多,都是在說長串拆分很重要。根本問題是如何實現(xiàn)它?很多人可能都會想到使用那個分隔字符,比如空格、逗號。然后去一個個數(shù)要提取的參數(shù)前面有幾個分隔字符,然后后將相應(yīng)位置上的字符組成一個新的短字符串。如圖2.3所示。

圖2.3 通過分隔字符定位要提取的部分

這種方法固然可行,但是略顯笨拙。其實對于這種有明顯分隔符的長字符串,我們可以采用“打散”或“爆炸”的思想,具體過程是這樣的:將長字符串中的所有分隔符全部替換為’\0’,即字符串結(jié)束符。此時,長字符串就被分解成了在內(nèi)存中順序存放的若干個短字符串。如果要取出第n個短字符串,可以用這個函數(shù):

很多時候我們需要一次性訪問長字符串中的多個短字符串,此時振南經(jīng)常會這樣來作:通過一個循環(huán),將長字符串中的所有分隔符替換為’\0’,在此過程中將每一個短字符串首字符的位置記錄到一個數(shù)組中,代碼如下:

好,舉個例子:我們要提取”abc 1000 50 off 2500”中的”abc”、”50”和”off”,可以使用上面的函數(shù)來實現(xiàn)。

聲明:該篇文章為本站原創(chuàng),未經(jīng)授權(quán)不予轉(zhuǎn)載,侵權(quán)必究。
換一批
延伸閱讀

ESP32模塊非常通用,可以通過WiFi連接到各種不同的平臺來發(fā)送和接收數(shù)據(jù)。在本教程中,我們將使用Arduino的物聯(lián)網(wǎng)云平臺(這是完全免費使用)與ESP32。有關(guān)Arduino IoT Cloud的更詳細概述,請查看...

關(guān)鍵字: GPS ESP32模塊 Arduino 物聯(lián)網(wǎng)

無人機以高效創(chuàng)新的方案,改變了多個行業(yè)的格局。在農(nóng)業(yè)領(lǐng)域,無人機助力精準農(nóng)業(yè)、作物監(jiān)測和牲畜追蹤。工業(yè)部門利用無人機進行現(xiàn)場勘測、基礎(chǔ)設(shè)施檢查和項目監(jiān)控。無人機還在革新配送服務(wù),尤其在向偏遠地區(qū)運送包裹、醫(yī)療用品和緊急援...

關(guān)鍵字: 無人機 GPS 圖像傳感器

無GPS環(huán)境下的自主導航是當今無人駕駛飛行器(UAV)系統(tǒng)面臨的最關(guān)鍵挑戰(zhàn)之一。從城市峽谷到地下隧道和茂密的森林,許多現(xiàn)實世界的環(huán)境使GPS不可靠或完全不可用。為了讓無人機在這些條件下安全有效地運行,無論是執(zhí)行搜救任務(wù)、...

關(guān)鍵字: 無人機 GPS TELEM2

雖然現(xiàn)有的技術(shù)已經(jīng)顯著改善了盲人的導航和障礙物檢測,但它們主要集中在這些方面。我們的目標是擴展這項技術(shù),不僅包括檢測,還包括物體、人臉和圖像的識別。人工智能的廣泛應(yīng)用旨在通過提供有關(guān)其周圍環(huán)境的更詳細和有意義的信息來增強...

關(guān)鍵字: 人工智能 GPS 人臉識別

2025年3月24日 – 提供超豐富半導體和電子元器件?的業(yè)界知名新品引入 (NPI) 代理商貿(mào)澤電子 (Mouser Electronics) 即日起供應(yīng)Molex的MX-DaSH線對線連接器。該連接器在同一個系統(tǒng)中集...

關(guān)鍵字: 連接器 顯示器 GPS

Sensize的低功耗藍牙和GPS追蹤設(shè)備可監(jiān)測各類在途貨物。其重點聚焦于食品分銷鏈,由于全球雜貨零售業(yè)產(chǎn)生的巨大食品浪費,這一領(lǐng)域尤其引人注目。據(jù)智能廢棄物處理公司Recycle Tracking Systems的數(shù)據(jù)...

關(guān)鍵字: 低功耗藍牙 GPS 自動化

本項目演示了如何使用粒子B系列SoM構(gòu)建實時大象跟蹤系統(tǒng)。該系統(tǒng)可以對大象進行實時GPS跟蹤,并實施地理圍欄,如果大象離開了預定義的邊界,就通知護林員。數(shù)據(jù)顯示在與OpenStreetMap集成的web界面上,并存儲在F...

關(guān)鍵字: B-SoM模塊 GPS 蜂窩物聯(lián)網(wǎng) LED

在這個Visuino項目中,確保精確計時與雙源系統(tǒng)!

關(guān)鍵字: Visuino GPS ESP8266-D1 LCD

全球定位系統(tǒng)(GPS)是一種基于衛(wèi)星的無線電導航系統(tǒng),歸美國政府所有,由美國太空部隊運營。它是全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)的一種,它向地球上或地球附近的任何地方的GPS接收器提供地理位置和時間信息,這些接收器可以暢通無阻...

關(guān)鍵字: GP-20U7 GPS 藍牙

在智能穿戴設(shè)備日益普及的今天,智能手表作為其中的佼佼者,不僅具備了時間顯示、健康監(jiān)測等基本功能,還融入了GPS定位技術(shù),為用戶提供精準的地理位置服務(wù)。然而,智能手表受限于體積和功耗,其GPS定位功能的實現(xiàn)與優(yōu)化面臨諸多挑...

關(guān)鍵字: 智能手表 GPS
關(guān)閉