在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

串口傳輸數(shù)據(jù)時(shí),結(jié)構(gòu)體如何轉(zhuǎn)換?

Q4MP_gh_c472c21 ? 來源:嵌入式專欄 ? 作者:嵌入式專欄 ? 2022-04-08 09:36 ? 次閱讀

嵌入式系統(tǒng)的串口數(shù)據(jù)傳輸都是以字節(jié)為單位,但是有些特殊的數(shù)據(jù)類型,比如浮點(diǎn)型float a=231.5,在內(nèi)存是如何表示的呢?

我們知道浮點(diǎn)型float數(shù)據(jù)類型占用4個(gè)字節(jié),實(shí)際上在內(nèi)存當(dāng)中a=0x43678000,只是嵌入式芯片訪問a時(shí),知道a是浮點(diǎn)型數(shù)據(jù),所以一次性讀取4個(gè)字節(jié),而且也按照浮點(diǎn)型的數(shù)據(jù)表示規(guī)定,將a轉(zhuǎn)換為十進(jìn)制的可讀數(shù)據(jù)231.5。

如果我們從串口接收到4個(gè)字節(jié)數(shù)據(jù){0x43,0x67,0x80,0x00},如何把這4個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換為float型呢?

直接令float a=0x43678000這是不行的(不信的讀者可以自行驗(yàn)證),這就是串口通訊當(dāng)中經(jīng)常遇到的問題,如果數(shù)據(jù)傳輸中包括了浮點(diǎn)型數(shù)據(jù),在這里我們可以通過共用體或者結(jié)構(gòu)體來解決。

對(duì)于共用體:

typedefunion
{
floatf;
unsignedchars[4];
}Union_test;

f的4個(gè)字節(jié)和s[4]的4個(gè)字節(jié)是共用一個(gè)區(qū)域,如果我們令f=231.5,然后通過VS的監(jiān)視窗查看s[4]的數(shù)值,下面是測試程序:

#include
//共用體
//floatf;//4個(gè)字節(jié)
//chars[4];//4個(gè)字節(jié)
typedefunion
{
floatf;
unsignedchars[4];
}Union_test;
typedefstructst
{
floatf1;
}Struct_test;
voidmain(void)
{
floata=231.5;
Union_testx;
Struct_testz;
x.f=a;
z=*(Struct_test*)(&(x.s));
printf("z=%.2f
",(double)z.f1);
printf("Endofthisprogramme
");
}

監(jiān)視結(jié)果如下所示:

8a680a3a-b6ba-11ec-aa7f-dac502259ad0.jpg

我們同樣適用結(jié)構(gòu)體做了相同的實(shí)驗(yàn),將數(shù)組s[4]={0x00,0x80,0x67,0x43}的首地址s[0]強(qiáng)制轉(zhuǎn)換賦值給結(jié)構(gòu)體z,最后打印輸出的結(jié)果也是231.5

這里我們看到原本應(yīng)該是0x4367_8000的數(shù)據(jù)實(shí)際存儲(chǔ)的時(shí)候變成了00H 80H 67H 43H,這是因?yàn)橛?jì)算機(jī)系統(tǒng)使用了小端存儲(chǔ),什么是小端存儲(chǔ)呢?

我們都知道,對(duì)于一個(gè)超過一個(gè)字節(jié)的數(shù)據(jù),其在計(jì)算機(jī)中的存儲(chǔ)需要跨越字節(jié)。某些機(jī)器選擇在存儲(chǔ)器中按照從最低為有效字節(jié)到最高有效字節(jié)的順序存儲(chǔ)對(duì)象,而另一些機(jī)器則按照從最高為有效字節(jié)到到最低為有效字節(jié)的順序存儲(chǔ),前一種存儲(chǔ)方式被稱為小端存儲(chǔ),后一種方式被稱為大端存儲(chǔ)。

舉個(gè)例子,對(duì)于十六進(jìn)制數(shù)0x01234567,其字節(jié)的存儲(chǔ)順序便依賴于機(jī)器,如下:

8a7c3104-b6ba-11ec-aa7f-dac502259ad0.png我們可以通過下面的函數(shù)測試是大端存儲(chǔ)還是小端存儲(chǔ):
voidtest(void)
{
inta=1;
unsignedchar*start=&a;
if(*start==1)
printf("小端存儲(chǔ)");
elseif(*start==0)
printf("大端存儲(chǔ)");
}

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

    關(guān)注

    4

    文章

    230

    瀏覽量

    27704
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1557

    瀏覽量

    76735
  • 傳輸數(shù)據(jù)
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16129

