DICOM通讯(ACSE->DIMSE->Worklist)
DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。
一、DICOM 通讯协议栈总体架构
DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次,如下所示:
物理层 (TCP/IP)
└── 应用服务元素层(ACSE)└── DICOM 消息服务元素层(DIMSE)└── DICOM 服务类(如 Worklist、C-FIND、C-STORE)
二、分层结构分析(ACSE → DIMSE → 服务类)
| 层级 | 全称 | 功能 | 示例 |
|---|---|---|---|
| ACSE | Association Control Service Element | 建立、维护、释放连接 | 握手、验证 AE Title、协商 SOP Class |
| DIMSE | DICOM Message Service Element | 封装具体 DICOM 命令 | C-ECHO(测试联通)、C-FIND(查询)、C-STORE(存储) |
| 服务类(SCP/SCU) | 如 Worklist、Storage 等 | 提供特定服务操作的实现 | Modality Worklist、Image Store 等 |
三、各层通讯流程详解
1. ACSE – 建立连接和协商参数
- 目的: 类似“握手”,保证双方都支持相同的 SOP Class 和传输语法。
- 主要操作: A-ASSOCIATE 请求/响应。
- 双方角色:
- SCU(Service Class User)——客户端,一般是 Modalities(如 CT、MR);
- SCP(Service Class Provider)——服务端,一般是 RIS、PACS 系统。
🔁 示例流程:
Modality(SCU) ---- A-ASSOCIATE-REQUEST ----> RIS/PACS(SCP)<---- A-ASSOCIATE-ACCEPT ----
2. DIMSE – 封装命令与数据
- DIMSE-C(Command)服务:
C-ECHO:测试网络连通性;C-FIND:查找 Worklist;C-STORE:存储影像;
- DIMSE-N(Normalized)服务:
- 如 N-CREATE, N-SET,多用于打印、影像挂接等场景。
📌 这些命令都是通过 P-DATA 传输的,一次 DICOM 命令可能包含多个数据块(PDUs)。
3. 服务类:Modality Worklist 实际通讯流程
Modality Worklist(MWL)服务帮助 Modalities 自动获取病人检查信息,避免人工输入。
🧭 实际通讯步骤如下:
| 步骤 | 通讯方向 | 操作 | 协议层 | 说明 |
|---|---|---|---|---|
| 1 | Modality → RIS | A-ASSOCIATE | ACSE | 连接并协商 SOP Class 和传输语法 |
| 2 | Modality → RIS | C-FIND 请求 | DIMSE | 提交查询条件(如 Scheduled Station AE Title) |
| 3 | RIS → Modality | C-FIND 响应 | DIMSE | 返回匹配的 Worklist 项(可能多条) |
| 4 | Modality → RIS | A-RELEASE | ACSE | 释放连接 |
🌐 查询参数举例(Worklist C-FIND 请求 DataSet)
| 属性标签 | 属性名称 | 说明 | 示例 |
|---|---|---|---|
| (0008,0050) | Accession Number | 检查号 | 20240401-01 |
| (0010,0020) | Patient ID | 病人ID | 123456 |
| (0010,0010) | Patient Name | 病人姓名 | 张三 |
| (0040,0100) | Scheduled Procedure Step Sequence | 计划检查步骤 | 包含影像类型、时间等信息 |
四、现实系统中的典型场景(示意图)
+-----------+ +-------------+
| Modalities| <--C-FIND--| Worklist SCP|
| (CT/MR) | --C-FIND--> | (如RIS) |
+-----------+ +-------------+\ ^\-C-STORE 影像--------/\--> PACS 存储服务器
🧠 总结知识点(结构化回顾)
| 层级 | 关键术语 | 说明 | 举例 |
|---|---|---|---|
| ACSE | A-ASSOCIATE, A-RELEASE, A-RJ | 建立/释放会话连接 | 连接 RIS/PACS |
| DIMSE | C-FIND, C-STORE, C-ECHO | 封装 DICOM 操作指令 | 查询 Worklist、发送影像 |
| 服务类 | Worklist, Storage 等 | 提供具体 DICOM 服务 | 自动查询病人信息、影像归档 |
🌐模块一 DICOM 通讯分层机制简明解析
DICOM 通讯协议遵循类似于 TCP/IP 的分层架构,其核心通信流程由以下三层构成:
🔷 1. ACSE(Association Control Service Element)
负责 建立、确认、拒绝或释放会话连接
✅ 功能:
- 完成 SCU(客户端) 与 SCP(服务器)之间的会话建立和协商
- 协议协商内容:SOP Class、传输语法、AE Title 等
📦 ACSE 层常见 PDU(协议数据单元)类型:
| PDU 类型 | 含义 | 功能说明 |
|---|---|---|
A-ASSOCIATE-RQ | 请求建立连接 | SCU 发起连接请求 |
A-ASSOCIATE-AC | 接受连接 | SCP 接受并返回 |
A-ASSOCIATE-RJ | 拒绝连接 | SCP 拒绝连接请求 |
A-RELEASE-RQ / RP | 释放连接 | 通讯结束时使用 |
P-DATA-TF | 传输数据 | 封装 DICOM 命令与数据(传入 DIMSE 层) |
🔷 2. DIMSE(DICOM Message Service Element)
处理 DICOM 命令、响应和数据,如查询、存储、回声测试等
✅ 功能:
- 接收 ACSE 层传入的
P-DATAPDU; - 解包获取 DIMSE 命令:如
C-ECHO、C-FIND、C-STORE等; - 执行 DICOM 服务操作,封装响应回传。
📌 数据识别关键:
📍若接收到的第一个字节为
0x04(十进制 4),则代表该 PDU 类型为P-DATA-TF,表明数据需进入 DIMSE 层进一步处理。
🔷 3. DICOM 服务类(以 Worklist 为例)
通过 DIMSE 封装的服务,提供真实的医疗影像业务能力,例如病人信息查询、影像传输等。
✅ Worklist 示例(Modality Worklist):
- 基于 DIMSE 层的
C-FIND命令; - 查询参数包括病人姓名、检查日期、检查类型等;
- 返回结果包含待检查病人的详细信息,供 Modalities 自动填充。
你的分析很精准,抓住了 DICOM 协议中从 ACSE 到 DIMSE 的过渡细节。下面我将对你这段内容进行条理清晰的结构化分析,并补充:
- PDU → PDV → DIMSE Command/DataSet 的转换流程图解
- DIMSE 服务组(11种服务)全部列出并说明作用
- PDV Flags 字节说明表格
🔄 模块二 DICOM 通讯处理流程:PDU → PDV → DIMSE
当 ACSE 层接收到 PDU 且其类型为 0x04(P-DATA-TF) 时,进入以下处理流程:
PDU(P-DATA-TF)↓
剥离 PDU Header↓
分解为一个或多个 PDV(Presentation Data Value)↓
每个 PDV 包含:- Presentation Context ID(表示关联 SOP Class)- PDV Header Flags(标识 Command/Data Set 及是否结束)- PDV 内容(真正的数据)↓
根据 Flags 判断:- 是 Command 还是 Data Set- 是否已完成该 PDV 单元↓
交由 DIMSE 层解析并执行服务操作(如 C-FIND、C-STORE)
🧱 DIMSE 层完整服务列表(11种)
DIMSE(DICOM Message Service Element)定义了 11种服务原语,包括命令和响应,分为两类:
1️⃣ DIMSE-C 服务(基于 Composite 信息对象,最常用)
| 服务名 | 操作代码 | 用途说明 |
|---|---|---|
C-ECHO | 0x0030 | 测试 DICOM 通讯连通性 |
C-FIND | 0x0020 | 执行查询操作(如 Worklist 查询) |
C-GET | 0x0010 | 从 SCP 获取数据(图像等) |
C-MOVE | 0x0021 | 将数据从 SCP 推送到其他 AE |
C-STORE | 0x0001 | 向 PACS 服务器存储图像或其他实例 |
2️⃣ DIMSE-N 服务(基于 Normalized 信息对象,主要用于打印管理等)
| 服务名 | 操作代码 | 用途说明 |
|---|---|---|
N-EVENT-REPORT | 0x0100 | 报告事件(如打印完成) |
N-GET | 0x0110 | 获取属性信息 |
N-SET | 0x0120 | 设置属性(如修改打印参数) |
N-ACTION | 0x0130 | 请求操作(如开始打印) |
N-CREATE | 0x0140 | 创建对象(如打印作业) |
N-DELETE | 0x0150 | 删除对象 |
🧾 PDV Header Flags 字节说明
每个 PDV(Presentation Data Value) 的头部包含一个 Flags 字节(1字节),用于指示数据性质:
| 位 | 含义 | 值为 1 时 | 备注 |
|---|---|---|---|
| bit 0 | 命令/数据集标识 | 表示这是一个命令(Command);为0则为数据集(Data Set) | |
| bit 1 | 最后一个片段标识 | 表示这是该 PDV 的最后一个片段 | PDV 可能被分片 |
| bit 2-7 | 保留 | 固定为0 | 未来扩展位 |
示例:
| Flags 十六进制 | 说明 |
|---|---|
0x01 | 命令,未结束(中间片段) |
0x03 | 命令,最后片段 |
0x00 | 数据集,未结束 |
0x02 | 数据集,最后片段 |
🎯 完整结构梳理
| 层级 | 数据类型 | 说明 |
|---|---|---|
| PDU 层(ACSE) | P-DATA-TF | 类型值为 0x04,承载 PDV |
| 表示层(PDV) | Flags + 数据 | 表示是否是命令、数据及是否最后片段 |
| DIMSE 层 | 命令/数据集 | 解析 PDV 后进入执行(如 C-FIND 查询) |
每个 DIMSE 服务对应的典型 SOP Class UID(服务对象类唯一标识符) 和实际应用场景。我们将从 DIMSE-C 和 DIMSE-N 两大类出发,列成表格。
🧱 模块三 DIMSE-C 服务类:SOP Class UID & 典型场景
| DIMSE 命令 | SOP Class 名称 | SOP Class UID | 应用场景 |
|---|---|---|---|
C-ECHO | Verification SOP Class | 1.2.840.10008.1.1 | 检查 DICOM 节点联通性(Ping 测试) |
C-FIND | Modality Worklist Information Model – FIND | 1.2.840.10008.5.1.4.31 | Modalities 查询待检病人信息(从 RIS) |
C-FIND | Patient Root Query/Retrieve Information Model – FIND | 1.2.840.10008.5.1.4.1.2.1.1 | PACS 查询病人级别影像信息 |
C-FIND | Study Root Query/Retrieve Information Model – FIND | 1.2.840.10008.5.1.4.1.2.2.1 | PACS 查询检查级影像信息 |
C-MOVE | Study Root Query/Retrieve Information Model – MOVE | 1.2.840.10008.5.1.4.1.2.2.2 | 从 PACS 将图像“推送”到目标 AE |
C-GET | Study Root Query/Retrieve Information Model – GET | 1.2.840.10008.5.1.4.1.2.2.3 | 客户端主动“拉取”图像 |
C-STORE | CT Image Storage | 1.2.840.10008.5.1.4.1.1.2 | CT 图像发送至 PACS |
C-STORE | MR Image Storage | 1.2.840.10008.5.1.4.1.1.4 | MR 图像发送至 PACS |
C-STORE | Secondary Capture Image Storage | 1.2.840.10008.5.1.4.1.1.7 | 屏幕截图或再处理图像存储 |
📝 说明:
C-FIND与C-MOVE、C-GET对应的 SOP Class UID 会根据查询层级(Patient/Study/Image)变化;C-STORE的 SOP Class UID 会根据图像类型变化(CT、MR、US、CR 等);- 有超过百种 SOP Class UID,但常用如上所列。
🧱 DIMSE-N 服务类:SOP Class UID & 典型场景
| DIMSE 命令 | SOP Class 名称 | SOP Class UID | 应用场景 |
|---|---|---|---|
N-CREATE / N-SET / N-ACTION | Basic Film Session | 1.2.840.10008.5.1.1.1 | 打印系统:创建打印会话 |
N-CREATE / N-SET | Basic Film Box | 1.2.840.10008.5.1.1.2 | 打印系统:设置打印页布局 |
N-CREATE / N-SET | Basic Grayscale Image Box | 1.2.840.10008.5.1.1.4 | 打印图像 |
N-GET / N-DELETE | Print Job SOP Class | 1.2.840.10008.5.1.1.14 | 查询或取消打印作业 |
N-EVENT-REPORT | Basic Film Session Event Reporting | 1.2.840.10008.5.1.1.40 | 打印完成等事件通知 |
📝 DIMSE-N 服务多用于 DICOM 打印系统(DICOM Print Management),在临床中已有 PACS 较少使用,但仍用于一些医疗影像打印服务器对接中。
🧩 补充说明:SOP Class UID 的作用
- 每个 SOP Class UID 唯一标识一种 DICOM 服务或数据模型;
- 在 ACSE 建立连接时,双方通过 A-ASSOCIATE-RQ 中的 Presentation Context 协商 SOP Class(即功能);
- 若某一端不支持该 UID,则连接请求会被拒绝或功能无法执行。
📌模块四 总结 Modality Worklist 通讯涉及的完整流程
| 阶段 | 协议元素 | 操作描述 |
|---|---|---|
| 1️⃣ 连接建立 | A-ASSOCIATE-RQ | SCU(模态设备)发起连接请求,协商服务(如 Worklist SOP Class)和传输语法 |
A-ASSOCIATE-AC | SCP(Worklist Server)返回确认接受连接 | |
| 2️⃣ 查询发起 | P-DATA-TF(封装 C-FIND-RQ) | SCU 发送 Worklist 查询请求,封装在 P-DATA-TF 中 |
| 3️⃣ 查询响应 | P-DATA-TF(封装 C-FIND-RSP) | SCP 多次返回查询结果(逐条或批量),每次包含状态字段 |
| 4️⃣ 查询结束 | C-FIND-RSP(Status=0x0000) | 表示查询结果已全部返回,结束 |
| 5️⃣ 会话释放 | A-RELEASE-RQ / A-RELEASE-RP | 通讯完成后主动释放连接 |
🔁 流程图概览(通讯交互顺序)
[SCU] [SCP]| ||-- A-ASSOCIATE-RQ (请求连接) -------->||<-- A-ASSOCIATE-AC (接受连接) --------|| ||-- P-DATA-TF (封装 C-FIND-RQ) ------->||<-- P-DATA-TF (封装 C-FIND-RSP) -----||<-- P-DATA-TF (封装 C-FIND-RSP) -----| 多次,返回一个或多个结果|<-- P-DATA-TF (Status=0x0000) -------| 表示返回完毕| ||-- A-RELEASE-RQ --------------------->||<-- A-RELEASE-RP ---------------------|
🧾 关键服务元素详解
1️⃣ A-ASSOCIATE-RQ 包含协商内容:
| 字段 | 含义 |
|---|---|
| Called AE Title | 接收方 AE 标识(服务器) |
| Calling AE Title | 发送方 AE 标识(客户端) |
| SOP Class UID | 通讯中使用的服务类(如:1.2.840.10008.5.1.4.31) |
| Transfer Syntax | 如:Implicit VR Little Endian、Explicit VR 等 |
| Presentation Context ID | 绑定 SOP Class + Transfer Syntax |
2️⃣ C-FIND-RQ 包含查询数据集(DataSet)
一个标准的 Worklist 查询参数示例:
(PatientName, PN, “DOE^JOHN”)
(ScheduledProcedureStepStartDate, DA, “20250414”)
(Modality, CS, “CT”)
3️⃣ C-FIND-RSP 包含:
| 字段 | 含义 |
|---|---|
| Command Field | C-FIND-RSP |
| Status | 0xFF00(匹配项)、0x0000(完成)、其他值(错误) |
| DataSet | 一项或多项匹配结果(病人、预约信息) |
🎯 四、Status 字段值说明(C-FIND-RSP)
| Status 值 | 含义 | 说明 |
|---|---|---|
0xFF00 | Pending | 匹配项返回中,后续还有结果 |
0xFF01 | Pending | 同上(备用代码) |
0x0000 | Success | 所有结果已返回,正常结束 |
0xA700 | Refused | SCP 拒绝处理请求 |
0xA900 | Error | 请求参数错误或内部失败 |
0xCxxx | Failed | 查询失败,具体错误由 x 标识 |
✅典型场景回顾(应用于 Modalities 自动填充)
- CT 设备启动时主动发起 Worklist 查询;
- 查询参数通常为当天日期;
- PACS 或 RIS 返回病人待检查列表;
- 技术员选择一条记录,设备自动填充病人信息;
- 完善检查项后进行采集、图像发送等操作。
📘 模块四 连接释放的作用
在 DICOM 网络通讯中,一个完整的会话由“建立 → 通讯 → 释放”三阶段构成:
| 阶段 | 操作 | 功能 |
|---|---|---|
| 建立连接 | A-ASSOCIATE-RQ / AC | 建立 DICOM 连接 |
| 数据交换 | P-DATA-TF 封装 DIMSE 命令 | 进行 C-FIND、C-STORE 等业务操作 |
| 释放连接 | A-RELEASE-RQ / RP | 优雅关闭连接,释放网络和会话资源 |
📌 释放连接并不是“强制断开”,而是一种双向确认的正常断开过程。
🧱 A-RELEASE-RQ / RP 数据结构说明(简化)
A-RELEASE-RQ(SCU 发起)
| 字段 | 值 |
|---|---|
| PDU Type | 0x05 |
| Reserved | 00 |
| Length | 固定值 4(或0) |
| Data | 空(无实际数据) |
A-RELEASE-RP(SCP 响应)
| 字段 | 值 |
|---|---|
| PDU Type | 0x06 |
| Reserved | 00 |
| Length | 固定值 4(或0) |
| Data | 空(无实际数据) |
🔁 释放流程图(时序)
[SCU] [SCP]| ||-- A-RELEASE-RQ --------------------->| ← 客户端请求释放连接|<-- A-RELEASE-RP ---------------------| ← 服务端确认释放| ||----> 关闭 Socket ------------------->| ← 通讯资源释放完成
🔍 为什么“释放连接”是必须的?
| 原因 | 描述 |
|---|---|
| ✅ 协议规范要求 | 不释放会话会被视为异常断开,影响后续通讯 |
| ✅ 系统资源回收 | 每个连接都占用线程、缓冲区、Socket 等资源 |
| ✅ 日志清晰 | 正常释放连接便于审计和问题追踪 |
| ❌ 反面案例 | 强制断开(如关闭Socket)可能导致远端状态不一致或挂起 |
🎯 释放连接失败的处理(异常处理建议)
| 场景 | 建议 |
|---|---|
| 网络中断时强制断开 | 日志记录 + 自动重连机制 |
| SCP 未响应 A-RELEASE-RP | 设置超时后断开连接并释放资源 |
| 出现异常前未释放连接 | 加入 finally 或连接池释放机制 |
✅ 总结:释放连接在 DICOM 中的地位
- 是整个 ACSE 协议的重要组成;
- 是符合 DICOM 协议的“优雅断开”;
- 必须在 SCU 或 SCP 完成所有 DIMSE 命令操作后再发起;
- 在调试网络通讯时,如果发现连接悬挂不释放,极可能是
A-RELEASE环节未正确处理。
相关文章:
DICOM通讯(ACSE->DIMSE->Worklist)
DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。 一、DICOM 通讯协议栈总体架构 DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次…...
若依框架修改左侧菜单栏默认选中颜色
1.variables.sacc中修改为想要的颜色 2.给目标设置使用的颜色...
搜广推校招面经七十八
字节推荐算法 一、实习项目:多任务模型中的每个任务都是做什么?怎么确定每个loss的权重 这个根据实际情况来吧。如果实习时候用了moe,就可能被问到。 loss权重的话,直接根据任务的重要性吧。。。 二、特征重要性怎么判断的&…...
广搜bfs-P1443 马的遍历
P1443 马的遍历 题目来源-洛谷 题意 要求马到达棋盘上任意一个点最少要走几步 思路 国际棋盘规则是马的走法是-日字形,也称走马日,即x,y一个是走两步,一个是一步 要求最小步数,所以考虑第一次遍历到的点即为最小步数ÿ…...
强化学习算法系列(六):应用最广泛的算法——PPO算法
强化学习算法 (一)动态规划方法——策略迭代算法(PI)和值迭代算法(VI) (二)Model-Free类方法——蒙特卡洛算法(MC)和时序差分算法(TD) (三)基于动作值的算法——Sarsa算法与Q-Learning算法 (四…...
Vue3 + TypeScript中provide和inject的用法示例
基础写法(类型安全) typescript // parent.component.vue import { provide, ref } from vue import type { InjectionKey } from vue// 1. 定义类型化的 InjectionKey const COUNTER_KEY Symbol() as InjectionKey<number> const USER_KEY Sy…...
AI Agents系列之AI代理架构体系
1. 引言 智能体架构是定义智能体组件如何组织和交互的蓝图,使智能体能够感知其环境、推理并采取行动。本质上,它就像是智能体的数字大脑——集成了“眼睛”(传感器)、“大脑”(决策逻辑)和“手”(执行器),用于处理信息并采取行动。 选择正确的架构对于构建有效的智能…...
3个实用的脚本
1. Linux 系统清理临时文件脚本 该脚本用于清理系统中 /tmp 目录下超过 7 天的临时文件。 #!/bin/bash# 清理 /tmp 目录下超过 7 天的文件 find /tmp -type f -atime 7 -exec rm -f {} \;# 清理 /var/tmp 目录下超过 7 天的文件 find /var/tmp -type f -atime 7 -exec rm -f {…...
2025海外代理IP测评:Bright Data,ipfoxy,smartproxy,ipipgo,kookeey,ipidea哪个值得推荐?
近年来,随着全球化和跨境业务需求的不断扩大“海外代理IP”逐渐成为企业和个人在多样化场景中的重要工具。无论是进行数据采集、广告验证、社交媒体管理,还是跨境电商平台运营,选择合适的代理IP服务商都显得尤为重要。然而,市场上…...
条款13:以对象管理资源
什么是资源?内存?没错但是内存只是我们需要管理众多资源的一种,资源还包括数据的连接,文件描述符,互斥锁,网络套接字,不管哪种资源他都是从系统中获取的,当你不在需要他的时候是要还…...
Android守护进程——Vold (Volume Daemon)
简介 介绍:Vold 是用来管理 android 系统的存储设备,如U盘、SD卡、磁盘等移动设备的热插拔、挂载、卸载、格式化 框架结构:Vold 在系统中以守护进程存在,是一个单独的进程。处于Kernel和Framework之间,是两个层级连接…...
vue3+vite 实现.env全局配置
首先创建.env文件 VUE_APP_BASE_APIhttp://127.0.0.1/dev-api 然后引入依赖: pnpm install dotenv --save-dev 引入完成后,在vite.config.js配置文件内加入以下内容: const env dotenv.config({ path: ./.env }).parsed define: { // 将…...
AI 组件库是什么?如何影响UI的开发?
AI组件库是基于人工智能技术构建的、面向用户界面(UI)开发的预制模块集合。它们结合了传统UI组件(如按钮、表单、图表)与AI能力(如机器学习、自然语言处理、计算机视觉),旨在简化开发流程并增强…...
【AI模型学习】关于写论文——论文的审美
文章目录 一、“补丁法”(Patching)1.1 介绍1.2 方法论1.3 实例 二、判断工作的价值2.1 介绍2.2 详细思路2.3 科研性vs工程性 三、novelty以及误区3.1 介绍3.2 举例 看了李沐老师的读论文系列后,总结三个老师提到的有关课题研究和论文写作的三…...
OpenCV day6
函数内容接上文:OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑(模糊) 25.cv2.blur(): 26.cv2.boxFilter(): 27.cv2.GaussianBlur(): 28.cv2.medianBlur(): 29.cv2.bilateralFilter(): 锐…...
AI的出现,是否能替代IT从业者?
一、技术能力的边界:AI 能做什么? 自动化基础任务 代码生成:GitHub Copilot、天工 AI 等工具可自动生成 80% 以上的重复性代码,例如根据自然语言描述生成完整的网站前端代码。测试与运维:AI 驱动的测试工具能自动生成测…...
【AI飞】AutoIT入门七(实战):python操控autoit解决csf视频批量转换(有点难,AI都不会)
背景: 终极目标:通过python调用大模型,获得结果,然后根据返回信息,控制AutoIT操作电脑软件,执行具体工作。让AI更具有执行力。 已完成部分: 关于python调用大模型的,可以参考之前的…...
MARA/MARC表 PSTAT字段
最近要开发一个维护物料视图的功能。其中PSTAT字段是来记录已经维护的视图的。这里记录一下视图和其对应的字母。 MARA还有个VPSTA(完整状态)字段,不过在我试的时候每次PSTAT出现一个它就增加一个,不知道具体是为什么。 最近一直…...
《探秘鸿蒙分布式软总线:开启无感发现与零等待传输新时代》
在数字化浪潮中,设备之间的互联互通成为构建智能生态的关键。鸿蒙系统中的分布式软总线技术,宛如一座桥梁,让各种智能设备紧密相连。尤其是其实现的设备间无感发现和零等待传输功能,更是为用户带来了前所未有的便捷体验࿰…...
学习型组织与系统思考
真正的学习型组织不是只关注个人的学习,而是关注整个系统的学习。—彼得圣吉 在这两年里,越来越多的企业开始询问是否可以将系统思考的内容内化给自己的内训师,进而在公司内部进行教学。我非常理解企业这样做的动机,毕竟内部讲师…...
支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试
在mingw14.2版本中, print库的功能默认没有开启, 生成可执行文件的tasks.json里要显式加-lstdcexp, 注意放置顺序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…...
守护者进程小练习
守护者进程含义 定义:守护进程(Daemon)是运行在后台的特殊进程,独立于控制终端,周期性执行任务或等待事件触发。它通常以 root 权限运行,名称常以 d 结尾(如 sshd, crond)。 特性&a…...
opencv函数展示3
一、图像平滑(模糊) 线性滤波(速度快): 1.cv2.blur() 2.cv2.boxFilter() 3.cv2.GaussianBlur() 非线性滤波(速度慢但效果好): 4.cv2.medianBlur() 5.cv2.bilateralFilter() 二、锐…...
环境搭建与入门:Flutter SDK安装与配置
环境搭建与入门:Flutter SDK安装与配置 一、Flutter开发环境概述 1.1 Flutter开发环境组成 Flutter开发环境主要包含以下几个关键组件: Flutter SDK:Flutter的核心开发工具包Dart SDK:Flutter使用的编程语言环境IDE/编辑器&am…...
linux驱动之poll
驱动中 poll 实现 在用户空间实现事件操作的一个主要实现是调用 select/poll/epoll 函数。那么在驱动中怎么来实现 poll 的底层呢? 其实在内核的 struct file_operations 结构体中有一个 poll 成员,其就是底层实现的接口函数。 驱动中 poll 函数实现原…...
遥感技术赋能电力设施监控:应用案例篇
目前主流的电力巡检手段利用无人机能够通过设定灵活航线进行低空飞行、搭载不同的采集设备,能够从不同角度对输电线进行贴近拍摄,但缺陷是偏远山区无人机飞行技术要求高,成本高,且飞行的无人机也可能会对输电线产生破坏。 星图云开…...
SpringAI+DeepSeek大模型应用开发——5 ChatPDF
ChatPDF 知识库 RAG检索增强 由于训练大模型非常耗时,再加上训练语料本身比较滞后,所以大模型存在知识限制问题: 知识数据比较落后,往往是几个月之前的;不包含太过专业领域或者企业私有的数据; 为了解决…...
yolov8 框架自带模型体验功能
简介 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务。 YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,…...
柴油机气缸体顶底面粗铣组合机床总体及夹具设计
一、引言 柴油机气缸体是柴油机的关键部件,其顶底面的加工精度直接影响气缸体的装配质量和柴油机的性能。粗铣是气缸体顶底面加工的重要工序,设计一款高效、精确的粗铣组合机床及配套夹具,对于提高气缸体加工效率和质量具有重要意义。 二、…...
SpringBoot - Minio
1、简介 MinIO 是一个开源的对象存储服务器,用于存储和管理大规模的非结构化数据,例如图像、视频、日志文件、备份和容器镜像。MinIO 旨在提供高性能、高可用性、可扩展性和易用性的对象存储解决方案,适用于私有云、公共云和混合云环境。2、…...
