第7章_低成本 Modbus 传感器的实现

文章目录

  • 第7章 低成本 Modbus 传感器的实现
    • 7.1 硬件资源介绍与接线
    • 7.2 开发环境搭建
    • 7.3 创建与体验第 1 个工程
      • 7.3.1 创建工程
      • 7.3.2 配置调试器
      • 7.3.3 配置 GPIO 操作 LED
    • 7.4 UART 编程
      • 7.4.1 使用 STM32CubeMX 进行配置
        • 1.UART1
        • 2.配置 RS485方向引脚
      • 7.4.2 封装 UART
      • 7.4.3 上机实验
        • 1. 硬件连接
        • 2. STM32H5 程序改造
        • 3.STM32F030程序调试
    • 7.5 libmodbus 移植
      • 7.5.1 移植 libmodbus
      • 7.5.2 使用 modbus 控制设备
      • 7.5.3 上机实验
    • 7.6 传感器设计
      • 7.6.1 设计思路
      • 7.6.2 三款传感器功能及所用引脚
      • 7.6.3 点表设计
        • 1.开关量模块(SWITCH)
        • 2. 环境监测模块(ENV_MONITOR)
      • 7.6.4 开关量传感器程序设计
      • 7.6.5 环境监测传感器程序设计
        • 1. 硬件电路
        • 2. 配置 GPIO 和 ADC
        • 3. 读取 ADC 的关键代码
      • 7.6.6 温湿度传感器程序设计
        • 1. 硬件电路与操作方法
        • 2. 配置 I2C
        • 3. 读取温湿度关键代码

第7章 低成本 Modbus 传感器的实现

7.1 硬件资源介绍与接线

我们的 Modbus 传感器开发套件共有三个, 三个板子的使用的主控方案是 STM32F030芯片,硬件接口资源如下图所示:

img

开关量模块

img

温湿度变送器模块

img

环境检测模块

7.2 开发环境搭建

在前面我们已经安装了 Keil MDK、STM32CubeMX、STM32CubeProgrammer、ST-Link 驱 动、 CH340 驱动。因此在这里我们只需给 Keil MDK 安装 STM32F030 对应的 PACK 即可对改 芯片进行编码开发。

安装 PACK 的方法有两种:

  • 第一种方法:双击运行开发板配套资料中的 Pack 安装包,随后弹出安装界面,按照默 认选项进行安装即可。:

img

  • 第二种方法,在线安装, 下面演示如何在线安装。

打开Keil之后, 点击如下按钮启动“Pack Installer”:

使用 “Pack Installer” 可 以 方 便 的 对 Pack 安 装 和 管 理 。 在 左 上 角 搜 索 框 输 入 “STM32F030”,展开搜索结果,可以看到STM32F030CC,点击右边的简介链接即可跳转 到Pack下载页面,如下图所示。

img

如果跳转网页无法打开,可直接打开 Pack 下载总入口(www.keil.com/dd2/Pack/)。 进入 Pack 下载总入口后,搜索“STM32F030”,找到“STM030CCT”点击, 如下图所示(实 测部分网络环境打开该链接无 Pack 列表,请尝试换个网络环境测试,仍旧不行则使用配 套资料 Pack)。

img

点击会跳转到 pack 包界面,点击右上角的”STM32F0xxDFP“即可跳转到 pack 包下载界面,点击右上角”STM32F0xxDFP“处即可下载 pack 包,如下图所示。

img

img

下载完成得到“Keil.STM32F0xx_DFP.2.1.1.pack”,直接双击该文件,随后弹出安装界 面,按照默认选项进行安装即可。

7.3 创建与体验第 1 个工程

7.3.1 创建工程

启动 STM32CubeMX 后,点击如下图标开始选择 MCU:

img

如下图输入型号“STM32F030CCT”,双击找到的芯片, 开始创建工程:

img

调高 CPU 频率:

img

配置工程, 如下操作:

img

指定代码生成方法, 如下:

img

7.3.2 配置调试器

新建的工程要配置调试器,参考《2.2.3 配置调试器》 。

