当前位置: 首页 > article >正文

基于立创梁山派开发板的智能小车:避障、循迹与蓝牙遥控功能实现全解析

基于立创梁山派开发板的智能小车避障、循迹与蓝牙遥控功能实现全解析最近有不少朋友在问用一块开发板怎么做出一个功能比较完整的智能小车项目。正好我之前用立创EDA生态下的梁山派开发板做了一个集避障、循迹和蓝牙遥控于一体的小车整个过程踩了不少坑也积累了一些实战经验。今天我就把这个项目的实现过程、硬件连接、软件架构以及那些“血泪教训”都梳理出来分享给大家。这篇文章适合已经有一定单片机基础比如会用GPIO、定时器、串口但想把多个外设模块整合到一个复杂项目里的朋友。咱们不光是讲怎么点亮一个灯而是要把红外传感器、超声波模块、蓝牙、电机驱动这些“零件”组装起来让小车真正“智能”地跑起来。我会重点讲硬件怎么连、软件怎么设计、电源怎么管理以及那些PCB设计上容易犯的错误。1. 项目整体规划与硬件选型做项目的第一步不是急着写代码而是先把“蓝图”画好。咱们这个小车要实现三个核心功能自动避障、沿着黑线走、用手机蓝牙遥控。这就决定了我们需要哪些“器官”。1.1 核心控制器立创梁山派开发板整个小车的大脑我选用的是立创梁山派开发板。它基于GD32F470系列高性能MCU主频高、外设丰富驱动几个电机和传感器绰绰有余。选择它的另一个重要原因是它深度集成在立创EDA生态里从原理图设计、PCB打样到元器件采购可以形成闭环对硬件开发流程的学习非常有帮助。1.2 感知与执行模块清单要让小车感知环境和执行动作我们需要以下模块“眼睛” (感知部分)红外循迹模块用来“看”地面上的黑线。通常是一组比如3-5个红外对管发射红外光并接收地面反射的光根据反射强度判断下方是白线还是黑线。超声波避障模块用来“看”前方的障碍物。常用的HC-SR04模块通过发射和接收超声波来测量距离。“手脚” (执行部分)电机驱动模块MCU的IO口电流太小直接驱动电机肯定会“烧掉”或动不了。所以必须用电机驱动芯片比如TB6612、L298N等。它们相当于一个“功率开关”接收MCU的小信号指令输出大电流去控制电机正反转和速度。直流减速电机与车轮小车的动力来源。“耳朵和嘴巴” (通信部分)蓝牙模块实现手机遥控。HC-05或HC-06模块都很常用通过串口UART与MCU通信。“心脏” (能源部分)电池与电源管理通常用18650锂电池组两节或三节串联经过一个降压模块如LM2596为开发板和电机驱动模块提供稳定的5V或3.3V电压。这里是个大坑后面会详细讲。把这些模块和梁山派开发板连接起来就构成了小车的硬件骨架。你可以参考下面的简化框图来理解它们之间的关系手机 (蓝牙APP) --蓝牙-- 梁山派开发板 (GD32F470) | |-- GPIO -- 红外循迹模块 (感知地面) |-- 定时器/GPIO -- 超声波模块 (感知前方) |-- PWM/GPIO -- 电机驱动模块 -- 直流电机 |-- UART -- 蓝牙模块 (接收指令) |-- 电源输入 -- 电池组2. 硬件连接与PCB设计中的“坑”原理懂了接下来就是动手连接。我强烈建议你先在面包板或洞洞板上把所有模块连一遍把基本功能调通然后再去画PCB。我就是太心急直接画板结果栽了跟头。2.1 关键接口连接方式梁山派开发板有丰富的IO口我们需要合理分配。下面是一个典型的连接示例具体引脚请根据你的板子原理图调整功能模块所需信号线连接至梁山派引脚备注电机驱动 (TB6612)AIN1, AIN2 (电机A方向)任意两个GPIO如 PA0, PA1控制左侧电机正/反转/停止BIN1, BIN2 (电机B方向)任意两个GPIO如 PA2, PA3控制右侧电机PWMA, PWMB (电机速度)带PWM输出的定时器通道如 TIMER0_CH0 (PA6), TIMER0_CH1 (PA7)通过PWM占空比调节电机速度STBY (使能)连接至一个GPIO或直接接VCC高电平使能驱动芯片红外循迹模块传感器1 输出GPIO输入如 PB0通常输出数字信号0/1传感器2 输出GPIO输入如 PB1传感器3 输出GPIO输入如 PB2根据传感器数量增减超声波模块 (HC-SR04)Trig (触发)GPIO输出如 PC0发送至少10us的高脉冲Echo (回响)GPIO输入最好支持外部中断或输入捕获如 PC1检测高电平脉冲宽度蓝牙模块 (HC-05)TXD梁山派的RXD(UART接收引脚)重点注意下面会讲RXD梁山派的TXD(UART发送引脚)重点注意下面会讲VCC, GND3.3V或5V GND注意上表仅为示例实际连接前务必查阅梁山派开发板的引脚定义手册避免引脚功能冲突例如某些引脚默认用于调试口。2.2 我踩过的PCB设计大坑这是我的项目里最深刻的教训直接导致硬件返工。问题出在蓝牙模块HC-05的接口上。问题现象PCB焊接好后蓝牙模块怎么都无法和MCU通信。用逻辑分析仪抓取波形发现MCU的TXD引脚有数据发出但蓝牙模块的RXD引脚就是收不到。问题根源我在画原理图库和PCB封装时想当然地认为模块的“RXD”标签对应的引脚就应该接到MCU的“RXD”。这是完全错误的正确理解对于MCUTXD是发送引脚它应该把数据发送到外部设备的接收引脚。对于外部模块如HC-05RXD是接收引脚它应该接收来自MCU发送引脚的数据。所以正确的接法是MCU的TXD 接 模块的RXDMCU的RXD 接 模块的TXD。这叫“交叉连接”。我的错误我把PCB上标注“HC-05_RX”的焊盘直接连到了MCU的UART_RX引脚。这相当于让两个“接收端”连在了一起谁都不说话通信自然失败。临时解决方案由于板子已经做好了我只能用杜邦线进行“飞线”纠正将模块的实际TXD脚对应我PCB上错误的“RX”焊盘用杜邦线连到MCU的RXD将模块的实际RXD脚对应我PCB上错误的“TX”焊盘连到MCU的TXD。教训设计通信接口时一定要时刻牢记“发送对接收”的原则。最好在原理图连线旁加上文字标注“接模块RXD”来提醒自己。3. 软件架构与核心功能实现硬件连好了我们来聊聊软件怎么组织。一个功能多的小车代码不能写成一大坨得分层、分模块。3.1 程序主框架状态机是好朋友小车有三种工作模式避障模式、循迹模式、蓝牙遥控模式。用一个全局变量来记录当前模式是最清晰的做法。// 定义小车工作模式 typedef enum { MODE_BLUETOOTH, // 蓝牙遥控模式 MODE_TRACKING, // 循迹模式 MODE_AVOIDANCE // 避障模式 } CarMode_t; CarMode_t g_current_mode MODE_BLUETOOTH; // 默认启动为蓝牙模式在主循环里根据不同的模式调用不同的处理函数int main(void) { // 硬件初始化时钟、GPIO、PWM、定时器、串口、ADC等 hardware_init(); // 模块初始化电机、传感器、蓝牙等 modules_init(); // 初始化OLED显示当前模式等 oled_init(); while(1) { // 1. 模式切换检测例如通过按键 mode_switch_check(); // 2. 根据当前模式执行相应任务 switch(g_current_mode) { case MODE_BLUETOOTH: bluetooth_mode_task(); // 处理蓝牙数据控制电机 break; case MODE_TRACKING: tracking_mode_task(); // 读取红外传感器循迹控制 break; case MODE_AVOIDANCE: avoidance_mode_task(); // 读取超声波避障控制 break; } // 3. 其他公共任务如更新OLED显示、电量检测等 update_oled_display(); check_battery_voltage(); } }这种状态机的架构非常清晰添加新模式也很容易。3.2 避障算法实现简单而有效避障的核心是超声波测距。我用的策略很简单但很实用持续测量在主循环或定时器中断里每隔一段时间如100ms触发一次超声波测距。判断危险设置一个安全距离比如20厘米。当测量距离小于安全距离时认为前方有障碍。执行动作遇到障碍后小车不是傻傻地停住而是先刹车停止。然后根据预设策略躲避。我采用的是“右转后退”策略小车先向右转一点然后后退一小段距离再向左转回原方向或继续直行。这样就实现了一个简单的“绕开”动作。完成躲避动作后继续前进并恢复监测。void avoidance_mode_task(void) { uint32_t distance_cm get_ultrasonic_distance(); if(distance_cm SAFE_DISTANCE_CM) { // 发现障碍物 motor_stop(); // 急停 delay_ms(200); // 停一下防止抖动 // 避障动作右转 - 后退 - 左转回正 motor_turn_right(70); // 以70%速度右转 delay_ms(300); motor_move_backward(60); // 后退 delay_ms(500); motor_turn_left(70); // 左转回正方向 delay_ms(300); motor_move_forward(80); // 继续前进 } else { // 前方安全保持前进 motor_move_forward(80); } }3.3 循迹逻辑实现读取“五路”传感器循迹模块通常输出数字信号0代表检测到黑线1代表白色地面。我的小车用了三个传感器逻辑如下中间传感器检测到黑线(sensor_mid 0)说明车在线上直行。左边传感器检测到黑线(sensor_left 0)说明车偏右了轻微左转修正。右边传感器检测到黑线(sensor_right 0)说明车偏左了轻微右转修正。所有传感器都未检测到黑线可能脱线了可以停车或原地旋转寻找。void tracking_mode_task(void) { uint8_t left_val read_tracking_sensor(LEFT); uint8_t mid_val read_tracking_sensor(MID); uint8_t right_val read_tracking_sensor(RIGHT); if(mid_val 0) { // 中间压线直行 motor_move_forward(70); } else if(left_val 0) { // 左边压线需要右转修正即左轮加速或右轮减速 motor_turn_right(50); // 小幅度右转 } else if(right_val 0) { // 右边压线需要左转修正 motor_turn_left(50); // 小幅度左转 } else { // 全部是白可能脱线了停车或慢速前进 motor_stop(); // 或者可以加入寻线旋转逻辑 } }3.4 蓝牙遥控指令解析蓝牙模块通过串口接收手机APP发来的字符指令。例如APP上按“前进”按钮可能会发送字符F。我们在MCU的串口中断服务函数或主循环中查询接收数据并解析。// 假设串口接收缓冲区为 g_uart_rx_buf 已收到数据长度为 g_rx_len void bluetooth_mode_task(void) { if(g_rx_len 0) { char cmd g_uart_rx_buf[0]; // 取第一个字符作为命令 switch(cmd) { case F: // Forward motor_move_forward(80); break; case B: // Backward motor_move_backward(80); break; case L: // Turn Left motor_turn_left(70); break; case R: // Turn Right motor_turn_right(70); break; case S: // Stop motor_stop(); break; // 可以添加更多指令如加速、减速、左旋、右旋等 case G: // Left Spin (左旋) motor_spin_left(60); break; case I: // Right Spin (右旋) motor_spin_right(60); break; default: // 未知指令忽略或做错误处理 break; } // 处理完命令清空接收缓冲区 g_rx_len 0; } }4. 电源管理优化与常见问题这是项目稳定运行的基石也是我遇到的第二个大坑。4.1 问题现象与根源问题当小车电池电量下降后一让电机启动或负载变大时整个系统开发板会重启。根源分析电机启动瞬间需要很大的电流堵转电流更大如果电池电量不足其输出电压会下降。同时电机驱动模块和开发板共用同一路电池电源。当电机启动拉低总电压时供给开发板的电压可能瞬间低于其正常工作电压如3.3V MCU的复位阈值导致MCU复位重启。4.2 解决方案与优化方向电源路径分离推荐使用两路独立的降压电路。一路大电流的降压模块如5V 3A专门给电机驱动模块供电。另一路小电流、高稳定性的LDO或降压模块给开发板、传感器、蓝牙模块等逻辑电路供电。两路电路的输入都接电池但在电机启动时逻辑电路的电源不会受到剧烈冲击。增加大容量电容在电机驱动模块的电源输入端口并联一个大容量如470uF-1000uF的电解电容和一个小容量如0.1uF的陶瓷电容。大电容相当于一个“小水池”在电机启动瞬间提供瞬时大电流缓解电池的瞬间压降。小电容用于滤除高频噪声。使用优质可充电锂电池放弃普通的干电池或劣质电池包。选用动力型18650锂电池带保护板它们能提供更稳定的放电曲线和更大的持续放电电流。确保电池容量如2600mAh以上足够支撑你的项目运行时间。软件优化避免电机的突然启停。可以通过PWM逐渐增加占空比的方式让电机“软启动”减小冲击电流。加入电池电压检测功能利用MCU的ADC读取电池分压后的电压当电压过低时主动限制电机功率或进入休眠状态保护电池并防止异常重启。5. 项目总结与未来改进回顾这个项目最大的收获不是单纯实现了功能而是完成了从零到一的系统整合。从单独点亮LED、驱动电机到把传感器数据、无线通信、电机控制、电源管理这些环节串成一个能自主运行的智能体这个过程对嵌入式系统设计的理解提升是巨大的。关于代码优化的一个建议原文提到用while循环检测按键导致响应慢。这是一个典型的问题。更好的做法是使用外部中断将按键引脚配置为外部中断触发模式任何按键动作都能立即响应不受主循环其他任务阻塞。定时扫描状态机如果中断资源紧张可以在定时器中断里比如每10ms一次去扫描按键引脚结合状态机检测按下、消抖、释放等状态来判断按键动作这样也比死等while高效得多。未来的改进思路PCB改版首要任务就是修正蓝牙接口的错误优化电源走线增加电机电源的滤波电容。功能升级可以加入MPU6050陀螺仪做更精确的转向控制或者加个摄像头玩视觉循迹。代码重构引入RTOS实时操作系统来管理多个任务遥控、避障、循迹、显示让程序结构更清晰响应更实时。人机交互优化OLED显示不仅显示模式还可以显示实时速度、电池电量、传感器状态等调试起来会更方便。希望这篇详细的解析能帮你少走一些弯路。嵌入式开发就是这样理论和原理是骨架但真正的血肉和灵魂是在一次次调试、改错、优化中填充进去的。动手去做遇到问题解决问题你会发现自己成长得飞快。