原文標(biāo)題:串口傳輸數(shù)據(jù)時(shí),結(jié)構(gòu)體如何轉(zhuǎn)換?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    結(jié)構(gòu)成員的順序會(huì)影響結(jié)構(gòu)的大小嗎

    相同的結(jié)構(gòu)成員,如果把順序調(diào)整一下,會(huì)不會(huì)影響結(jié)構(gòu)的大??? 答案是會(huì)的,這主要跟字節(jié)對(duì)齊有關(guān)。 比如這樣的結(jié)構(gòu)
    的頭像 發(fā)表于 11-25 16:24 ?237次閱讀

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口參數(shù)設(shè)置

    進(jìn)行介紹。在哪里設(shè)置串口參數(shù)--termios結(jié)構(gòu)POSIX規(guī)范中定義了標(biāo)準(zhǔn)接口-termios結(jié)構(gòu),在linux中用termios來設(shè)
    發(fā)表于 10-24 17:16

    飛凌嵌入式ElfBoard ELF 1板卡-串口通訊編程示例之串口參數(shù)設(shè)置

    進(jìn)行介紹。在哪里設(shè)置串口參數(shù)--termios結(jié)構(gòu)POSIX規(guī)范中定義了標(biāo)準(zhǔn)接口-termios結(jié)構(gòu),在linux中用termios來設(shè)
    發(fā)表于 10-23 13:34

    基于51單片機(jī)的溫濕度檢測報(bào)警及串口傳輸系統(tǒng)

    溫濕度報(bào)警閾值,且測得的溫濕度超過設(shè)定的閾值時(shí),相應(yīng)報(bào)警指示燈閃爍,蜂鳴器報(bào)警; (3)可將測得的溫濕度值實(shí)時(shí)發(fā)送到串口顯示。仿真演示視頻:基于51單片機(jī)的溫濕度檢測報(bào)警及串口傳輸系統(tǒng)-仿真
    的頭像 發(fā)表于 10-22 14:12 ?331次閱讀
    基于51單片機(jī)的溫濕度檢測報(bào)警及<b class='flag-5'>串口傳輸</b>系統(tǒng)

    sdi接口傳輸什么信號(hào)

    通過嵌入方式實(shí)現(xiàn)同步傳輸)進(jìn)行采樣、量化、編碼等處理,然后轉(zhuǎn)化為串行數(shù)據(jù)流進(jìn)行傳輸。在傳輸過程中,SDI接口采用了差分信號(hào)傳輸和時(shí)鐘恢復(fù)技術(shù)
    的頭像 發(fā)表于 08-20 15:03 ?1333次閱讀

    請(qǐng)問ESP32是否支持串口在線升級(jí)?

    請(qǐng)問ESP32是否支持串口在線升級(jí)。對(duì)OTA升級(jí)例程進(jìn)行修改,將http傳輸改為串口傳輸,是否可行。
    發(fā)表于 06-18 06:30

    嵌入式中C語言結(jié)構(gòu)基本實(shí)現(xiàn)

    C語言中的數(shù)組只能允許程序員定義存儲(chǔ)相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。 結(jié)構(gòu)
    的頭像 發(fā)表于 05-11 08:49 ?1096次閱讀
    嵌入式中C語言<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>基本實(shí)現(xiàn)

    C語言結(jié)構(gòu)史上最詳細(xì)的講解【軟件干貨】

    struct結(jié)構(gòu)數(shù)據(jù)類型 前言 我們知道,在C語言中有一些基本的數(shù)據(jù)類型,如?char?int?float?long?double?string(c99) 等等
    的頭像 發(fā)表于 03-28 17:52 ?809次閱讀

    串口通訊的三種雙工模式及工作原理

    對(duì)于文本數(shù)據(jù),通常使用ASCII編碼進(jìn)行轉(zhuǎn)換,以便在串口上傳輸。ASCII編碼將每個(gè)字符映射到一個(gè)特定的字節(jié)值,使得文本信息可以在串口通信中進(jìn)行傳輸
    的頭像 發(fā)表于 03-27 16:04 ?7249次閱讀
    <b class='flag-5'>串口</b>通訊的三種雙工模式及工作原理

    串口數(shù)據(jù)傳輸共用結(jié)構(gòu)之間的轉(zhuǎn)換技巧

    如果我們從串口接收到4個(gè)字節(jié)數(shù)據(jù){0x43,0x67,0x80,0x00},如何把這4個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換為float型呢?
    的頭像 發(fā)表于 03-22 12:28 ?764次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>數(shù)據(jù)傳輸</b>共用<b class='flag-5'>體</b>與<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>之間的<b class='flag-5'>轉(zhuǎn)換</b>技巧

    什么是串口 串口傳輸和adc的關(guān)系及區(qū)別

    串口通信中,數(shù)據(jù)以位的形式逐個(gè)傳輸,一般采用異步通信方式,即不需要時(shí)鐘信號(hào)來同步數(shù)據(jù)傳輸。在每個(gè)字符的開頭和結(jié)尾會(huì)有起始位和停止位,用于標(biāo)識(shí)數(shù)據(jù)
    的頭像 發(fā)表于 03-12 17:32 ?1706次閱讀

    什么是串口 串口無法傳輸數(shù)據(jù)的原因

      串口的出現(xiàn)可以追溯到1980年前后,當(dāng)時(shí)的數(shù)據(jù)傳輸率大約在115kbps至230kbps之間。初期,串口主要用于連接計(jì)算機(jī)的外設(shè),如鼠標(biāo)、外置Modem、老式攝像頭和寫字板等設(shè)備。
    的頭像 發(fā)表于 03-01 16:28 ?1w次閱讀
    什么是<b class='flag-5'>串口</b> <b class='flag-5'>串口</b>無法<b class='flag-5'>傳輸</b><b class='flag-5'>數(shù)據(jù)</b>的原因

    什么是串口?什么是并口?串口與并口有什么區(qū)別?

    什么是串口?什么是并口?串口與并口有什么區(qū)別? 串口和并口都是計(jì)算機(jī)與外部設(shè)備進(jìn)行數(shù)據(jù)傳輸的接口,它們之間存在一些重要區(qū)別。在下面的文章中,我將詳細(xì)介紹
    的頭像 發(fā)表于 02-02 15:33 ?9252次閱讀

    編解碼一機(jī)在流媒體傳輸中的核心作用

    編解碼一機(jī)在流媒體傳輸中起著核心作用,主要表現(xiàn)在以下幾個(gè)方面: 1. 視頻和音頻編碼:編解碼一機(jī)能夠?qū)σ曨l和音頻數(shù)據(jù)進(jìn)行高效的編碼,將原始的多媒體
    的頭像 發(fā)表于 01-31 14:20 ?453次閱讀
    編解碼一<b class='flag-5'>體</b>機(jī)在流媒體<b class='flag-5'>傳輸</b>中的核心作用

    串口通訊時(shí)的數(shù)據(jù)幀格式和通訊協(xié)議有什么區(qū)別?

    串口通訊時(shí)的數(shù)據(jù)幀格式和通訊協(xié)議是兩個(gè)不同的概念,它們?cè)?b class='flag-5'>串口通訊中起著不同的作用,但都是為了實(shí)現(xiàn)可靠的、有效的數(shù)據(jù)傳輸。
    的頭像 發(fā)表于 01-30 09:21 ?2115次閱讀
    主站蜘蛛池模板: 久久夜色精品国产噜噜小说| 亚洲狠狠狠一区二区三区| 热久久综合这里只有精品电影| 中国china体内裑精亚洲毛片| 人人草人人插| 97午夜理伦片在线影院| 欧美日韩色图| 天使色| 欧美操操操操| 99久在线| 小说区v天堂网| 痴女在线播放免费视频| 免费人成在线观看网站品爱网 | 午夜大片免费完整在线看| 国产一区美女视频| 人人干人人模| 精品国产_亚洲人成在线高清| 人人插人人插| 六月婷婷精品视频在线观看| 日韩成人毛片高清视频免费看| 亚洲性天堂| sss欧美一区二区三区| 在线一区观看| 曰本黄色一级| 一级aaaaaa片毛片在线播放| 四虎成人免费影院网址| 四虎永久在线精品国产免费| 婷婷综合激情| 婷婷激情五月综合| 日本成人资源| 国产成人精品亚洲77美色| 国产成人一区二区三中文| 夜夜夜久久久| 午夜va| 97天天做天天爱夜夜爽| 高清视频免费| 99香蕉精品视频在线观看| 日本精品卡一卡2卡3卡四卡三卡| 蝌蚪自拍网二区| 中文字幕在线天堂| 亚洲影视大全|