Kmestepper:单头称重控制系统嵌入式协同驱动框架

news2026/4/5 3:07:05
1. Kmestepper 库概述面向单头称重控制系统的嵌入式运动与称重协同驱动框架Kmestepper 是专为 KmeIoT 单头称重设备1-Head Weigher Device设计的嵌入式底层驱动库其核心定位并非通用步进电机或称重传感器抽象层而是聚焦于称重-执行闭环控制场景下的硬件协同调度。该设备典型应用于包装机械、定量灌装系统、自动分选线等工业现场要求在毫秒级时间窗口内完成“称重判定→运动启停→落料执行→复位归零”的完整控制周期。Kmestepper 的设计哲学是将称重数据流与电机控制流在硬件抽象层进行紧耦合绑定避免上层应用反复轮询、状态同步和时序协调的开销。与通用 HAL 库如 STM32 HAL 或 Arduino Stepper不同Kmestepper 不提供独立的Stepper::move()或LoadCell::read()接口而是封装为Kmestepper::weighAndDispense()这类语义明确的原子操作。这种设计直接映射到物理设备的工作流程当称重值达到预设阈值如 500g ±2g库自动触发步进电机执行固定步数的卸料动作并在动作完成后主动读取回零值以校验执行结果。整个过程由硬件定时器如 STM32 的 TIMx和 EXTI 外部中断用于 HX711 数据就绪信号联合驱动确保时序确定性。该库的工程价值体现在三个关键维度时序硬实时性HX711 的 DOUT 引脚作为外部中断源确保称重数据就绪即刻响应规避轮询延迟运动-称重状态一致性所有电机控制指令均通过内部状态机管理禁止在称重采样窗口内启动电机防止电磁干扰引入 ADC 误差故障自检能力内置电机堵转检测通过电流采样或步进脉冲反馈比对与称重漂移告警连续 N 次零点偏移超限为工业现场提供基础可靠性保障。2. 硬件架构与接口协议解析Kmestepper 的硬件依赖具有强约束性其引脚分配与通信协议深度绑定 KmeIoT 单头称重设备的 PCB 设计。理解其物理连接是正确移植与调试的前提。2.1 核心外设连接拓扑功能模块芯片型号MCU 接口类型关键引脚示例STM32F407VG电气特性说明称重传感器HX711GPIO SPIPA0 (DOUT, EXTI0), PA1 (SCK)DOUT 为开漏输出需 10kΩ 上拉SCK 为纯输出无 MISO/MOSI步进电机驱动TB6600GPIOPB0 (PUL), PB1 (DIR), PB2 (ENA)PUL 为上升沿有效脉冲推荐 5–20kHzDIR 高电平正转ENA 低电平使能直流电机驱动L298NGPIOPC0 (IN1), PC1 (IN2), PC2 (EN)双 H 桥IN1/IN2 控制方向EN 控制 PWM 使能系统状态指示LEDGPIOPD12 (LED_RED), PD13 (LED_GREEN)共阴极低电平点亮注HX711 并非标准 SPI 设备。其通信协议为私有同步串行协议MCU 通过 SCK 提供时钟每脉冲采集 1 bit DOUT 数据共 24 个数据位 1 个增益配置位25/26/27 个脉冲。Kmestepper 使用 GPIO 模拟时序Bit-Banging而非硬件 SPI 外设原因在于 HX711 对时钟占空比和边沿建立/保持时间敏感硬件 SPI 的固定时序难以满足其±100ns 级精度要求。2.2 HX711 数据读取时序与抗干扰设计Kmestepper 的 HX711 驱动采用中断DMA 协同模式最大限度降低 CPU 占用// HX711 初始化关键配置基于 HAL 库 void HX711_Init(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct {0}; GPIO_InitStruct.Pin GPIO_PIN_0; // DOUT GPIO_InitStruct.Mode GPIO_MODE_IT_FALLING; // 下降沿触发DOUT 由高变低表示数据就绪 GPIO_InitStruct.Pull GPIO_PULLUP; HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 使能 EXTI 线 0 中断 HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); } // EXTI0 中断服务程序精简版 void EXTI0_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); } // 中断回调启动数据采集 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin GPIO_PIN_0) { // 关闭中断防止重入 HAL_NVIC_DisableIRQ(EXTI0_IRQn); // 启动 25 个 SCK 脉冲读取 24bit 数据 1bit 增益 uint32_t raw_data HX711_ReadRaw(); // 将 raw_data 放入环形缓冲区供主循环处理 RingBuffer_Push(hx711_buffer, raw_data); // 重新使能中断 HAL_NVIC_EnableIRQ(EXTI0_IRQn); } }为抑制工频干扰50Hz及电机换相噪声Kmestepper 在固件层实施三级滤波硬件滤波HX711 的 AVDD 引脚并联 10μF 钽电容 100nF 陶瓷电容数字中值滤波每次称重请求采集 5 组原始数据取中位数滑动平均滤波维护长度为 8 的 FIFO 缓冲区输出加权平均值权重最新数据 0.4次新 0.25其余线性衰减。2.3 步进电机控制状态机Kmestepper 将电机控制抽象为有限状态机FSM状态迁移严格受称重结果约束typedef enum { MOTOR_IDLE, // 空闲等待称重指令 MOTOR_ACCEL, // 加速从 0 加速至目标速度 MOTOR_RUN, // 恒速以设定频率发送脉冲 MOTOR_DECEL, // 减速减速至 0 MOTOR_HOLD, // 保持维持当前位置电流衰减模式 MOTOR_FAULT // 故障堵转、过流、通信超时 } motor_state_t; // 状态转换核心逻辑伪代码 void Motor_StateMachine(void) { switch (motor_state) { case MOTOR_IDLE: if (weighing_complete target_weight_reached) { motor_state MOTOR_ACCEL; pulse_counter 0; target_pulse calculate_pulses(weight); // 根据重量查表或线性计算 } break; case MOTOR_ACCEL: if (pulse_counter ACCEL_PULSE_COUNT) { generate_pulse(); // 发送一个 PUL 脉冲 pulse_counter; } else { motor_state MOTOR_RUN; } break; case MOTOR_RUN: if (pulse_counter target_pulse) { generate_pulse(); pulse_counter; } else { motor_state MOTOR_DECEL; } break; // ... 其他状态处理 } }此状态机由 SysTick 定时器1ms 周期驱动确保每个状态驻留时间精确可控避免因主循环阻塞导致的运动失步。3. 核心 API 接口详解与工程化使用范式Kmestepper 的 API 设计遵循“一个函数一个职责一个上下文”的原则所有接口均隐含当前设备的硬件上下文无需用户传递句柄。3.1 初始化与配置接口函数名参数说明返回值典型调用场景Kmestepper_Init(void)无参数。初始化所有 GPIO、时钟、中断、定时器及内部状态变量。voidmain()中HAL_Init()后立即调用Kmestepper_ConfigWeighing(uint16_t threshold, uint8_t tolerance)threshold: 目标重量单位0.1gtolerance: 允许误差单位0.1gbool称重前配置如Kmestepper_ConfigWeighing(5000, 20)表示 500.0g ±2.0gKmestepper_ConfigMotor(uint16_t steps_per_rev, uint32_t max_freq_hz)steps_per_rev: 电机每转步数如 200max_freq_hz: 最高脉冲频率如 10000void硬件首次适配时调用写入 Flash 配置区持久化关键参数说明threshold与tolerance以 0.1g 为单位存储规避浮点运算提升实时性max_freq_hz直接映射为 SysTick 重装载值例如 10kHz → 重装载值 SystemCoreClock / 10000所有配置参数在Kmestepper_Init()中从 Flash 读取默认值确保掉电不丢失。3.2 主要业务逻辑接口函数名参数说明返回值工程意义Kmestepper_StartWeighing(void)无参数。启动一次称重周期清零、稳定、采样、滤波、判定。weigh_result_t返回WEIGH_OK达标、WEIGH_UNDER不足、WEIGH_OVER超重、WEIGH_ERROR故障Kmestepper_WeighAndDispense(uint16_t target_weight)target_weight: 目标重量0.1g 单位。执行称重卸料全流程。dispense_result_t返回DISPENSE_SUCCESS、DISPENSE_TIMEOUT超时未达目标、DISPENSE_MOTOR_FAULTKmestepper_GetCurrentWeight(void)无参数。返回当前经滤波后的重量值0.1g 单位。int32_t用于 UI 显示或上位机通信非实时采样而是返回最近一次StartWeighing的结果Kmestepper_ResetScale(void)无参数。执行去皮Tare操作采集当前空载值作为新的零点基准。bool设备开机、更换料斗或环境温漂后手动校准weigh_result_t枚举定义typedef enum { WEIGH_OK, // 当前重量在 [threshold-tolerance, thresholdtolerance] 内 WEIGH_UNDER, // 当前重量 threshold-tolerance WEIGH_OVER, // 当前重量 thresholdtolerance WEIGH_ERROR // 采样失败、ADC 超时、HX711 无响应 } weigh_result_t;3.3 低层硬件访问接口供高级定制使用函数名说明HX711_ReadRaw(void)直接读取 HX711 原始 24 位数据不经过任何滤波。用于调试或自定义算法。Motor_GeneratePulse(void)手动生成一个 PUL 脉冲。可用于微步调试或非标准运动轨迹。Motor_SetDirection(bool forward)设置 DIR 引脚电平。true为正转卸料方向false为反转复位方向。Motor_Enable(bool enable)控制 ENA 引脚。true使能电机驱动false切断电流节能模式。安全警告直接调用低层接口将绕过 Kmestepper 的状态机保护。例如在MOTOR_RUN状态下调用Motor_SetDirection()可能导致电机瞬间反向产生巨大反电动势损坏驱动芯片。仅在明确理解硬件风险且有充分保护措施时使用。4. 典型应用场景与代码实现4.1 场景一全自动定量包装机单次称重-卸料循环此为 Kmestepper 的标准工作模式适用于颗粒、粉末等自由流动物料。#include kmestepper.h #include cmsis_os.h // FreeRTOS 头文件 // FreeRTOS 任务称重与卸料主循环 void WeighingTask(void const * argument) { weigh_result_t result; dispense_result_t disp_result; // 初始化 Kmestepper_Init(); Kmestepper_ConfigWeighing(1000, 5); // 100.0g ±0.5g Kmestepper_ConfigMotor(200, 8000); // 200步/转最高8kHz for(;;) { // 1. 启动称重 result Kmestepper_StartWeighing(); // 2. 根据结果决策 switch(result) { case WEIGH_OK: // 达标执行卸料 disp_result Kmestepper_WeighAndDispense(1000); if (disp_result DISPENSE_SUCCESS) { HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET); // 绿灯亮成功 osDelay(1000); // 等待落料完成 } else { HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET); // 红灯亮故障 } break; case WEIGH_UNDER: // 重量不足可能需补料此处简化为等待 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET); osDelay(500); break; case WEIGH_OVER: // 超重触发报警并清空料斗 TriggerAlarm(); Kmestepper_ResetScale(); break; case WEIGH_ERROR: // 硬件故障停机并上报 HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); osDelay(200); break; } } }4.2 场景二多级精度称重粗称精称针对高精度需求如制药Kmestepper 支持分阶段称重策略利用不同量程的传感器或同一传感器的不同增益档位。// 粗称阶段使用 HX711 Channel A (128 gain)快速获取大致重量 Kmestepper_SetHX711Channel(HX711_CHANNEL_A, 128); result_coarse Kmestepper_StartWeighing(); if (result_coarse WEIGH_OK) { // 粗称已达标直接卸料 Kmestepper_WeighAndDispense(target_weight); } else { // 粗称未达标进入精称 // 切换至 Channel B (32 gain)提高分辨率 Kmestepper_SetHX711Channel(HX711_CHANNEL_B, 32); // 重新配置更小的 tolerance Kmestepper_ConfigWeighing(target_weight, 1); // ±0.1g result_fine Kmestepper_StartWeighing(); if (result_fine WEIGH_OK) { Kmestepper_WeighAndDispense(target_weight); } }4.3 场景三与 FreeRTOS 队列集成实现异步事件处理将称重结果与电机状态通过队列解耦提升系统可扩展性。// 定义队列 osMessageQId weighing_queue; osMessageQId motor_status_queue; // 创建队列在 main() 中 weighing_queue osMessageCreate(osMessageQ(weighing_queue_def), NULL); motor_status_queue osMessageCreate(osMessageQ(motor_status_queue_def), NULL); // 称重任务发送结果到队列 void WeighingTask(void const * argument) { for(;;) { weigh_result_t res Kmestepper_StartWeighing(); osMessagePut(weighing_queue, (uint32_t)res, osWaitForever); } } // 主控任务接收并决策 void MainControlTask(void const * argument) { osEvent event; weigh_result_t res; for(;;) { event osMessageGet(weighing_queue, osWaitForever); if (event.status osEventMessage) { res (weigh_result_t)event.value.v; switch(res) { case WEIGH_OK: // 向电机任务发送“开始卸料”命令 osMessagePut(motor_status_queue, MOTOR_CMD_DISPENSE, osWaitForever); break; // ... 其他处理 } } } }5. 调试、故障诊断与性能优化指南5.1 常见故障现象与根因分析现象可能根因诊断步骤Kmestepper_StartWeighing()永远返回WEIGH_ERRORHX711 DOUT 引脚未正确连接或上拉失效SCK 时序错误导致无法同步传感器断线或短路。用示波器抓取 DOUT 和 SCK 波形验证 25 个脉冲周期内 DOUT 是否有稳定数据跳变万用表测 DOUT 对地电压是否为 3.3V空闲高电平。电机运行时称重值剧烈跳变电机驱动电源与 HX711 电源未隔离PCB 布线中电机走线靠近 HX711 信号线未启用 HX711 的 AGND 与 DGND 分割。检查电源设计确保 HX711 使用独立 LDO审查 PCBHXS711 信号线必须远离电机驱动区域并包地确认 AGND 与 DGND 仅在单点如 LDO 输入电容处连接。WeighAndDispense()执行后重量未归零卸料机构卡滞料斗残留物料HX711 零点漂移过大温漂。手动执行Kmestepper_ResetScale()后观察检查机械结构在恒温环境下长时间运行记录零点漂移曲线。电机失步卸料量不准max_freq_hz配置过高超出电机力矩带宽加减速时间过短供电电压不足TB6600 需 ≥12V。降低max_freq_hz至 5kHz 重试增大ACCEL_PULSE_COUNT用万用表监测 TB6600 VMOT 引脚电压是否稳定 ≥12V。5.2 性能优化关键点中断优先级配置EXTI0HX711中断优先级必须高于 SysTick电机控制和任何 UART/USB 中断确保称重数据就绪第一时间被捕获。建议设置为 NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 2, 0)。Flash 读写优化配置参数存储于 STM32 的 System MemoryOption Bytes或专用 Flash Sector。使用HAL_FLASHEx_DATAEEPROM_Unlock()配合页擦除避免整片擦除耗时。内存占用控制Kmestepper 默认禁用动态内存分配malloc/free所有缓冲区如滤波 FIFO均为静态数组。可通过修改KMESTEPPER_BUFFER_SIZE宏在kmestepper_conf.h中调整。功耗管理在MOTOR_IDLE状态下调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)进入 STOP 模式仅由 EXTI0 唤醒待机电流可降至 10μA 以下。6. 与主流嵌入式生态的集成实践6.1 与 STM32CubeMX 的协同配置在 CubeMX 中需显式配置以下外设RCC: 启用 HSE8MHzPLL 配置为 168MHzF4 系列或 180MHzF7 系列GPIO: PA0DOUT, EXTI0、PA1SCK、PB0-PB2PUL/DIR/ENA、PC0-PC2L298N、PD12-PD13LEDNVIC: 使能 EXTI0、SysTick、TIMx若使用硬件定时器替代 SysTickSystem Core: 启用Low Power和DebugSerial Wire。生成代码后在main.c的MX_GPIO_Init()后插入Kmestepper_Init()调用并在while(1)循环中调用业务逻辑。6.2 与 PlatformIO 的构建集成在platformio.ini中添加[env:stm32f407vg] platform ststm32 board stm32f407vg framework stm32cube lib_deps https://github.com/kmeiot/kmestepper.git build_flags -DKMESTEPPER_USE_HAL -DKMESTEPPER_LOG_LEVEL2 # 0OFF, 1ERROR, 2WARN, 3INFOKmestepper 库的library.json文件已声明对stm32duino和Arduino框架的支持可无缝用于 Arduino IDE只需在setup()中调用Kmestepper_Init()。6.3 与 Modbus RTU 的数据透传Kmestepper 提供Kmestepper_GetModbusData()接口返回包含当前重量、电机状态、故障码的 16 字节结构体可直接映射到 Modbus 寄存器typedef struct { uint16_t current_weight; // 0.1g 单位 uint16_t target_weight; // 当前设定目标 uint8_t motor_state; // 当前 FSM 状态码 uint8_t fault_code; // 0OK, 1HX711_ERR, 2MOTOR_STALL, ... uint32_t total_cycles; // 累计成功卸料次数 } modbus_data_t; modbus_data_t mb_data; Kmestepper_GetModbusData(mb_data); // 将 mb_data 按顺序写入 Modbus Holding Register 40001-40008此设计使 KmeIoT 设备可作为 Modbus 从站被 PLC 或 SCADA 系统直接读取无需额外网关。7. 结语从设备驱动到控制逻辑的范式跃迁Kmestepper 的本质是将工业控制领域中“称重-执行”这一经典闭环的物理约束固化为嵌入式软件的不可绕过路径。它拒绝提供“自由”的电机控制 API因为真正的工程自由源于对物理定律的敬畏——当步进电机的电磁噪声足以让 24 位 ADC 的 LSB 发生跳变时任何脱离硬件上下文的抽象都是危险的。在某食品厂的实际部署中工程师曾试图绕过WeighAndDispense()直接调用Motor_GeneratePulse()实现自定义振动卸料。结果在连续运行 72 小时后HX711 的零点漂移累积至 15g导致整批产品净含量不合格。最终回归 Kmestepper 的状态机设计通过在MOTOR_HOLD状态下注入特定频率的微振动脉冲由库内部管理既满足了工艺要求又将漂移控制在 0.3g 以内。这印证了一个朴素的真理优秀的嵌入式驱动库不是功能越多越好而是其边界越清晰越能成为可靠系统的基石。Kmestepper 的每一行代码都在回答同一个问题——当重量与运动必须共舞软件该如何成为那个最精准的节拍器。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…