然后就可以编译程序、烧写运行了。

7.3.3 配置 GPIO 操作 LED

打开位于“5_硬件资料\01_开发板原理图\STM32F030CCT6_SWITCH_V11.pdf”的原理图 文件。

根据开发板原理图可以看到 F030的LED 引脚图如下:

img

可以双击打开工程中如下文件进入STM32CubeMX进行配置:

img

然后如下配置 PB11 、PB12 、PB13 为输出引脚:

img

点击右上角的 “GENERATE CODE”按钮后打开工程。

在main函数的循环里, 增加如下代码:

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{/* USER CODE END WHILE *//* USER CODE BEGIN 3 *//* set LED output high */HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET); //LED1HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); //LED2HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET); //LED3HAL_Delay(500);/* set LED output low */HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);//LED1HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); //LED2HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); //LED3HAL_Delay(500);
}

最后编译、烧写、运行, 可以看到开发板的 LED 闪烁。

7.4 UART 编程

7.4.1 使用 STM32CubeMX 进行配置

本节源码为“3_程序源码\01_视频配套的源码\7-5_STM32F030串口编程\demo”。 RS4385接口原理图如下:

img

需要在STM32CubeMX里配置UART1,并且配置PA8为输出引脚。

1.UART1

先使能 UART1:

img

然后使能中断:

img

在前面STM32H5的UART程序里使用了DMA,本节故意不使用DMA而使用纯中断来 实现UART,多学一种编程方法。

2.配置 RS485方向引脚

STM32H5主控板上使用的RS485转换芯片是MAX13487EESA,它会自动切换发送、 接收方向,无需程序进行方向的控制。使用STM32F030制作的“廉价传感器”里,使用 的RS485转换芯片是SIT3088ETK,它需要使用一个GPIO来控制方向,如下图所示:

img

上图中,RS485_CTRL使用的引脚是PA8,所以还需要把它配置为输出引脚,输出低 电平(让SIT3088ETK默认为接收状态) 。如下配置:

img

7.4.2 封装 UART

本节源码为“3_程序源码\01_视频配套的源码\7-5_STM32F030串口编程\demo”。 现场编程。

7.4.3 上机实验

本节源码为“3_程序源码\01_视频配套的源码\7-6_STM32F030 串口测试”,里面有 2 个程序:h5_demo、f030_demo。

要测试 STM32F030 的串口, 只需要把它的 485 接口连接到 PC 去就可以了,但是我们没 有 PC 上使用的“USB 转 485”模块,所以使用 STM32H5 来实现一个“USB 转 485 模块”:

  • 它从 USB 串口读到数据,再从 485 接口发送出去;

  • 它从 485 接口读到数据,再从 USB 串口发送给 PC。

1. 硬件连接

img

2. STM32H5 程序改造

本节源码为“3_程序源码\01_视频配套的源码\7-6_STM32F030串口测试\h5_demo”。

3.STM32F030程序调试

本节源码为“3_程序源码\01_视频配套的源码\7-6_STM32F030串口测试\f030_demo”。

7.5 libmodbus 移植

本节源码为“3_ 程序源码\01_ 视频配套的源码\7-7_STM32F030 上libmodbus 移植 \f030_demo”。

7.5.1 移植 libmodbus

把“7-6_STM32F030串口测试\h5_demo\demo\Middlewares\Third_Party\libmodbus”整 个目录复制到f030_demo中。

在Keil工程中添加代码, 如下:

img

7.5.2 使用 modbus 控制设备

STM32F030作为从设备(sever),编写“Core\Src\freertos.c”:

7.5.3 上机实验

7.6 传感器设计

7.6.1 设计思路

上位机(PC 软件)或中控(STM32H5)通过 modbus 协议访问 STM32F030 传感器时,读 写的是 STM32F030 分配出来的 4 个类型的缓冲区。这里需要解决 2 个问题:

  • 这 4 个类型的缓冲区起始地址、大小分别是多少? 这根据传感器的功能来设置。比如有 2 个按键,那么就可以分配 2 个“只读的位寄存器”(DI)。

  • 这些寄存器的值, 如何跟硬件对应? 比如上位机读 DI 寄存器时, 谁提供这些值?传感 器的程序应该读取按键值,填充 DI 寄存器。

