在线观看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)換?

Dp1040 ? 來(lái)源:工程師進(jìn)階筆記 ? 2023-05-19 10:52 ? 次閱讀

嵌入式系統(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,只是嵌入式芯片訪問(wèn)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)常遇到的問(wèn)題,如果數(shù)據(jù)傳輸中包括了浮點(diǎn)型數(shù)據(jù),在這里我們可以通過(guò)共用體或者結(jié)構(gòu)體來(lái)解決。

對(duì)于共用體:

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

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

#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é)果如下所示:

ceb0cf7c-f5ef-11ed-90ce-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è)超過(guò)一個(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ī)器,如下:

cebc6936-f5ef-11ed-90ce-dac502259ad0.png ?

我們可以通過(guò)下面的函數(shù)測(cè)試是大端存儲(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5142

    文章

    19561

    瀏覽量

    315414
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3668

    瀏覽量

    130959
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3111

    瀏覽量

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

    關(guān)注

    14

    文章

    1586

    瀏覽量

    79019
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    130

    瀏覽量

    11047

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

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

收藏 人收藏

    評(píng)論

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

    socket 傳輸結(jié)構(gòu) 省去字符與數(shù)據(jù)轉(zhuǎn)換

    socket通訊中send函數(shù)直接傳送的是字符串為了避免客戶端和服務(wù)器斷的數(shù)據(jù)格式轉(zhuǎn)換,使用結(jié)構(gòu)傳輸較為合適---------------
    發(fā)表于 09-25 16:58

    串口傳輸字庫(kù)

    串口傳輸字庫(kù),
    發(fā)表于 12-26 16:57

    串口傳輸結(jié)構(gòu)是什么意思

    串口傳輸 結(jié)構(gòu)就是 把結(jié)構(gòu) 轉(zhuǎn)換為 數(shù)組 ,然后傳輸
    發(fā)表于 07-14 08:34

    單片機(jī)C語(yǔ)言串口傳輸結(jié)構(gòu)是什么?

    單片機(jī)C語(yǔ)言串口傳輸結(jié)構(gòu)是什么?
    發(fā)表于 10-14 06:44

    如何通過(guò)串口傳輸數(shù)據(jù)

    目錄一、串口通信概述1. 串口如何連接2. 如何計(jì)算波特率二、實(shí)驗(yàn)演示1. 實(shí)驗(yàn)設(shè)備2. 實(shí)際電路連接3. 通過(guò)串口傳輸數(shù)據(jù)三、總結(jié)參考文獻(xiàn)一、串口
    發(fā)表于 01-12 06:03

    如何用串口傳輸float類型數(shù)據(jù)

    單片機(jī)小知識(shí)如何使用串口傳輸float類型數(shù)據(jù)比較難的就是數(shù)據(jù)進(jìn)制的轉(zhuǎn)化模擬量比如說(shuō) 角度 距離速度 這些是10進(jìn)制,串口通信用的是16進(jìn)制 , 數(shù)
    發(fā)表于 01-19 06:12

    怎么驗(yàn)證串口傳輸數(shù)據(jù)有誤然后重發(fā)?

    怎么驗(yàn)證串口傳輸數(shù)據(jù)有誤 然后重發(fā)?
    發(fā)表于 10-24 08:21

    串口通訊服務(wù)器的端口傳輸速率

    串口通訊服務(wù)器的端口傳輸速率  由于終端服務(wù)器產(chǎn)品通常具有多種接口,每種接口傳輸速率各不相同。典型接口傳輸速率如下:
    發(fā)表于 01-07 14:00 ?1726次閱讀

    通過(guò)DMA模式控制串口傳輸的方法

    在USART文章中講解了串口的輪詢和中斷模式,本文介紹一下通過(guò)DMA模式控制串口傳輸。
    的頭像 發(fā)表于 09-23 11:08 ?1.1w次閱讀
    通過(guò)DMA模式控制<b class='flag-5'>串口傳輸</b>的方法

    STM32 LoRa無(wú)線數(shù)傳模塊 PC通過(guò)串口傳輸數(shù)據(jù)到單片機(jī)

    STM32F1單片機(jī),燒錄代碼后,連接LoRa無(wú)線數(shù)傳模塊,在PC上面使用串口助手,通過(guò)串口傳輸數(shù)據(jù)到單片機(jī)串口1,并在LCD顯示屏顯示
    發(fā)表于 11-19 11:51 ?79次下載
    STM32 LoRa無(wú)線數(shù)傳模塊 PC通過(guò)<b class='flag-5'>串口傳輸</b><b class='flag-5'>數(shù)據(jù)</b>到單片機(jī)

    串口傳輸(51單片機(jī)版)

    串口傳輸在51單片機(jī)里是非常重要的一點(diǎn),這常常是在中斷、計(jì)數(shù)器后面學(xué)習(xí),因?yàn)椴豢杀苊獾男枰玫街袛唷?1單片機(jī)的串口,是個(gè)全雙工的串口,發(fā)送數(shù)據(jù)的同時(shí),還可以接收
    發(fā)表于 11-23 16:20 ?0次下載
    <b class='flag-5'>串口傳輸</b>(51單片機(jī)版)

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

    我們知道浮點(diǎn)型float數(shù)據(jù)類型占用4個(gè)字節(jié),實(shí)際上在內(nèi)存當(dāng)中a=0x43678000,只是嵌入式芯片訪問(wèn)a時(shí),知道a是浮點(diǎn)型數(shù)據(jù),所以一次性讀取4個(gè)字節(jié),而且也按照浮點(diǎn)型的數(shù)據(jù)表示規(guī)定,將a
    的頭像 發(fā)表于 04-08 09:36 ?1197次閱讀

    串口的收發(fā)是指什么 串口傳輸與蜂鳴器的關(guān)系是什么

    串口是一種通信接口,用于在計(jì)算機(jī)和外部設(shè)備之間傳輸數(shù)據(jù)。串口傳輸通常使用一根傳輸線,按照一定的協(xié)議和通信速率,將
    發(fā)表于 08-10 14:59 ?1663次閱讀

    串口通信協(xié)議有哪些 串口傳輸文件方法有哪些類型

    串口傳輸文件的方法有以下幾種類型:   1. XMODEM:XMODEM是一種最早應(yīng)用于串口傳輸文件的協(xié)議,它使用簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)進(jìn)行傳輸
    的頭像 發(fā)表于 08-15 14:43 ?1.5w次閱讀

    怎么通過(guò)串口傳輸文件 網(wǎng)口傳輸串口傳輸的區(qū)別

    串口通常用于串行數(shù)據(jù)傳輸,主要用于傳輸數(shù)字數(shù)據(jù)。在傳統(tǒng)的串口通信規(guī)范(如RS-232、RS-485)中,并沒(méi)有專門設(shè)計(jì)用于
    的頭像 發(fā)表于 08-18 15:15 ?1.4w次閱讀
    主站蜘蛛池模板: 4438x成人免费 | 免费看h视频 | 国产在线观看网址你懂得 | 插插好爽爽爽 | 欧美有码视频 | 久久九色| 在线观看黄色x视频 | 韩国三级视频在线 | 国产精品色婷婷在线观看 | 亚洲综合色婷婷中文字幕 | 亚洲欧美日韩另类精品一区二区三区 | 婷婷 夜夜 | 欧美色欧美亚洲高清在线视频 | 亚洲精品在线视频观看 | 欧美三级久久 | 国产精品免费久久 | 欧美黑人黄色片 | 一级片免费在线 | 另类专区欧美 | 亚洲一区精品中文字幕 | 男人的天堂视频在线 | 天天艹| 久久免费公开视频 | 美女黄18以下禁止观看的网站 | va在线观看 | www.精品视频 | 欧美爱爱网 | 99久久国产免费中文无字幕 | 丝袜美腿视频一区二区三区 | 521色香蕉网在线观看免费 | www资源| 午夜视频国产 | riav久久中文一区二区 | 五月婷婷七月丁香 | 亚洲国产一区二区在线 | 亚洲免费mv | 色天使美国| 男女爱爱视频免费看 | 美女和美女 | 午夜三级网站 | 免费亚洲视频在线观看 |