相关文章:

基于立创梁山派开发板的智能小车:避障、循迹与蓝牙遥控功能实现全解析

基于立创梁山派开发板的智能小车:避障、循迹与蓝牙遥控功能实现全解析 最近有不少朋友在问,用一块开发板怎么做出一个功能比较完整的智能小车项目。正好,我之前用立创EDA生态下的梁山派开发板做了一个集避障、循迹和蓝牙遥控于一体的小车&…...

ChatGPT下载与API接入实战指南:从注册到集成开发

ChatGPT下载与API接入实战指南:从注册到集成开发 最近身边不少朋友和同事都在讨论ChatGPT,想把它集成到自己的应用里,但第一步“下载”就卡住了。其实,对于开发者来说,我们通常不“下载”ChatGPT,而是通过…...

Cosmos-Reason1-7B开源镜像:支持Kubernetes集群部署的物理AI服务

Cosmos-Reason1-7B开源镜像:支持Kubernetes集群部署的物理AI服务 1. 引言 想象一下,你正在开发一个智能机器人,需要它理解“桌上放着一杯水,旁边有个倾斜的纸板”这个场景,并判断“如果移动纸板,水杯会不…...

代理服务器连接失败的常见原因及快速修复指南

1. 代理服务器连接失败的常见原因 当你遇到"代理服务器拒绝连接"的提示时,先别急着重装系统。根据我多年处理网络问题的经验,90%的代理服务器连接问题都源于以下几个常见原因: 首先是本地代理设置错误。很多用户可能之前配置过代理…...

