女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式數(shù)據(jù)分包以及相關(guān)技巧

嵌入式情報局 ? 來源:最后一個bug ? 2023-01-06 14:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前些天跟大家解釋了如下代碼:

		

offset=len/64+!!(len%64);

并且跟大家詳細聊了一下其中的!!操作,然而這段代碼的主要功能還是為了進行分包處理,既然是分包自然而然就會想到一種常用的分包處理方法,這也是本文的重點。

數(shù)據(jù)分包在嵌入式軟件開發(fā)中算是一種非常常見的處理,其主要原因還是硬件上的各種限制,不得已而為之,特別是在通信協(xié)議的定制過程中尤為常見。

1

傳輸限制

玩過各種通信協(xié)議的朋友都知道,像非常多的通信方式都是以數(shù)據(jù)幀的形式來進行傳遞,不同的通信方式因各方面的因素又存在一個最大傳輸字節(jié)數(shù)的限制,考慮到穩(wěn)定性、容錯性等等對單次發(fā)送的數(shù)據(jù)長度進行限制,又或者所接收的設(shè)備其內(nèi)存資源有限,不足以接收、處理過長的數(shù)據(jù)包。

zigbee這樣的物理層每幀最大只能傳輸127個字節(jié),通過每層不斷的封包到應(yīng)用層后每包才100個字節(jié)。當上層用戶協(xié)議的數(shù)據(jù)包過大,無法一次性傳輸,就只能分包或者分組下發(fā),最終接收方組包后解析提取數(shù)據(jù)。

2

分包設(shè)計的考慮

有些朋友該說了,我就不喜歡搞大包發(fā)送,使用短包,然后通過不同的標識進行不同數(shù)據(jù)位的定義,簡單很多。

當然長包與短包并沒有本質(zhì)上的區(qū)別,其目的都是傳輸數(shù)據(jù),但在實踐的過程中還是會遇到居多處理上的區(qū)別:

數(shù)據(jù)的同步性方面:

比如當通信的設(shè)備轉(zhuǎn)速超了,同時報了一個故障碼,如果采用短包上傳,很可能故障碼和轉(zhuǎn)速位于不同的數(shù)據(jù)包中,當數(shù)據(jù)包丟包或許是亂序,就會導(dǎo)致當接收到故障碼的時候,此時超標的轉(zhuǎn)速值已經(jīng)丟失或者延時等,有概率不能準確獲得故障時的超標轉(zhuǎn)速。

而使用長包,只需要發(fā)送方能夠保證打包的時候同步,那么接收方就可以同步獲得相應(yīng)的數(shù)據(jù)。

通信協(xié)議設(shè)計自由度方面:

在設(shè)計協(xié)議的時候,長包會更加的自由,大多數(shù)情況都不需要考慮大數(shù)據(jù)傳輸?shù)?/span>占位問題,甚至在編碼上直接copy結(jié)構(gòu)體發(fā)送也是相當方便的。

3

計算包數(shù)問題

既然長包的設(shè)計相對比較方便。那分包處理是少不了的?

分包還不簡單?

要發(fā)100個字節(jié)的數(shù)據(jù),每次只能發(fā)15個,那發(fā)送7包就可以了,直接編碼,代碼如下:

SendPack=SendNum/PackNum;
if(SendPack%PackNum)SendPack++;

這算是常規(guī)操作,如果覺得有點難度,還要多敲敲代碼。

一般用C語言比較久的朋友都想去簡化這種操作,畢竟實現(xiàn)一個簡單的功能需要兩行代碼,強迫癥,忍不了~

就有了本文開頭的!!處理方式,或者如下處理也是一樣的:


		

#include #definePackNum(total,single)(total/single+((total%single)?1:0)) intmain(void) { printf("packNum:%d ",PackNum(100,15)); printf("packNum:%d ",PackNum(150,15)); printf("packNum:%d ",PackNum(200,15)); printf("packNum:%d ",PackNum(5,15)); printf("hellobug~ "); return0; }

僅僅只是秀了一下C語言的幾個小技巧罷了,并沒有實質(zhì)性的改善。

很明顯,本文的重點并不是介紹如上兩種辦法,而是如下更加高效的代碼:


		

PackNum=(total+(singleNum-1))/singleNum;

對于一些以往沒有使用的朋友或許有點懵,那bug菌這是嘮叨幾句:

該表達式主要是利用了取整的特性來達到+1的目的。

直接除單包個數(shù),不能整除的情況,結(jié)果都會少1,比如10/6,應(yīng)該是2包,而由于最終除法結(jié)果只能是1。

