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

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

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

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

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

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

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

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

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

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

對于共用體:

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

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

#include
//共用體
//floatf;//4個字節(jié)
//chars[4];//4個字節(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ù)組s[4]={0x00,0x80,0x67,0x43}的首地址s[0]強制轉(zhuǎn)換賦值給結(jié)構(gòu)體z,最后打印輸出的結(jié)果也是231.5

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

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

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

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

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

    關(guān)注

    4

    文章

    235

    瀏覽量

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

    關(guān)注

    14

    文章

    1586

    瀏覽量

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

    關(guān)注

    1

    文章

    127

    瀏覽量

    16314

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

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

收藏 人收藏

    評論

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

    串口網(wǎng)關(guān)是什么

    、MQTT等),實現(xiàn)串口設(shè)備與網(wǎng)絡(luò)之間的互聯(lián)互通。它解決了傳統(tǒng)串口設(shè)備無法直接接入網(wǎng)絡(luò)的問題,是工業(yè)物聯(lián)網(wǎng)(IIoT)和智能設(shè)備管理中的關(guān)鍵組件。 核心功能 協(xié)議轉(zhuǎn)換串口
    的頭像 發(fā)表于 06-05 11:31 ?141次閱讀

    串口服務(wù)器:隔離485+232,雙向透傳

    串口服務(wù)器(Serial Device Server)是一種將傳統(tǒng)串口設(shè)備(如RS-232、RS-485、RS-422等)連接到網(wǎng)絡(luò)的硬件設(shè)備,其主要功能是將串口數(shù)據(jù)
    的頭像 發(fā)表于 05-27 15:02 ?128次閱讀

    GLAD應(yīng)用:全息光柵模擬

    用于模擬全息記錄介質(zhì)中形成的梯度折射率分布。全息結(jié)構(gòu)一旦形成,就可以在傳輸過程中將一束入射光波逐漸轉(zhuǎn)換成形成體全息結(jié)構(gòu)的另一束光波。兩束光
    發(fā)表于 05-15 09:32

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    《程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)》重點闡述了三大方向內(nèi)容: 1. C語言學(xué)習(xí)中的痛點:針對當(dāng)前工程師在C語言學(xué)習(xí)中的痛點,如指針函數(shù)與函數(shù)指針,如何靈活應(yīng)用結(jié)構(gòu)等。從變量的三要素(變量的類型,變量的值和變量
    發(fā)表于 05-13 16:45

    串口轉(zhuǎn)網(wǎng)口(Modbus轉(zhuǎn)MQTT)灌區(qū)數(shù)采網(wǎng)關(guān)有什么功能特點

    在一座大型灌區(qū)中部署有多個泵站、閘站、測控站等設(shè)施,里面包括水泵、閥門、閘門、PLC、流量計、水位計等設(shè)備。這些設(shè)備主要通過ModbusRTU協(xié)議進行通信,數(shù)據(jù)通過串口傳輸,但在接入智慧灌區(qū)管理平臺
    的頭像 發(fā)表于 05-08 15:29 ?108次閱讀
    <b class='flag-5'>串口</b>轉(zhuǎn)網(wǎng)口(Modbus轉(zhuǎn)MQTT)灌區(qū)數(shù)采網(wǎng)關(guān)有什么功能特點

    C語言中結(jié)構(gòu)與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場景

    一、基礎(chǔ)概念與核心差異 1.1 結(jié)構(gòu)(Struct)的本質(zhì) **結(jié)構(gòu)是C語言中實現(xiàn)數(shù)據(jù)封裝的基石,其核心特征在于內(nèi)存獨立性。每個成員變量
    發(fā)表于 04-08 09:18

    如何通過串口將8路adc采集的數(shù)據(jù)傳輸給上位機顯示

    處理模塊data_dispose把采集的八路數(shù)據(jù)轉(zhuǎn)換為電壓數(shù)據(jù),并且轉(zhuǎn)換為BCD編碼。uart_byte模塊選擇對應(yīng)通道的數(shù)據(jù)發(fā)送給
    的頭像 發(fā)表于 03-14 09:09 ?562次閱讀
    如何通過<b class='flag-5'>串口</b>將8路adc采集的<b class='flag-5'>數(shù)據(jù)傳輸</b>給上位機顯示

    串口通信原理解析 串口與并口的區(qū)別

    在計算機硬件和通信領(lǐng)域,串口(Serial Port)和并口(Parallel Port)是兩種常見的數(shù)據(jù)傳輸接口。它們在數(shù)據(jù)傳輸方式、速度、應(yīng)用場景等方面有著明顯的區(qū)別。 串口通信原
    的頭像 發(fā)表于 12-27 09:50 ?1773次閱讀

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

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

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

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

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

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

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

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

    UART串口通訊協(xié)議解析

    - 數(shù)據(jù)接受接口 GND - 保證兩設(shè)備共地,有統(tǒng)一的參考平面 通信協(xié)議 UART串口傳輸數(shù)據(jù)被組織成數(shù)據(jù)包。每個數(shù)據(jù)包包含1個起始位
    發(fā)表于 09-12 16:01

    sdi接口傳輸什么信號

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

    ESP8266_RTOS3.0串口0傳輸大量數(shù)據(jù)丟包的原因?

    傳輸數(shù)據(jù)最大1500字節(jié),使用的ESP8266_RTOS3.0,先使用的example示例中的uart_events,結(jié)果發(fā)現(xiàn)當(dāng)我向串口0發(fā)送長度大約800字節(jié)的數(shù)據(jù)時,重復(fù)收到消息隊
    發(fā)表于 07-09 06:32
    主站蜘蛛池模板: 欧美人成网站免费大全 | 欧美视频区 | 色视频在线免费看 | xxx性xxx乱 | 久久久久国产免费 | 国产在线色视频 | 亚洲黄色成人 | 一区二区不卡视频在线观看 | 美国一级做a一级爱视频 | 在线观看视频网站 | 欧美性一区二区三区 | 欧美在线黄色 | 国产精品久久婷婷六月丁香 | 免费国产午夜高清在线视频 | 天天视频官网天天视频在线 | 欧美三级一区 | 亚洲欧美日韩动漫 | 99热久久精品最新 | 91福利国产在线观看网站 | 色婷婷六月桃花综合影院 | 888米奇色狠狠俺去啦 | www.天天操| 日韩天堂在线观看 | 亚洲人成网站在线在线 | 性猛交╳xxx乱大交 性免费视频 | 午夜视频在线观看国产 | 双性人皇上被c到哭 | 色天天综合久久久久综合片 | 在线亚洲小视频 | 97一区二区三区 | 中文天堂最新版在线精品 | 国产一级大片免费看 | 免费的三级网站 | 精品国产免费观看久久久 | 久久精品免看国产 | 欧美日韩国产一区二区三区不卡 | 精品卡1卡2卡三卡免费网站视频 | 丁香婷婷久久 | 91视频综合网 | 国产精品三级 | 狠狠做久久深爱婷婷97动漫 |