DSgatewayMBED:面向嵌入式桌面站的轻量级协议网关

news2026/3/23 14:46:16
1. DSgatewayMBED项目概述DSgatewayMBED 是面向嵌入式桌面站Desktop Station场景的轻量级网关软件专为 ARM Cortex-M 系列微控制器上的 mbed OS 平台设计。其核心定位并非通用物联网网关而是聚焦于实验室、产线测试工装、教育开发套件等“桌面级嵌入式系统”中实现 PC 主机Windows/macOS/Linux与目标嵌入式设备之间的双向、低延迟、高可靠通信桥接。该软件不依赖外部云服务或复杂协议栈采用分层架构设计在资源受限的 MCU如 STM32F407、NXP LPC1768、Renesas RA6M3上以裸机或 RTOS 模式运行通过 USB CDC ACM虚拟串口、UART、SPI 或 I2C 等物理接口与主机连接并提供标准化的二进制帧协议与上位机交互。与传统串口调试工具如 PuTTY、Tera Term不同DSgatewayMBED 不仅透传数据更在固件层实现了协议解析、命令路由、状态反馈、错误恢复及多通道复用能力。其设计哲学是“协议下沉、功能上移”将通信协议解析、校验、重传、流控等逻辑固化在 MCU 固件中使上位机应用可专注于业务逻辑而非底层通信细节。这一设计显著降低了上位机软件的开发复杂度同时提升了整个测试/调试链路的鲁棒性——例如当 USB 连接瞬时中断时网关固件可缓存待发指令并自动重连而无需上位机介入重连逻辑。项目采用模块化设计主要由以下四个逻辑层构成硬件抽象层HAL封装底层外设驱动USB Device、USART、SPI Master/Slave、I2C Master屏蔽芯片差异支持 mbed OS 提供的标准 HAL 接口如Serial,USBSerial,SPI类。协议处理层Protocol Stack实现自定义的轻量级二进制帧协议DS-Frame包含同步字、长度域、类型码、负载、CRC16-CCITT 校验支持命令CMD、响应RESP、事件EVENT、心跳HEARTBEAT四类帧类型。服务管理层Service Manager提供可插拔的服务模块注册与调度机制当前内置 UART 透传服务、GPIO 控制服务、ADC 采集服务、PWM 输出服务及 Flash 参数存储服务用户可通过继承ServiceBase类快速扩展新服务。主循环与调度器Main Loop Scheduler在main()中运行非阻塞状态机轮询各外设事件USB 数据到达、UART 接收完成、定时器超时调用对应服务处理函数支持 FreeRTOS 集成模式可将各服务映射为独立任务利用队列与信号量进行线程间通信。该网关软件的典型部署拓扑如下PC 上位机Python/C# 应用→ USB 线缆 → DSgatewayMBED 固件运行于 MCU→ UART/SPI/I2C 总线 → 目标被测设备DUT。整个链路中DSgatewayMBED 充当“协议翻译器”与“通信协调员”将上位机发出的高层语义指令如SET_GPIO_PIN(5, HIGH)解析为底层寄存器操作并将 DUT 返回的原始数据如 ADC 原始采样值封装为结构化响应帧返回给 PC。2. 协议设计与帧格式详解DSgatewayMBED 的通信可靠性根基在于其精心设计的 DS-Frame 二进制协议。该协议摒弃了易受干扰的 ASCII 文本协议如 AT 指令采用紧凑、确定、可校验的二进制格式兼顾解析效率与抗干扰能力。所有帧均以固定同步字起始确保接收端能准确识别帧边界避免因数据错位导致的协议解析雪崩。2.1 帧结构定义DS-Frame 采用固定头部 可变负载的设计总长度不超过 255 字节适用于各类 MCU 的 RAM 缓冲区。其完整结构如下表所示字段名字节数值域/说明作用Sync20xA5 0x5A帧同步字用于接收端快速定位帧起始位置规避误触发Length10x00–0xFE负载Payload字段的字节数最大 254 字节0xFF为保留值表示错误帧Type10x01CMD,0x02RESP,0x03EVENT,0x04HEARTBEAT帧类型标识决定后续解析逻辑与处理流程Seq10x00–0xFF序列号用于指令-响应匹配与丢包检测每发送一帧 CMD 自增 1模 256PayloadN (Length)变长二进制数据承载具体业务数据格式由 Type 和 Service ID 共同决定CRC2CRC16-CCITT (0xFFFF 初始值, 无反相)对 Sync 至 Payload 全字段计算的校验和用于完整性验证关键设计考量同步字选择0xA55A在二进制层面具有高汉明距离Hamming Distance相邻比特翻转不易产生伪同步字且在 UART 通信中不易与常见数据如 0x00、0xFF混淆。Length 字段限制限定最大负载为 254 字节确保单帧处理可在 MCU 的小容量 RAM如 20KB中完成避免动态内存分配带来的碎片化风险。CRC 计算范围包含 Sync 字段使得即使同步字被干扰CRC 校验亦会失败强制丢弃该帧防止错误同步导致后续帧全部解析错乱。2.2 帧类型与典型交互流程CMD 帧Type0x01由上位机发起请求网关执行某项操作。Payload 结构为[Service ID (1B)] [Command Code (1B)] [Parameters (N B)]。例如向 UART 透传服务发送数据的 CMD 帧// Payload 示例向 UART1 发送 3 字节数据 0x01,0x02,0x03 // Service ID 0x01 (UART Service), Cmd Code 0x02 (SEND_DATA) // Payload {0x01, 0x02, 0x01, 0x02, 0x03}RESP 帧Type0x02网关对 CMD 帧的同步响应。Payload 结构为[Service ID (1B)] [Status (1B)] [Response Data (N B)]。Status 字段定义0x00SUCCESS,0x01INVALID_SERVICE,0x02INVALID_CMD,0x03BUFFER_FULL,0x04TIMEOUT。成功响应示例// 对上述 SEND_DATA CMD 的 RESP 帧 // Payload {0x01, 0x00} // Service ID0x01, StatusSUCCESS, 无额外数据EVENT 帧Type0x03网关主动上报的异步事件无需上位机请求。常用于 GPIO 中断触发、ADC 采集完成、UART 接收缓冲区满等场景。Payload 结构[Service ID (1B)] [Event Code (1B)] [Event Data (N B)]。例如GPIO 引脚 7 上升沿触发的 EVENT// Payload {0x02, 0x01, 0x07, 0x01} // Service ID0x02 (GPIO), Event Code0x01 (PIN_CHANGED), Pin7, LevelHIGHHEARTBEAT 帧Type0x04周期性默认 5 秒发送的保活帧Payload 为空。上位机通过连续丢失 3 个 HEARTBEAT 帧判定连接中断触发重连逻辑。此机制替代了复杂的 TCP Keepalive更适合 USB CDC 的无连接特性。2.3 错误处理与恢复机制协议内建三级错误防护物理层校验UART 配置启用硬件奇偶校验Parity与帧校验Stop Bits过滤基础传输错误。协议层校验CRC16 校验失败的帧被立即丢弃不进入解析队列。应用层校验服务模块对 Payload 进行语义校验如检查 GPIO Pin 编号是否越界返回INVALID_PARAM状态。针对常见故障网关固件实现自动恢复USB 断连重连检测到USBD_EVENT_DISCONNECTED后停止 USB 数据收发进入低功耗等待当USBD_EVENT_CONNECTED触发重新初始化 USB Device 描述符清空内部缓冲区发送HEARTBEAT帧宣告就绪。UART 接收溢出UART 服务使用双缓冲Double Buffer机制当一缓冲区满时DMA 自动切换至另一缓冲区主循环及时将满缓冲区数据打包为EVENT帧发送避免数据丢失。指令超时主循环维护一个cmd_timeout_timer对每个发出的 CMD 帧启动 1 秒超时计时超时未收到 RESP则设置StatusTIMEOUT并通知上位机。3. 核心服务模块与 API 接口DSgatewayMBED 的可扩展性源于其服务化架构。所有外设功能均被抽象为ServiceBase的派生类通过统一的ServiceManager进行注册、发现与调用。开发者无需修改主循环逻辑只需实现服务类并注册即可接入新功能。3.1 服务基类与管理器ServiceBase是所有服务的抽象基类定义了标准接口class ServiceBase { public: virtual ~ServiceBase() default; virtual uint8_t getServiceID() const 0; // 返回唯一服务ID (0x01-0xFE) virtual bool handleCMD(const uint8_t* payload, uint8_t len) 0; // 处理CMD帧 virtual void handleEVENT() 0; // 处理定时/事件触发 virtual void onConnect() 0; // USB连接建立时回调 virtual void onDisconnect() 0; // USB断开时回调 };ServiceManager作为中央调度器维护服务列表并分发帧class ServiceManager { private: ServiceBase* services[MAX_SERVICES]; // 服务指针数组 uint8_t serviceCount; public: void registerService(ServiceBase* svc); // 注册服务 bool dispatchCMD(uint8_t type, const uint8_t* payload, uint8_t len); // 分发CMD void pollAll(); // 轮询所有服务的handleEVENT() };3.2 内置服务详解UART 透传服务ID0x01提供多 UART如 USART1, USART2的独立透传通道。支持配置波特率、数据位、停止位、流控。关键 APICMD: 0x01 0x01 [UART_ID] [BAUD_RATE_MSB] [BAUD_RATE_LSB]—— 初始化 UARTCMD: 0x01 0x02 [UART_ID] [DATA...]—— 向指定 UART 发送数据EVENT: 0x01 0x03 [UART_ID] [DATA...]—— UART 接收数据上报当 RX FIFO 8 字节时触发HAL 层实现基于 mbed OS 的Serial类但禁用其自带的printf/scanf直接操作serial_write()与serial_read()并启用 DMA 接收以降低 CPU 占用。GPIO 控制服务ID0x02支持引脚配置输入/输出/中断、电平读写、中断事件上报。关键 APICMD: 0x02 0x01 [PIN_NUM] [MODE]—— 配置引脚MODE: 0input, 1output, 2interruptCMD: 0x02 0x02 [PIN_NUM] [LEVEL]—— 设置输出电平LEVEL: 0low, 1highEVENT: 0x02 0x01 [PIN_NUM] [LEVEL]—— 上报引脚电平变化需预先配置为中断模式中断处理使用 mbed OS 的InterruptIn类注册下降沿/上升沿中断中断服务程序ISR仅置位标志位主循环pollAll()中检查标志并生成EVENT帧避免在 ISR 中执行耗时的 USB 发送操作。ADC 采集服务ID0x03支持单次/连续采集可配置通道、采样精度、参考电压。关键 APICMD: 0x03 0x01 [CHANNEL] [RESOLUTION]—— 启动单次采集RESOLUTION: 012bit, 110bitEVENT: 0x03 0x01 [CHANNEL] [VALUE_MSB] [VALUE_LSB]—— 上报 12-bit 采集值性能优化采用 ADC DMA 循环缓冲区主循环以 100Hz 频率检查 DMA 半传输/全传输标志将最新采样值打包为EVENT确保实时性。3.3 用户自定义服务示例扩展一个 PWM 输出服务ID0x04的最小实现#include mbed.h #include ServiceBase.h class PWMServ : public ServiceBase { private: PwmOut pwm_pin; uint8_t id; public: PWMServ(PinName pin, uint8_t svc_id) : pwm_pin(pin), id(svc_id) {} uint8_t getServiceID() const override { return id; } bool handleCMD(const uint8_t* payload, uint8_t len) override { if (len 3) return false; uint8_t channel payload[0]; uint16_t period_ms (payload[1] 8) | payload[2]; uint16_t pulse_ms (len 5) ? ((payload[3] 8) | payload[4]) : period_ms/2; // 配置 PWM周期period_ms ms脉宽pulse_ms ms pwm_pin.period_ms(period_ms); pwm_pin.pulsewidth_ms(pulse_ms); return true; } void handleEVENT() override {} // 无周期事件 void onConnect() override { pwm_pin 0.0f; } // 连接时关闭PWM void onDisconnect() override { pwm_pin 0.0f; } }; // 在 main.cpp 中注册 PWMServ pwm_svc(LED1, 0x04); ServiceManager svc_mgr; int main() { svc_mgr.registerService(pwm_svc); // ... 其他初始化 }4. 硬件接口与移植指南DSgatewayMBED 的硬件适配性是其工程价值的核心。项目预置了对主流 mbed 开发板的支持如 NUCLEO-F401RE、LPC1768、DISCO-L475VG-IOT01A但其 HAL 层设计允许快速移植至任意符合 mbed OS 要求的 MCU 平台。4.1 关键外设接口要求外设最小要求说明USB DeviceCDC ACM Class, 12Mbps Full-Speed必需用于与 PC 通信需 MCU 支持 USB Device PHY 及描述符枚举UART≥2 个独立 UART支持 DMA Rx/Tx推荐用于连接 DUT至少 1 个用于调试日志GPIO≥16 个可配置引脚支持外部中断推荐用于控制/监测 DUTADC≥8 通道12-bit 分辨率可选用于模拟信号采集Timer≥1 个 32-bit 定时器精度≤1ms必需用于 HEARTBEAT、超时管理4.2 USB CDC 实现要点USB CDC ACM 是 PC 侧零驱动的关键。DSgatewayMBED 使用 mbed OS 的USBSerial类但需注意描述符定制修改USBSerial构造函数中的vendor_id和product_id确保 PC 识别为专用设备如 VID0x0483, PID0x5740。缓冲区大小USBSerial默认 TX/RX 缓冲区为 256 字节对于高频EVENT帧可能不足。需在USBSerial.h中调整TX_BUFFER_SIZE和RX_BUFFER_SIZE至 1024 字节并重写write()方法以支持非阻塞发送。线程安全USBSerial::write()非线程安全若在 FreeRTOS 模式下多任务调用需添加互斥锁osMutexId usb_mutex; // 初始化时创建 usb_mutex osMutexCreate(NULL); // write 前加锁 osMutexWait(usb_mutex, osWaitForever); usb_serial.write(data, len); osMutexRelease(usb_mutex);4.3 移植到新平台步骤以移植至 STM32H743使用 mbed OS 6为例创建新目标在mbed-os/targets/下新增TARGET_STM32H743目录复制TARGET_STM32F4的device文件夹修改PinNames.h以匹配 H743 的引脚定义。USB 驱动适配H743 使用 USBHSHigh-Speed需替换USBDevice的底层驱动。修改USBDevice.cpp将USBD_Init()替换为USBD_HS_Init()并更新中断向量表。时钟配置H743 的 USB HS 需要 48MHz 时钟修改system_clock.c配置 RCC 生成精确的 48MHz 时钟源。编译选项在mbed_app.json中添加target_overrides: { STM32H743: { target.extra_labels_add: [STM32H743], target.printf_lib: std, target.restrict_size: 1MB } }验证编译后烧录PC 设备管理器应识别为STMicroelectronics Virtual COM Port并能正常收发 DS-Frame。5. 与上位机集成实践DSgatewayMBED 的价值最终体现在与上位机应用的协同效率上。项目提供 Python SDKdsgw-py作为参考实现其设计原则是“最小依赖、最大兼容”。5.1 Python SDK 核心类DSGateway类封装了完整的通信协议栈class DSGateway: def __init__(self, portNone, baudrate115200): self.ser serial.Serial(port, baudrate, timeout1) self.seq 0 self._recv_buffer bytearray() def send_cmd(self, svc_id, cmd_code, payloadb): 构造并发送CMD帧 frame bytearray([0xA5, 0x5A]) frame.append(len(payload) 2) # Length SVC_ID CMD_CODE PAYLOAD frame.append(0x01) # Type CMD frame.append(self.seq % 256) frame.extend([svc_id, cmd_code]) frame.extend(payload) crc self._calc_crc(frame[0:-2]) frame.extend(crc.to_bytes(2, little)) self.ser.write(frame) self.seq 1 def recv_resp(self, timeout1.0): 阻塞接收RESP帧自动校验与解析 start_time time.time() while time.time() - start_time timeout: # 解析 _recv_buffer 中的完整帧... if self._is_valid_frame(buf): return self._parse_resp(buf) return None5.2 典型应用场景代码场景1自动化产线测试UARTGPIOfrom dsgw_py import DSGateway gw DSGateway(COM3) # 1. 配置DUT的UART接口 gw.send_cmd(0x01, 0x01, b\x01\x00\x96) # UART1, 9600bps # 2. 拉高复位引脚 gw.send_cmd(0x02, 0x01, b\x05\x01) # GPIO5, output mode gw.send_cmd(0x02, 0x02, b\x05\x01) # GPIO5, HIGH time.sleep(0.1) gw.send_cmd(0x02, 0x02, b\x05\x00) # GPIO5, LOW (release reset) # 3. 发送测试指令并读取响应 gw.send_cmd(0x01, 0x02, b\x01\x48\x45\x4C\x4C\x4F) # UART1, HELLO resp gw.recv_resp() if resp and resp[status] 0x00: print(DUT responded:, resp[data])场景2实时数据监控ADCEVENTimport matplotlib.pyplot as plt from threading import Thread def event_listener(gw): while True: evt gw.recv_event() # 非阻塞监听EVENT if evt and evt[svc_id] 0x03 and evt[evt_code] 0x01: # 绘制ADC实时波形 plt.scatter(time.time(), evt[value], cb) plt.pause(0.01) # 启动监听线程 listener Thread(targetevent_listener, args(gw,)) listener.start() # 启动ADC连续采集 gw.send_cmd(0x03, 0x02, b\x00\x01) # ADC Ch0, continuous mode5.3 调试与诊断工具项目附带dsgw-cli命令行工具用于快速验证网关状态# 查看所有服务列表 dsgw-cli --port COM3 list-services # 向GPIO5写入高电平 dsgw-cli --port COM3 gpio-write 5 1 # 捕获100个ADC事件并保存为CSV dsgw-cli --port COM3 adc-capture 0 100 adc_log.csv该工具直接调用 SDK是现场工程师排查问题的首选。其输出包含详细的帧级日志Hex Dump便于分析协议层错误。6. 性能基准与资源占用在 STM32F407VGT6168MHz, 192KB RAM, 1MB Flash平台上DSgatewayMBED 的实测资源占用如下项目数值说明Flash 占用42.3 KB启用所有内置服务UART/GPIO/ADC/PWM及 FreeRTOSRAM 占用18.7 KB包含 USB CDC 双缓冲2×1024B、UART DMA 缓冲2×512B、FreeRTOS 内核堆栈CPU 占用率12% 168MHz主循环执行周期 83μs空闲时进入WFI指令休眠USB 吞吐量920 KB/s持续发送 1024-byteEVENT帧PC 端稳定接收UART 透传延迟≤150 μs从 UART RX 中断触发到 USB TX 启动的端到端延迟关键优化点零拷贝 DMAUART RX 使用 DMA 循环缓冲区数据直接从外设 FIFO 流入内存CPU 仅在缓冲区半满/全满时介入消除轮询开销。帧内联解析parse_frame()函数采用查表法LUT快速识别 Type 与 Service ID避免字符串比较。静态内存分配所有服务对象、缓冲区、FreeRTOS 对象队列、信号量均在编译期静态分配杜绝运行时malloc导致的碎片化。这些数据表明DSgatewayMBED 在资源严苛的 Cortex-M4 平台上仍能提供接近 PC 级的通信性能完全满足桌面站场景对实时性与稳定性的双重要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2440703.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…