零成本搭建家庭Linux服务器:樱花frp+SSH避坑指南(含端口冲突解决)

零成本搭建家庭Linux服务器:从设备选型到SSH优化全攻略 家里那台吃灰的旧电脑其实是个宝藏——只要稍加改造,就能变身成为你的专属Linux服务器。不需要昂贵的云服务费用,利用闲置硬件和免费内网穿透工具,我们完全可以打造一个稳定…...

web渗透-SSRF漏洞深度解析与Discuz!论坛实战攻防

第1章. SSRF漏洞基础理论1.1 什么是SSRF?SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。通常情况下,SSRF攻击的目标是从外网无法访问的内部系统…...

Guohua Diffusion 作品集:中国风与现代艺术风格生成效果对比展

Guohua Diffusion 作品集:中国风与现代艺术风格生成效果对比展 最近在玩一个挺有意思的AI绘画模型,叫Guohua Diffusion。名字听起来就很“国风”,对吧?我一开始也以为它只能画点水墨山水、工笔花鸟。但实际用下来,发现…...

基于TI TMS320F28P550的HB100微波多普勒雷达传感器驱动移植与运动检测实战

基于TI TMS320F28P550的HB100微波多普勒雷达传感器驱动移植与运动检测实战 最近在做一个模拟自动门的项目,需要用到微波雷达来检测人体或物体的移动。我选用了常见的HB100微波多普勒雷达模块,搭配TI的TMS320F28P550开发板(立创开发板&#xf…...

深入解析Cotex-M中的MSP与PSP:双堆栈指针的奥秘与应用

1. Cortex-M双堆栈指针的底层逻辑 第一次接触Cotex-M处理器的开发者,往往会对R13寄存器同时对应两个堆栈指针感到困惑。这就像给你的电脑配了两块键盘,但任何时候只能激活其中一块。**MSP(主堆栈指针)和PSP(进程堆栈指…...

ChatGPT Plus涨价前必看:开发者如何用礼品卡锁定最后低价(附实操步骤)

ChatGPT Plus涨价前开发者必读:巧用礼品卡锁定低价订阅的终极指南 最近关于ChatGPT Plus即将全球统一价格的消息在开发者圈子里引起了不小的震动。作为一个每天依赖ChatGPT进行代码调试、文档生成和算法验证的工具,订阅费用的上涨确实会直接影响开发预算…...

Vue3+D3.js实战:构建可交互的企业股权穿透可视化图谱

1. 为什么选择Vue3D3.js构建股权穿透图 在企业数据可视化领域,股权穿透图一直是个硬骨头。传统方案要么灵活性不足,要么性能堪忧。去年我接手一个金融风控项目时,就遇到了这个难题——需要展示集团旗下7层控股结构,还要支持实时数…...

斯坦福 CS336 从零构建大模型 (2025 春) - 第十五讲:对齐(SFT、RLHF 与 DPO)

斯坦福 CS336 从零构建大模型 (2025 春) - 第十五讲:对齐(SFT、RLHF 与 DPO) 文章目录斯坦福 CS336 从零构建大模型 (2025 春) - 第十五讲:对齐(SFT、RLHF 与 DPO)一、监督微调(SFT)…...

Linux-【文件系统下】

一、引入"inode"概念文件 数据 属性 , 当我们使用 ls -l 的时候看到了除了文件名 , 还能看到文件的元数据 (属性)ls -l 读取存储在磁盘上的文件信息 , 然后显示出来其实这个信息除了通过这种方式来读取 &a…...

灵机一物AI智能电商小程序(已上线)-从零构建高可用智能电商客服:LangGraph+LlamaIndex+ES三层检索RAG系统实战|彻底解决大模型幻觉

作者:Maris5188文章摘要:电商场景下,传统关键词客服回复生硬、匹配度低,纯大模型直接应答又极易出现幻觉编造、记忆污染等致命问题,严重影响用户体验和品牌口碑。本文结合实际业务落地经验,手把手带你基于LangGraph工作…...

(118页PPT)DG1892HRBP人资体系规划方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 (118页PPT)DG1892HRBP人资体系规划方案P116.pptx_工业4.0与智能制造技术路径资源-CSDN下载 资料解读:DG1892HRBP 人资体系规划方案 P116 详细资料请看本解读文…...

服务器及网站操作

云服务器 在计算机E盘的文件夹MySite中,已经写好了html文件。在阿里申请了的域名。现在想在腾讯云构建服务器,把MySite的文件迁移过去,使得网友可以访问。操作步骤如下: 腾讯云 轻量应用服务器 控制台 → 轻量应用服务器 → 你…...

用CatBoost - shap集成模型解锁分类任务的秘密

CatBoost-shap集成模型用于分类任务,对模型和变量用shap进行解释 Python 代码,自带数据集可以直接运行 所有图所见即所得在数据科学领域,理解模型的决策过程与构建高精度模型同样重要。今天咱们就来聊聊如何利用CatBoost - shap集成模型进行分…...

复现叠加态拉盖尔高斯光束:MATLAB 的奇妙之旅

MATLAB文章复现:叠加态拉盖尔高斯光束在光学领域,拉盖尔高斯光束(Laguerre - Gaussian beam)是一种非常重要的光束模式。而叠加态的拉盖尔高斯光束更是有着独特的性质和广泛的应用,今天咱们就来用 MATLAB 复现叠加态拉…...

无刷直流电机MRAS模型参考自适应控制算法仿真探秘

无刷直流电机的MRAS模型参考自适应控制算法,仿真模型 a). 当直流无刷电机的转动惯量由1.23*10-3kg.m2变为3.23*10-3kg.m和5.23*10-3kg.m时,双闭环控制和自适应控制的仿真结果如图所示(蓝线代表未加自适应控制的系统输出,红线代表加…...

探索大厂吸尘器背后的技术奥秘

某大厂吸尘器的原理图,PCB,AD格式的。 送配套源码。 无刷吸尘器方案。 BLDC最近捣鼓了一些有意思的东西,今天来和大家分享一下某大厂吸尘器的原理图、PCB(AD格式哦),还会送上配套源码,以及无刷吸…...

DL00618 - 基于YOLOv5的钢材表面缺陷检测含数据集处理

DL00618-基于YOLOv5的钢材表面缺陷检测含数据集处理 东北大学(NEU)表面缺陷数据集,收集了热轧带钢6种典型的表面缺陷,即轧内垢(RS)、斑块(Pa)、裂纹(Cr)、点蚀面(PS)、夹杂物(In)和划痕(Sc)。 该数据库包括1800张灰度图像:6种不同类型的典型表…...

基于比例谐振型自抗扰控制GI ADRC的谐波抑制仿真模型

基于比例谐振型自抗扰控制GI ADRC抑制谐波仿真模型。 抑制死区引起的五七次谐波,效果不错,提供资料。大家好!今天我想和大家分享一个关于谐波抑制的仿真模型,这个模型基于一种称为“广义自抗扰控制(Generalized Integr…...

Carsim与Matlab/Simulink联合仿真在四轮电动汽车转向失效容错控制中的应用

Carsim与matlab/simulink联合仿真,线控转向,四轮电动汽车转向失效容错控制模型,提供参考文献引言 随着电动汽车的普及,汽车转向系统的设计和优化变得越来越重要。特别是在转向失效的紧急情况下,车辆的稳定性控制和安全…...

COMSOL随机裂隙双重介质注浆数值模拟

COMSOL随机裂隙双重介质注浆数值模拟针对注浆过程中常用的裂隙与多孔介质耦合注浆问题 应用有限元计算软件COMSOL Multiphysics建立随机裂隙双重介质注浆注浆的数值模型 研究注浆中浆液在多孔介质和裂隙中流动扩散规律,并分析不同浆液粘度、注浆压力、多孔介质渗透…...

会玩桌球辅助线工具Pro版|安卓专用万能台球瞄准线软件

温馨提示:文末有联系方式软件核心功能:智能辅助瞄准线与延长线 本款台球辅助工具主打高精度图像识别技术,可实时生成精准的击球辅助线与目标球延长线,大幅提升瞄准效率与进球率,尤其适用于新手进阶与高手复盘分析。全面…...

COMSOL冻土热-水-力耦合模型

COMSOL冻土热-水-力耦合模型冻土这玩意儿在工程上可是个难啃的骨头,特别是涉及到热力-水力-力学三场耦合的时候。前几天有个搞青藏公路监测的老哥找我吐槽,说他们的冻土路基模型算着算着就发散,活像煮过头的面条。今天就拿COMSOL来盘盘这个耦…...

专业术语统计报告_电压源型直流输电系统的端口小信号模型及稳定性研究

专业术语统计报告_电压源型直流输电系统的端口小信号模型及稳定性研究 一、概要简析 【概要分析】 本文档《电压源型直流输电系统的端口小信号模型及稳定性研究》超用心地围绕研究主题展开了系统性探讨哦😜!文档总字符数足足有221344,其中中文…...

13. 【Blazor全栈开发实战指南】--实时通信:SignalR集成

一、SignalR的架构与适用场景 HTTP的"请求-响应"模式对于大多数场景足够好用,但有一类需求它天然不擅长——服务器主动推送数据给客户端。想象一下实时聊天应用:用户A发送消息后,用户B的界面应该立即出现这条消息,而不是…...

前端:第七章-布局与导航组件

第七章:布局与导航组件 🎯 本章目标:开发应用主布局组件、顶部导航栏和侧边导航菜单。 7.1 布局结构设计 7.1.1 布局结构图 ┌─────────────────────────────────────────────────────────┐ │ …...

如何在Dev-C++中配置Windows API?

在Dev-C中配置Windows API的步骤如下&#xff1a;创建新项目打开Dev-C → 选择「文件」→「新建」→「项目」→ 选择「Windows Application」模板包含头文件在源代码开头添加&#xff1a;#include <windows.h>配置链接器选择「工具」→「编译选项」在「编译器」标签页勾选…...