https://www.cnblogs.com/yangfengwu/p/11100552.html

 

这节做个上位机控制Wi-Fi引脚输出的PWM占空比信号,灯的亮度就可以用上位机控制了

大家可以自己扩展程序控制舵机的旋转角度

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 双击

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 

textBox3.Text = trackBar1.Value.ToString();//显示当前滑动条的值

 

 

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

然后规定下协议  注意为了大家以后做项目的通用性  数据传输用

讲一个知识点

大家传输十进制数据怎么传输的,,传输浮点型数据怎么传输的  大家百度下IEEE754

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 看一下用它做数据转换的妙用

 

我直接说了

假设你要发送220.5

这样做

咱们新建一个data_dispose.h文件

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 为了预防别人用我的源码在C++里面编译

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

typedef union Resolve//解析数据
{
    char  Data_Table[4];//16进制四字节表示形式
    float DataF;//浮点型
    long DataInt;//有符号整形
    unsigned long DatauInt;//无符号整形
}ResolveData;

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 

 现在看使用

假设我采集了仪器仪表  仪器仪表就是IEEE754规范 发过来的220.5的 浮点型数据   0x43  0x5C  0x80 0x00  

 

我现在需要转化为220.5

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

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

举个例子:259

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约       13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

化为16进制表示是  0x01  0x03      这样排序就是高位在前

16进制怎么转成259呢   就是   0x01==1    1乘于2的8次方  再  加上   0x03  就是  3

1*256 + 3 = 259

 

如果计算完以后内存里面是这样存储的    

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 说个名词:大端模式

如果数据的高位存储在了存储地址的低位   数据的低位存储在了存储地址的高位    -----名称:大端模式

 

与之相反的是小端模式

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 数据的低位存储在了存储地址的低位   数据的高位存储在了存储地址的高位    -----名称:小端模式

如果你做过仪器仪表,或者用过仪器仪表  应该知道,工业里面经常用到

 

然后提醒一下

51单片机存储数据是大端模式

STM32  是小端模式

电脑:小端模式

手机:好像是大端模式...忘记了

 

咱用的这个8266  小端模式

有人可能会问,具体怎么看出来的....

接着看

 

首先要记着

注意一件事情  0x43  0x5C  0x80 0x00   是高位数据在前 低位数据在后

 

 

 刚才我测试了下,官方给的printf不支持打印浮点数.......

所以我自己写了个printf功能

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

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);
}

 

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 

 先打印看看

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

现在咱 把浮点型的数据转16进制数组存储

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

出来是 0xcd 0x4c 0xbe 0x43 

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

由于8266是 小端模式  所以反着排的  低位在前 高位在后

 

上面主要说明的是 如何按照IEEE754规约 进行 16进制和浮点数的转化

 

其实测试大端 小端 很简单

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

你可以

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 说明数据是低位存在低位  高位存在高位,所以是小端模式

其实只要知道就可以

真不行你解析的时候  一看解析不对颠倒一下

13-ESP8266 SDK开发基础入门篇--上位机串口控制 Wi-Fi输出PWM的占空比,IEEE754规约

 

 

 

 

 其余的还是放到下节吧,先消化消化

https://www.cnblogs.com/yangfengwu/p/11104167.html

 

相关文章:

  • 2021-12-05
  • 2021-11-27
  • 2021-08-25
  • 2022-12-23
  • 2021-09-03
  • 2022-02-13
  • 2022-12-23
  • 2021-05-30
猜你喜欢
  • 2022-01-17
  • 2021-12-17
  • 2021-11-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
相关资源
相似解决方案