13-ESP8266 SDK開發基礎入門篇--上位機串口控制 Wi-Fi輸出PWM的佔空比,IEEE754規約

http://www.javashuo.com/article/p-tgkajzhu-cg.htmlhtml

 

這節作個上位機控制Wi-Fi引腳輸出的PWM佔空比信號,燈的亮度就能夠用上位機控制了數組

你們能夠本身擴展程序控制舵機的旋轉角度緩存

 

 

 

 

 

 雙擊函數

 

 

 

 

textBox3.Text = trackBar1.Value.ToString();//顯示當前滑動條的值

 

 

 

 

 

 

 

而後規定下協議  注意爲了你們之後作項目的通用性  數據傳輸用測試

講一個知識點spa

你們傳輸十進制數據怎麼傳輸的,,傳輸浮點型數據怎麼傳輸的  你們百度下IEEE7543d

 

 

 

 

 

 看一下用它作數據轉換的妙用code

 

我直接說了htm

假設你要發送220.5blog

這樣作

我們新建一個data_dispose.h文件

 

 

 

 

 

 爲了預防別人用個人源碼在C++裏面編譯

 

 

typedef union Resolve//解析數據
{
    char  Data_Table[4];//16進制四字節表示形式
    float DataF;//浮點型
    long DataInt;//有符號整形
    unsigned long DatauInt;//無符號整形
}ResolveData;

 

 

 

 如今看使用

假設我採集了儀器儀表  儀器儀表就是IEEE754規範 發過來的220.5的 浮點型數據   0x43  0x5C  0x80 0x00  

 

我如今須要轉化爲220.5

 

注意一件事情  0x43  0x5C  0x80 0x00   是高位數據在前

舉個例子:259

       

 

化爲16進製表示是  0x01  0x03      這樣排序就是高位在前

16進制怎麼轉成259呢   就是   0x01==1    1乘於2的8次方  再  加上   0x03  就是  3

1*256 + 3 = 259

 

若是計算完之後內存裏面是這樣存儲的    

 

 說個名詞:大端模式

若是數據的高位存儲在了存儲地址的低位   數據的低位存儲在了存儲地址的高位    -----名稱:大端模式

 

與之相反的是小端模式

 

 數據的低位存儲在了存儲地址的低位   數據的高位存儲在了存儲地址的高位    -----名稱:小端模式

若是你作過儀器儀表,或者用過儀器儀表  應該知道,工業裏面常常用到

 

而後提醒一下

51單片機存儲數據是大端模式

STM32  是小端模式

電腦:小端模式

手機:好像是大端模式...忘記了

 

咱用的這個8266  小端模式

有人可能會問,具體怎麼看出來的....

接着看

 

首先要記着

注意一件事情  0x43  0x5C  0x80 0x00   是高位數據在前 低位數據在後

 

 

 剛纔我測試了下,官方給的printf不支持打印浮點數.......

因此我本身寫了個printf功能

 

 

 

 

 

 

void sendstring(unsigned char *string)//此處*string至關於數組
{
    while(*string!='\0')//判斷是否到字符串末尾
    {
        USART_SendData(UART0, *string);
        string++;
    }
}

void uart_printf(const char *fmt,...)//和printf同樣使用
{
    va_list ap;
    char string[200];//緩存,若是發送的超過此數,請自行增大
    va_start(ap,fmt);
    vsprintf(string,fmt,ap);//此處也可使用sprintf函數,用法差很少,稍加修改便可,此處略去
    sendstring(string);
    va_end(ap);
}

 

 

 

 

 

 

 先打印看看

 

 

如今咱 把浮點型的數據轉16進制數組存儲

 

 

 

 

 

 

 

出來是 0xcd 0x4c 0xbe 0x43 

 

因爲8266是 小端模式  因此反着排的  低位在前 高位在後

 

上面主要說明的是 如何按照IEEE754規約 進行 16進制和浮點數的轉化

 

其實測試大端 小端 很簡單

你反正知道  259是   0x01  0x03   0x01是高位

你能夠

 

 

 

 

 

 

 

 

 說明數據是低位存在低位  高位存在高位,因此是小端模式

其實只要知道就能夠

真不行你解析的時候  一看解析不對顛倒一下

 

 

 

 

 其他的仍是放到下節吧,先消化消化

http://www.javashuo.com/article/p-faxltlcy-db.html

相關文章
相關標籤/搜索