第 1 个步骤,被称为“点表设计”。

7.6.2 三款传感器功能及所用引脚

这 3 款传感器的原理图在网盘如下目录里:

img

它们控制外设所用的引脚,列表如下:

功能使用的引脚描述寄存器类别
ENV_MONITOR 环境监测模块BEEP1PB15高电平发声DO
BEEP2PB14高电平发声DO
LED1PB11低电平发光DO
LED2PB12低电平发光DO
LED3PB13低电平发光DO
OPTO_ADCPA1电压值跟光强成反比AI
RES_ADCPA2电压值跟可调电阻成反比AI
SWITCH开关量模块KEY1PA3低电平表示被按下DI
KEY2PA4低电平表示被按下DI
KEY3PA5低电平表示被按下DI
K1_CTRLPB5高电平使能继电器DO
K2_CTRLPB4高电平使能继电器DO
LED1PB11低电平发光DO
LED2PB12低电平发光DO
LED3PB13低电平发光DO
TEMP_HUMI温湿度模块BEEP1PB15高电平发声DO
BEEP2PB14高电平发声DO
LED1PB11低电平发光DO
LED2PB12低电平发光DO
LED3PB13低电平发光DO
I2C1_SCLPB6可以读到温度、湿度 AIAI
I2C2_SDAPB7可以读到温度、湿度 AIAI

7.6.3 点表设计

所谓点表, 就是一个 modbus 设备,它的地址是什么? 它里面 4 类寄存器的地址、功能 是什么。

在查看点表时,经常碰到“遥测、遥信、遥控、遥调”的概念。它们实质上就是前面 讲解 modbus 时引入的“AI、DI、DO、AO”。这些概念起源于电力系统。

电力领域中四遥系统是指遥测、遥信、遥控、遥调功能系统, 四遥功能是电力监控系 统最基本最重要的功能。具体来说:

  • 遥测(遥测信息,AI):远程测量;远方测量显示诸如电流、电压、功率、压力、温度等 模拟量;

  • 遥信(遥信信息,DI):远程信号;远方监视各类电气开关和设备、机械设备的工作状态 和运转情况状态等;

  • 遥控(遥控信息,DO):远程控制;接受并执行遥控命令,远方控制或保护电气设备及电 气机械化的分合起停等工作状态;

  • 遥调(遥调信息,AO):远程调节;接受并执行遥调命令,远方设定及调整所控设备的工 作参数、标准参数;四遥遥测、遥信、遥控、遥调常常被简称为 AI、DI、DO、AO。

AI、DI、DO、AO 都是英文名称的首字母缩写,A 的英文全称 Analog (模拟量)、D 的英 文全称 Digital (数字量) 、I 的英文全称 Input (输入)、O 的英文全称 Output (输出)。 因此, AI 表示的是模拟信号输出, AO 是模拟信号输入,DI 是数字信号输入, DO 是数字信 号输出。

随着技术不断地进步,现在也有五遥的说法, 即在四遥的基础上加上遥视, 遥视指的 是指利用包括电子技术、计算机技术、自动化技术等监视并记录设备运行情况和环境安全 情况。因此伴随着技术发展, 电力系统中从一遥(遥信 DI)阶段、发展到二遥(遥信 AI、 遥测 DI)、三遥(遥信 AI、遥测 DI 和遥控 DO)、四遥(遥信 AI、遥测 DI、遥控 DO 和遥 调 AO);现在开始四遥向五遥过渡。

原文链接:https://blog.csdn.net/LuohenYJ/article/details/106027626

在阅读点表时,还会碰到下表中的“PLC/组态地址”,或者表中的简称“0x、1x、4x、 3x”, 它们的本质都是用来分辨“AI、AO、DI、DO”四类寄存器:

