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是高位
你能夠
說明數據是低位存在低位 高位存在高位,因此是小端模式
其實只要知道就能夠
真不行你解析的時候 一看解析不對顛倒一下
其他的仍是放到下節吧,先消化消化