所以通過補償(singleNum - 1)后,結(jié)果就分兩種情況:

1、原本能夠整除的數(shù),補償后無法整除,結(jié)果與之前一致;

2、原本不能夠整除的數(shù),其余數(shù)必然在【1~(singleNum- 1)】之間,所以補償以后,其余數(shù)范圍在【singleNum~(singleNum+ singleNum- 2),則其結(jié)果為整除部分+1。

與我們分包個數(shù)是一致的,相當巧妙。

4

擴展

這種方法不僅僅只是用于通信的分組中,把思維進一步泛化。

只要是類似分組的處理都可以使用該算法

比如內(nèi)存的分區(qū),flash的設(shè)計上都是一個扇區(qū)一個扇區(qū)的分布。

現(xiàn)在想分配整數(shù)個扇形區(qū)域用于存儲某些數(shù)據(jù),每一個扇區(qū)512個字節(jié),存儲2000個字節(jié)的數(shù)據(jù),該分配幾個扇區(qū)?

我相信你已經(jīng)有答案了~

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5147

    文章

    19619

    瀏覽量

    316510
  • ZigBee
    +關(guān)注

    關(guān)注

    158

    文章

    2279

    瀏覽量

    245880
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7631

    瀏覽量

    141145

原文標題:嵌入式數(shù)據(jù)分包以及相關(guān)技巧