寄存器种类PLC/组态地址Modbus 寄存器地址范围简称读写状态
线圈状态00001~099990000H~FFFFH0x可读可写
离散输入状态~10001 199990000H~FFFFH1x只读
保持寄存器40001~499990000H~FFFFH4x可读可写
输入寄存器~30001 399990000H~FFFFH3x只读

点表的设计,是完全由开发人员自行定义的。

1.开关量模块(SWITCH)

寄存器说明:

设备地址寄存器地址寄存器类别用途描述
01H0000HDI读取按键 KEY11-被按下
0001HDI读取按键 KEY21-被按下
0002HDI读取按键 KEY31-被按下
0000HDO控制继电器 11-吸合
0001HDO控制继电器 21-吸合
0002HDO控制 LED11-亮
0003HDO控制 LED21-亮
0004HDO控制 LED31-亮
2. 环境监测模块(ENV_MONITOR)

寄存器说明:

设备地址寄存器地址寄存器类别用途描述
02H0000HDO控制蜂鸣器 11-响
0001HDO控制蜂鸣器 21-响
0002HDO控制 LED11-亮
0003HDO控制 LED21-亮
0004HDO控制 LED31-亮
0000HAI读取光敏电压0xfff 对应 3.3V12 位精度
0001HAI可调电阻器电压0xfff 对应 3.3V12 位精度
  1. 温湿度模块(TEMP HUMI)
设备地址寄存器地址寄存器类别用途描述
03H0000HDO控制蜂鸣器 11-响
0001HDO控制蜂鸣器 21-响
0002HDO控制 LED11-亮
0003HDO控制 LED21-亮
0004HDO控制 LED31-亮
0000HAI读取温度单位 0.1 摄氏度 16 位有符号整数
0001HAI读取湿度单位 0.1%RH16 位有符合整数

7.6.4 开关量传感器程序设计

继电器原理图如下:

img

继电器对外的信号有 3 个:

  • COM:公共端,通常是中间的触点, 与常开或常闭触点相连
  • NC(Normally Closed): 常闭接口,继电器吸合前与 COM 连接, 吸合后悬空
  • NO(Normally Open): 常开接口, 继电器吸合前悬空, 吸合后与 COM 连接

开路即通路、断路,闭合指的是开关闭合,也就是说, 在没有任何上电之类的动作时, NC 和 COM 端相当于已经连通。

本节源码为“ 3_ 程 序源 码\01_ 视 频配套 的 源 码\7-9_ 开 关 量 传 感 器 程序 设 计 \f030_demo”。

7.6.5 环境监测传感器程序设计

1. 硬件电路

光敏电路如下, 光照越强,U6 阻值越低,OPTO_ADC 电压值就越低:

img

可调电阻器如下,R33 阻值越大,RES_ADC 电压值越小:

img

本节源码为“3_ 程序源码\01_ 视频配套的源码\7-10_ 环境监测传感器程序设计 \f030_demo”。

2. 配置 GPIO 和 ADC

先在STM32CubmeMX里配置GPIO和ADC 引脚,使能“Discontinuous Conversion Mode ”:

img

3. 读取 ADC 的关键代码
// 1. 检验
HAL_ADCEx_Calibration_Start(&hadc) ;// 启动、读2次数值
for (int i = 0; i < 2; i++)
{HAL_ADC_Start(&hadc);if (HAL_OK == HAL_ADC_PollForConversion(&hadc, 100)){mb_mapping->tab_input_registers[i] = HAL_ADC_GetValue(&hadc); }
}

7.6.6 温湿度传感器程序设计

本节源码为“ 3_ 程序源码\01_ 视频配套 的源码\7-11_ 温湿度传感器程序设计 \f030_demo”。

1. 硬件电路与操作方法

原理图如下:

img

AHT20 芯片资料在网盘如下目录:

img

AHT20 操作方法如下:

img

详解如下:

  • 发送测量命令:传感器的 VDD 上电后需等待 5ms, 发送写测量命令 0x70 0xAC 0x330x00, 等待 80ms 测量完成;

  • 获取温湿度校准数据: 在等待 80ms 测量完成后, 发送 0x71 读传感器,可获取状态字 Status、温湿度校准数据 SRH[19:0]、ST[19:0]以及校准字 CRC;

  • 根据公式计算温湿度:

