日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

長字符串的拆分技巧

很多時候我們需要進行長字符串的拆分。在振南的研發(fā)經(jī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),可以起到一個基本的調試作用。從而一定程度上減少修改代碼和固件燒錄的次數(shù)。比如,項目中如果涉及DAC電壓經(jīng)常的調整輸出,我就會在后臺中設計一個命令SetV n,以便隨時靈活的操控DAC。隨著項目功能的升級,后臺命令也會變得開始復雜。比如SetArg a b c d e f g h....,用于同時設置程序中多個關鍵參數(shù)的值;再比如SetV channel n freq a,設置某通道第n個信號的輸出幅值和頻率。

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

3.DTU模塊的AT指令解析

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

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

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

這種方法固然可行,但是略顯笨拙。其實對于這種有明顯分隔符的長字符串,我們可以采用“打散”或“爆炸”的思想,具體過程是這樣的:將長字符串中的所有分隔符全部替換為’\0’,即字符串結束符。此時,長字符串就被分解成了在內(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)授權不予轉載,侵權必究。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