文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux嵌入式和單片機嵌入式的區(qū)別?

    : 單片機嵌入式 :開發(fā)環(huán)境相對簡單,通常使用C語言或匯編語言進行編程,開發(fā)工具包括Keil、IAR等。 Linux嵌入式 :開發(fā)環(huán)境較為復(fù)雜,除了需要掌握C語言,還需要了解Linux操作系統(tǒng)的相關(guān)知識
    發(fā)表于 06-20 09:46

    嵌入式去哪個城市好?

    對于嵌入式技術(shù)從業(yè)者來說,選擇哪個城市發(fā)展是一個重要的決策。以下是一些建議: 一線城市 北京作為中國的首都和科技中心,北京擁有眾多頂尖的高校和研究機構(gòu),以及大量的高科技企業(yè),為嵌入式開發(fā)和應(yīng)用提供了
    發(fā)表于 04-02 10:12

    如何成為嵌入式開發(fā)工程師?

    如何成為嵌入式開發(fā)工程師? 成為嵌入式開發(fā)工程師通常需要掌握一系列技能和知識,并且在實踐中不斷積累經(jīng)驗。以下是一些基本步驟和建議: 1. 基礎(chǔ)教育:- 獲取電子工程、計算機科學(xué)或相關(guān)領(lǐng)域的學(xué)位
    發(fā)表于 02-19 10:39

    嵌入式主板的概述與發(fā)展

    隨著科技的迅猛發(fā)展,嵌入式系統(tǒng)在現(xiàn)代電子產(chǎn)品中扮演著越來越重要的角色。嵌入式主板作為嵌入式系統(tǒng)的核心組件之一,承擔著控制、處理和通訊等多種功能。本文將對嵌入式主板的基本概念、構(gòu)成部分、
    的頭像 發(fā)表于 01-13 16:30 ?746次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發(fā)展

    哪些專業(yè)適合學(xué)習(xí)嵌入式開發(fā)?

    網(wǎng)絡(luò)協(xié)議與標準,包括MQTT、CoAP以及HTTP等,適合物聯(lián)網(wǎng)領(lǐng)域的數(shù)據(jù)交換和通信。 5)物聯(lián)網(wǎng)工程:直接關(guān)聯(lián)物聯(lián)網(wǎng)領(lǐng)域,涉及嵌入式系統(tǒng)、網(wǎng)絡(luò)通信、數(shù)據(jù)處理與分析等,適合物聯(lián)網(wǎng)領(lǐng)域。
    發(fā)表于 01-03 13:44

    ARM架構(gòu)嵌入式主板特點

    嵌入式主板可以理解為嵌入在設(shè)備中用于控制和數(shù)據(jù)處理的CPU板,也就是設(shè)備的“大腦”。當主板嵌入到設(shè)備中,當然對主板的體積和功耗會有更嚴格的要求(嵌入
    的頭像 發(fā)表于 12-31 16:03 ?972次閱讀
    ARM架構(gòu)<b class='flag-5'>嵌入式</b>主板特點

    新手怎么學(xué)嵌入式?

    基本的概念。嵌入式系統(tǒng)是一種將計算機技術(shù)嵌入到特定設(shè)備中的系統(tǒng),它通常具有特定的功能和有限的資源。你需要學(xué)習(xí)一些計算機基礎(chǔ)知識,如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計算機組成原理等。這些知識將幫助你理解嵌入
    發(fā)表于 12-12 10:51

    什么是嵌入式?一文讀懂嵌入式主板

    在現(xiàn)代科技浪潮中,嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運行的核心力量。那么,究竟什么是嵌入式嵌入式系統(tǒng),顧名思義,是將計算機的硬件和軟件嵌入到某種設(shè)備或系統(tǒng)中,以實現(xiàn)特定功能的計算
    的頭像 發(fā)表于 10-16 10:14 ?2534次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統(tǒng)的核心組件,是一種用于控制和數(shù)據(jù)處理的計算機硬件,其設(shè)計旨在嵌入特定設(shè)備中執(zhí)行專門任務(wù)。嵌入式主板如同是設(shè)備
    的頭像 發(fā)表于 09-30 10:05 ?1571次閱讀

    嵌入式常用數(shù)據(jù)結(jié)構(gòu)有哪些

    嵌入式編程中,數(shù)據(jù)結(jié)構(gòu)的選擇和使用對于程序的性能、內(nèi)存管理以及開發(fā)效率都具有重要影響。嵌入式系統(tǒng)由于資源受限(如處理器速度、內(nèi)存大小等),因此對數(shù)
    的頭像 發(fā)表于 09-02 15:25 ?1012次閱讀

    嵌入式linux開發(fā)的基本步驟有哪些?

    嵌入式Linux開發(fā)是一個復(fù)雜的過程,涉及到硬件選擇、操作系統(tǒng)移植、驅(qū)動開發(fā)、應(yīng)用程序開發(fā)等多個方面。以下是嵌入式Linux開發(fā)的基本步驟,以及每個步驟的說明。 硬件選擇 在開始嵌入式
    的頭像 發(fā)表于 09-02 09:11 ?1192次閱讀

    嵌入式系統(tǒng)是什么?

    含軟件運行環(huán)境以及操作系統(tǒng),硬件部分包含信號處理器、存儲器以及通信模塊等多方面內(nèi)容。與傳統(tǒng)的計算機系統(tǒng)相比,嵌入式系統(tǒng)與之相差很大,它并不能實現(xiàn)大容量的存儲功能,軟件部分則以API接口
    的頭像 發(fā)表于 08-29 16:26 ?962次閱讀

    學(xué)習(xí)hypervisor嵌入式產(chǎn)品安全設(shè)計

    第一部分(第1~2章)介紹Hypervisor基礎(chǔ),涵蓋虛擬化技術(shù)與實現(xiàn)、主流的嵌入式Hypervisor產(chǎn)品,以及基于分離內(nèi)核的嵌入式Hypervisor等內(nèi)容。第二部分(第3~12章)介紹
    發(fā)表于 08-25 09:11

    嵌入式系統(tǒng)中的實時操作系統(tǒng)

    嵌入式RTOS是嵌入式應(yīng)用程序運行、相互交互和與外界通信的底層軟件機制。在本節(jié)中,您將了解嵌入式軟件開發(fā)人員使用哪些流行RTOS以及它們運行的嵌入式
    的頭像 發(fā)表于 08-20 11:28 ?855次閱讀

    嵌入式開發(fā)前景怎么樣?

    嵌入式開發(fā)前景非常廣闊,這主要得益于物聯(lián)網(wǎng)、人工智能、大數(shù)據(jù)等技術(shù)的快速發(fā)展,以及嵌入式系統(tǒng)在各個領(lǐng)域的廣泛應(yīng)用。以下是對嵌入式開發(fā)前景的詳
    的頭像 發(fā)表于 07-10 09:00 ?4318次閱讀
    <b class='flag-5'>嵌入式</b>開發(fā)前景怎么樣?
    主站蜘蛛池模板: 蕉岭县| 古交市| 吴川市| 枝江市| 深泽县| 澎湖县| 贡觉县| 太和县| 新宾| 资兴市| 望都县| 河池市| 文水县| 安仁县| 洞口县| 石景山区| 博罗县| 绥阳县| 黔西| 光泽县| 乐昌市| 当雄县| 彭水| 通化县| 遂川县| 常德市| 阿坝县| 广河县| 南投县| 化隆| 泰来县| 蚌埠市| 潍坊市| 广东省| 池州市| 梧州市| 浦城县| 扬州市| 洮南市| 安多县| 荆门市|