img

计算检验码的函数如下:

//**********************************************************//
//CRC校验类型:  CRC8
//多项式:  X8+X5+X4+1
//Poly:0011 0001 0x31
unsigned char Calc_CRC8(unsigned char *message,unsigned char Num)
{unsigned char i;unsigned char byte;unsigned char crc =0xFF;for (byte = 0;byte<Num;byte++){crc^=(message[byte]);for(i=8;i>0;--i){if(crc&0x80)crc=(crc<<1)^0x31;elsecrc=(crc<<1);}}return crc;
}//
**********************************************************//
2. 配置 I2C

img

3. 读取温湿度关键代码

读取一次温湿度值, 耗时至少 80ms。不可能在接收到modbus 请求后再去读温湿度。而 是使用另一个任务不断读取温湿度。

HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) ;HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/37560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现写入缓存策略的最佳方法探讨

实现写入缓存策略的最佳方法探讨 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在软件开发中实现写入缓存策略的最佳方法。缓存在提升应用性能和…

计算机的错误计算(十五)

摘要 介绍历史上由于计算精度问题引起的灾难或事件。 今天换个话题&#xff0c;说说历史上曾经发生过的一些事件。 1961 年 , 美国麻省理工学院气象学家洛伦兹在仿真天气预报时 , 将 0.506127 舍入到 0.506 , 所得计算结果大相径庭 ! 这种“差之毫厘 , 谬以千里”的现象…

第十一节:学习通过动态调用application.properties参数配置实体类(自学Spring boot 3.x的第二天)

大家好&#xff0c;我是网创有方。这节实现的效果是通过代码灵活地调用application.properties实现配置类参数赋值。 第一步&#xff1a;编写配置类 package cn.wcyf.wcai.config;import org.springframework.beans.factory.annotation.Value; import org.springframework.boo…

深入探索:WebKit中Flexbox布局的全面支持与实践

标题&#xff1a;深入探索&#xff1a;WebKit中Flexbox布局的全面支持与实践 摘要 Flexbox布局是CSS3的一部分&#xff0c;提供了一种更加强大和灵活的方式来布局、对齐和分配容器内项目的空间&#xff0c;即使它们的大小未知或是动态变化的。WebKit作为Safari浏览器的渲染引…

11. Revit API UI 补充

11. Revit API UI 补充 UI篇我也只写了主要的&#xff0c;部分关联的没有写。 以前发的又不想去改&#xff0c;这里就做一些补充吧。 一、可停靠窗口补充 在可停靠窗口那篇&#xff0c;提到要实现IDockablePageProvider接口&#xff0c;就略过了。 该接口要求实现一个方法。…

苏东坡传-读书笔记四

长江三峡&#xff0c;无人不知其风光壮丽&#xff0c;但对旅客而言&#xff0c;则是险象环生。此段江流全长二百二十余里&#xff0c;急流旋涡在悬崖峭壁之间滚转出入&#xff0c;水下暗石隐伏&#xff0c;无由得见&#xff0c;船夫要极其敏捷熟练&#xff0c;才可通行。三峡之…

每日算法-二分查找

适用场景 适用于有序数组中查找某一个值. 每查找一次,就将搜寻范围缩小一半, 平均时间复杂度是O(logN), 简记作:O(lgN). 主要难点 主要难点在于边界条件的判断&#xff1b; 大致思路: 1.当供查找的数组不合法时,直接返回结果,查询无果; 2.当数组长度等于1时,直接判断是否…

AI生成音乐——创作的革命与未来的思考

AI在创造还是毁掉音乐&#xff1f; 最近一个月&#xff0c;音乐大模型的轮番上线&#xff0c;迅速降低了素人生产音乐的门槛&#xff0c;并引发了关于音乐圈是否会被AI彻底颠覆的热议。短暂的兴奋过后&#xff0c;更多理性的目光开始审视AI产品的版权归属、创意产业在AI阴影下…

Redis 7.x 系列【6】数据类型之字符串(String)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 常用命令2.1 SET2.2 GET2.3 MSET2.4 MGET2.5 GETSET2.6 STRLEN2.7 SETEX2.8…

全方位对比PostgreSQL和MySQL

目录 引言 技术架构与设计哲学 起源与发展 数据库引擎 PostgreSQL与MySQL&#xff1a;SQL语法与特性对比概览 PostgreSQL与MySQL高级特性对比&#xff1a;数据类型与事务处理能力 数据类型与功能特性 PostgreSQL与MySQL性能与可扩展性对比 PostgreSQL与MySQL性能与可扩…

南昌高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

南昌高校大学智能制造实验室&#xff0c;作为该地区乃至全国智能制造领域的重要研究和教学基地&#xff0c;一直致力于探索和创新智能制造技术。近日&#xff0c;该实验室的数字孪生可视化系统平台建设项目成功通过了验收&#xff0c;标志着其在数字孪生技术领域取得了重大突破…

Trick :带 pop 的 STL 结构化绑定时不要用 auto

题目描述 给一个 n m n\times m nm 矩阵迷宫&#xff0c; 第 i i i 行第 j j j 列的值为 c i , j c_{i,j} ci,j​ &#xff0c; L H LH LH 在迷宫中迷路了&#xff0c;他需要你的帮助。 L H LH LH 当前在 ( 1 , 1 ) (1,1) (1,1) 的位置&#xff0c;出口在 ( n , m ) (n…

安卓应用内通信的核心-Handler

Handler Handler是安卓应用内通信的核心。 Handler相关的类简介 Handler机制整体可以看作一个传送带。 Looper 传送带的轮子。Handler 传送带上货物的入口和出口。Message 传送带上的货物。MessageQueue 传送带的皮带。 基础知识 一个Thread只有一个Looper&#xff0c;一…

滑动窗口2

1. 水果成篮&#xff08;904&#xff09; 题目描述&#xff1a; 算法原理&#xff1a; 根据题目意思&#xff0c;friuts表示第i棵树上的水果种类&#xff0c;然后我们有两个篮子去在这些树上去采水果&#xff0c;但是有限制就是一个篮子里就只能装一种水果&#xff0c;也就是…

矩阵运算在数据分析中的应用

矩阵运算在数据分析中的应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 矩阵运算作为数学和计算机科学中的重要概念&#xff0c;在数据分析和科学计算中发…

elasticsearch源码分析-03选举集群状态

选举集群状态 es中存储的数据有一下几种&#xff0c;state元数据、lucene索引文件、translog事务日志 元数据信息可以分为&#xff1a; 集群层面的元信息-对应着metaData数据结构&#xff0c;主要是clusterUUid、settings、templates等索引层面的元信息-对应着indexMetaData数…

RK35x8通过TFTP下载内核到开发板

对于有网线接口的RK35X8开发板&#xff0c;调试时候&#xff0c;可以通过网线下载内核镜像和设备树到开发板&#xff0c;不用每次修改驱动都要重新打开下载工具&#xff0c;进入下载模式。通过TFTP可以大大提高调试效率。 在ubuntu安装TFTP服务 安装tftp服务器 sudo apt-get…

【面试系列】前端开发工程师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

Python商务数据分析知识专栏(二)——Python数据分析基础

Python商务数据分析知识专栏&#xff08;二&#xff09;——Python数据分析基础 一、Python数据分析概述二、Numpy数值计算基础专栏二&#xff08;Python数据分析基础&#xff09;的总结 与 专栏三&#xff08;Python数据分析的应用&#xff09;开端 一、Python数据分析概述 二…

【笔记】Spring Cloud Gateway 实现 gRPC 代理

Spring Cloud Gateway 在 3.1.x 版本中增加了针对 gRPC 的网关代理功能支持,本片文章描述一下如何实现相关支持.本文主要基于 Spring Cloud Gateway 的 官方文档 进行一个实践练习。有兴趣的可以翻看官方文档。 由于 Grpc 是基于 HTTP2 协议进行传输的&#xff0c;因此 Srping …