VB6/VB.NET读取安捷伦DSO-X 3034A测量值实战指南
简介本资源是一份面向电子测试自动化初学者与VB开发者的VISA仪器控制实践案例聚焦安捷伦DSO-X 3034A示波器的测量值读取任务解决传统手动操作效率低、数据难复用等工程痛点适用于高校实验教学、产线自动测试脚本开发及科研仪器集成场景。压缩包共33个文件76KB含6个核心VB源码文件含Form1.vb主界面逻辑与设计器、1个Visual Studio解决方案.sln及配套配置App.config、编译输出exe、调试符号pdb和资源文件resx结构完整可直接加载运行并快速调试VISA连接、SCPI命令发送如*MEAS:VPP?、二进制波形解析等关键流程。已有2022人学习下载提供开箱即用的一键式VB控制实现涵盖GPIB/TCPIP双接口适配、资源管理器初始化、Write/Read通信封装、异常处理与连接释放等工业级编程范式是理解VISAVB仪器自动化开发的典型入门范例。1. 为什么用 VB 读安捷伦 DSO-X 3034A 的测量值至今仍是产线调试和教学实验室的“稳态选择”你可能已经试过 Python PyVISA 跑示波器也见过 LabVIEW 的图形化流程图——但当你面对一台摆在老旧工装台上的安捷伦 DSO-X 30300 系列特别是 3034A连接线刚插上电脑却弹出“VISA Resource not found”或者 VB6 工程里Query返回空字符串、Timeout expired反复报错时你会意识到这不是一个“换语言就能解决”的问题而是一套硬件握手协议 驱动栈兼容性 VB 运行时环境约束共同构成的闭环。这个闭环在高校电子测量实验课、中小仪器厂商的配套上位机、以及部分工业现场的快速诊断工具中依然高频存在。它不时髦但可靠不炫技但可维护。本文不讲“为什么不用 Python”而是直击本质如何让 VB6或 VB.NET真正稳定、可复现、带错误兜底地从 DSO-X 3034A 读出 Vpp、Freq、RiseTime 等真实测量值。适合正在维护 legacy 上位机的工程师、需要交付可运行 demo 的课程设计者以及被“VISA 初始化失败”卡住三天的应届生。2. 从物理连接到 VISA 资源名DSO-X 3034A 在 VB 中的完整通信链路要让 VB 真正“看见”示波器必须打通三层物理层USB/GPIB 接口状态、驱动层VISA 运行时与仪器驱动注册、逻辑层VB 对 VISA COM 接口的调用封装。跳过任一层都会在viOpenDefaultRM或viOpen处静默失败。2.1 确认硬件连接方式与对应 VISA 资源字符串格式DSO-X 3034A 支持 USB TMC、LANVXI-11、GPIB 三种主流接口。实际项目中USB 是最常选、但也最容易翻车的方式——因为 Windows 10/11 默认禁用 USBTMC 类驱动且安捷伦现 Keysight旧版 USB 驱动与新版 VISA 冲突频发。接口类型推荐连接方式VISA 资源字符串示例VB 中传入viOpen关键验证动作USB TMC使用原装 USB-B 线勿用 USB-HUBUSB0::0x0957::0x1798::MY53012345::INSTR设备管理器中“Keysight USB Test Measurement Class Device”无黄色感叹号VISA Interactive ControlVISAIC能识别并*IDN?回显LAN静态 IP如 192.168.1.100关闭防火墙TCPIP0::192.168.1.100::inst0::INSTRping 192.168.1.100通VISAIC 中选择 TCPIP输入 IP 后点击 “Find” 成功列出GPIB需 NI GPIB-USB-HS 或 Keysight 82357BGPIB0::19::INSTRGPIB 地址需在示波器前面板设为 19VISAIC 中 GPIB 选项卡下能扫描到地址提示资源字符串中的MY53012345是示波器唯一序列号必须与设备背面标签一致。若不确定先用 Keysight Connection Expert免费工具扫描并复制其显示的完整字符串——不要手敲大小写、双冒号、空格均敏感。2.2 VB6 中调用 VISA COM 接口基于visa32.dll的最小可行封装VB6 不直接调用 VISA C API而是通过visa32.dll暴露的 COM 接口IviVisa。需先在工程中引用工程 → 引用 → 勾选 “VISA COM 3.0 Type Library”路径通常为C:\Windows\System32\visa32.tlb。以下是最小可运行代码块完成初始化、查询 IDN、读取当前屏幕 Vpp 值三步 VB6 代码声明全局变量模块级 Private rm As VisaComLib.ResourceManager Private vi As VisaComLib.FormattedIO488 初始化 VISA 资源管理器与仪器句柄 Private Sub InitScope() On Error GoTo ErrorHandler Set rm New VisaComLib.ResourceManager Set vi New VisaComLib.FormattedIO488 替换为你的真实资源字符串 Dim resourceStr As String resourceStr USB0::0x0957::0x1798::MY53012345::INSTR vi.IO rm.Open(resourceStr) vi.Timeout 5000 单位毫秒必须设默认 2s 常不够 查询设备身份验证通信 vi.WriteString *IDN? Dim idn As String idn vi.ReadString Debug.Print Scope IDN: idn 应输出类似 Agilent Technologies,DSO-X 3034A,MY53012345,02.02.2012 Exit Sub ErrorHandler: MsgBox VISA 初始化失败 Err.Description (Err Err.Number ) End Sub关键参数说明vi.Timeout 5000这是血泪经验。DSO-X 3034A 在 USB 模式下响应较慢尤其首次通信或测量值未缓存时2s 默认超时必失败。实测 4–5s 最稳。vi.IO rm.Open(...)rm.Open返回的是IviVisa.IFormattedIO488接口而非裸viSession因此后续直接用WriteString/ReadString无需手动处理viWrite/viRead字节数。On Error GoTo ErrorHandler绝不可省略。VISA 错误如VI_ERROR_RSRC_NFOUND会抛 VB 运行时错误不捕获则程序崩溃。2.3 读取测量值MEASure命令族与数据解析的硬核细节DSO-X 3034A 的测量值分两类屏幕当前显示值瞬时和统计值如 MAX/MIN/AVERAGE。教学与调试常用前者。命令语法严格区分通道与测量类型测量目标SCPI 命令VB 中WriteString典型返回值ReadString注意事项CH1 峰峰值MEASure:VPP? CHANnel15.24E00即 5.24V必须确保 CH1 已开启且有信号否则返回9.9E37溢出码CH1 频率MEASure:FREQuency? CHANnel11.002345E031002.345Hz频率测量需信号稳定至少 2 个周期否则返回9.9E37CH1 上升时间MEASure:RISETime? CHANnel12.15E-092.15ns需设置合适的垂直档位Volts/div和时基Sec/div否则无法触发边沿检测所有测量项MEASure:LIST? ALLVPP,5.24E00,FREQ,1.002345E03,RIS,2.15E-09返回逗号分隔字符串需按位置解析非 JSON VB6 代码安全读取 CH1 Vpp 值含溢出判断 Private Function ReadVppCH1() As Double On Error GoTo ReadError vi.WriteString MEASure:VPP? CHANnel1 Dim resp As String resp Trim(vi.ReadString) 检查溢出标志DSO-X 系列标准返回 If InStr(resp, 9.9E37) 0 Then ReadVppCH1 -1# 自定义无效值标记 Exit Function End If 尝试转换为数值 ReadVppCH1 CDbl(resp) Exit Function ReadError: ReadVppCH1 -2# 通信错误标记 End Function逻辑说明Trim()去除ReadString可能带回的\r\n和空格避免CDbl转换失败。InStr(resp, 9.9E37)是 DSO-X 系列的事实标准溢出码比检查resp 更可靠。返回-1#Double 型负一作为无效值调用方可用If result 0 Then统一处理避免NaN或Empty引发后续计算异常。3. VB 与 DSO-X 3034A 通信的五大避坑指南从驱动冲突到 SCPI 语法陷阱这一章不是“可能遇到的问题”而是我亲手在三个不同客户现场、累计重装 17 次驱动后总结的必然踩坑点。每一条都对应一个真实报错截图和最终解决方案。3.1 现象VISAIC 能识别设备VB6 却报VI_ERROR_RSRC_BUSY (0xBFFF0011)原因Keysight Connection Expert 或其他 Keysight 软件如 PathWave后台占用了 VISA Session。DSO-X 3034A 不支持多客户端并发访问VISA 层会拒绝新连接。解决任务管理器结束所有ConnectionExpert.exe、PathWave*.exe进程或改用 LAN 接口VXI-11 协议支持多客户端但需示波器固件 ≥ 02.02.2012。3.2 现象vi.Open成功但*IDN?返回空字符串或乱码原因USB TMC 驱动未正确加载。Windows 10/11 默认将 DSO-X 3034A 识别为“USB Composite Device”而非“Keysight USB Test Measurement Class Device”。解决设备管理器 → “通用串行总线控制器” 下找到带黄色感叹号的设备右键 → “更新驱动程序” → “浏览我的计算机” → “让我从列表中选” → 勾选 “显示兼容硬件” → 选择 “Keysight USB Test Measurement Class Device”重启电脑仅更新驱动不生效必须重启 VISA 服务。3.3 现象MEASure:VPP? CHANnel1返回9.9E37但示波器屏幕明明显示正常波形原因SCPI 命令中CHANnel1的拼写错误。DSO-X 3034A 严格区分大小写channel1、CH1、Chan1均无效必须是CHANnel1注意nne连续。解决复制 Keysight 编程手册 PDF 中的命令原文P. 327粘贴进 VB 字符串禁止手打任何 SCPI 命令。3.4 现象VB6 程序运行几分钟后自动崩溃事件查看器报vba6.dll错误原因VB6 的FormattedIO488对象在长时间运行中内存泄漏尤其频繁Open/Close时。DSO-X 3034A 的 USB 接口在断连重连后VB6 的 COM 封装易产生悬空指针。解决全程复用单个vi对象绝不反复Set vi New ...在窗体Unload事件中显式关闭Private Sub Form_Unload(Cancel As Integer) If Not vi Is Nothing Then vi.IO.Close 关闭 VISA 会话 Set vi Nothing End If If Not rm Is Nothing Then Set rm Nothing End If End Sub3.5 现象LAN 连接下vi.Open成功但MEASure命令超时VISAIC 中测试正常原因Windows 防火墙阻止了 VXI-11 的端口默认 111, 39518。DSO-X 3034A 的 VXI-11 实现对防火墙极其敏感。解决控制面板 → Windows Defender 防火墙 → “允许应用通过防火墙” → 勾选visa32.dll或更彻底新建入站规则开放 TCP 端口 111 和 39518验证在命令行执行telnet 192.168.1.100 111若连接成功则防火墙已通。4. VB.NET 迁移实战用 .NET Standard 2.0 封装 VISA告别 VB6 运行时依赖如果你正面临“VB6 工程无法在 Win10/11 新系统安装”的绝境或需要将示波器读数集成进 WPF 界面VB.NET 是唯一平滑路径。关键不是重写逻辑而是替换 VISA 调用层。我们用NationalInstruments.VisaNSNuGet 包Keysight 官方支持实现零修改迁移。4.1 创建 VB.NET 控制台项目并安装 VISA 包Visual Studio 新建 “Windows Forms App (.NET Framework)” 或 “Console App (.NET Core)”NuGet 包管理器执行Install-Package NationalInstruments.VisaNS -Version 19.5.0注意必须选19.5.0或更高支持 .NET Core 3.118.x版本仅支持 .NET Framework 4.6.1且与 Win11 USB 驱动兼容性差。4.2 复用 VB6 逻辑的 VB.NET 封装类以下代码完全复用 VB6 的ReadVppCH1逻辑仅替换底层 APIImports NationalInstruments.VisaNS Public Class AgilentDSOX3034A Private _session As FormattedIO488 Private _resourceName As String Public Sub New(resourceName As String) _resourceName resourceName InitializeSession() End Sub Private Sub InitializeSession() Try Dim rm As New ResourceManager() _session New FormattedIO488(rm.Open(_resourceName)) _session.Timeout 5000 毫秒同 VB6 验证连接 _session.WriteString(*IDN?) Dim idn As String _session.ReadString().Trim() Console.WriteLine($Connected to: {idn}) Catch ex As Exception Throw New Exception($VISA init failed: {ex.Message}) End Try End Sub Public Function ReadVppCH1() As Double Try _session.WriteString(MEASure:VPP? CHANnel1) Dim resp As String _session.ReadString().Trim() If resp.Contains(9.9E37) Then Return -1.0 Return CDbl(resp) Catch ex As TimeoutException Return -2.0 超时 Catch ex As VisaException Return -3.0 VISA 协议错误 End Try End Function Public Sub Dispose() If _session IsNot Nothing Then _session.IO.Close() _session Nothing End If End Sub End Class参数说明与优势NationalInstruments.VisaNS.FormattedIO488是 .NET 原生封装无需注册 COM 组件摆脱 VB6 运行时msvbvm60.dll依赖VisaException继承自Exception可精准捕获VI_ERROR_TMO超时、VI_ERROR_RSRC_NFOUND资源未找到等比 VB6 的Err.Number更结构化Dispose()方法确保Close()被调用符合 .NET 资源管理规范避免 VISA 句柄泄露。4.3 在 WinForms 中实时刷新测量值一个生产就绪的 Timer 循环教学演示常需每 500ms 刷新一次 Vpp 值。VB.NET 中用System.Windows.Forms.Timer最安全避免跨线程 UI 访问 WinForms 窗体代码 Private scope As AgilentDSOX3034A Private WithEvents refreshTimer As New Timer() Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try scope New AgilentDSOX3034A(USB0::0x0957::0x1798::MY53012345::INSTR) refreshTimer.Interval 500 ms refreshTimer.Start() Catch ex As Exception MessageBox.Show($初始化失败: {ex.Message}) End Try End Sub Private Sub refreshTimer_Tick(sender As Object, e As EventArgs) Handles refreshTimer.Tick Dim vpp As Double scope.ReadVppCH1() If vpp 0 Then lblVpp.Text ${vpp:F3} V 格式化为三位小数 lblVpp.ForeColor Color.Green Else lblVpp.Text Invalid lblVpp.ForeColor Color.Red End If End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing scope?.Dispose() refreshTimer?.Stop() End Sub为什么用System.Windows.Forms.Timer它在 UI 线程触发Tick事件可直接更新lblVpp.Text无需InvokeRequired判断refreshTimer.Interval 500是经实测的平衡点小于 300ms 易触发示波器内部测量队列阻塞DSO-X 3034A 测量引擎最大吞吐约 3Hz大于 1000ms 则失去实时感。5. 高级技巧用 SCPI 脚本批量导出波形 测量值构建自动化测试报告单纯读取几个测量值只是入门。真正的产线价值在于让 DSO-X 3034A 自动完成“捕获波形 → 计算参数 → 生成 CSV 报告”全链路。这无需额外硬件仅靠 SCPI 命令组合即可实现。5.1 一次性获取波形数据与全部测量值的最优命令序列DSO-X 3034A 的WAVeform命令可导出原始采样点最高 1M 点但直接读取WAV:DATA?会因数据量大导致超时。最优解是分三步走预设采集参数确保波形有效vi.WriteString ACQuire:COMPlete 100 采集 100% 完整波形 vi.WriteString WAVeform:FORMat BYTE 用 BYTE 格式最快非 WORD/ASCii vi.WriteString WAVeform:POINts 10000 设置读取点数10k 点足够分析 vi.WriteString WAVeform:SOURce CHANnel1 指定通道触发采集并等待完成vi.WriteString ACQuire:STATE ON 启动单次采集 vi.WriteString *OPC? 等待操作完成返回 1 表示就绪 vi.ReadString 读取 1同步读取波形 测量值关键技巧 步骤 A读波形二进制高效 vi.WriteString WAVeform:DATA? Dim waveHeader As String vi.ReadString() 读取头信息如 #21000#22字节长度10001000字节 解析 header 获取实际数据长度然后用 vi.ReadBinary 读取 raw bytes... 步骤 B立即读测量值利用同一触发结果 vi.WriteString MEASure:LIST? ALL Dim measResp As String vi.ReadString() 如 VPP,5.24E00,FREQ,1.002345E03,...玄学经验必须在*OPC?返回后立刻执行WAVeform:DATA?和MEASure:LIST?。若中间插入Delay或其他命令DSO-X 3034A 可能丢弃本次采集结果导致波形与测量值不匹配。5.2 生成带时间戳的 CSV 报告VB6 中的健壮文件写入以下函数将波形点Y 值与测量值合并写入 CSV包含完整元数据Private Sub ExportToCSV(waveData() As Byte, measList As String, fileName As String) Dim fnum As Integer fnum FreeFile Open fileName For Output As #fnum 写入元数据行 Print #fnum, Generated on, Format(Now, yyyy-mm-dd hh:nn:ss) Print #fnum, Scope Model,DSO-X 3034A Print #fnum, Serial Number,MY53012345 Print #fnum, Channel,CH1 Print #fnum, Waveform Points, UBound(waveData) 1 Print #fnum, Measurements, measList 写入波形数据表头 Print #fnum, SampleIndex,YValue(V) 写入波形数据BYTE 格式需转换DSO-X 3034A BYTE 范围 -128~127对应 -FullScale ~ FullScale Dim fullScale As Double fullScale GetVerticalScale() 自定义函数读取当前 Volts/div * 8屏幕高度 Dim yVal As Double Dim i As Long For i LBound(waveData) To UBound(waveData) BYTE 转电压waveData(i) 是 -128~127 的整数映射到 -fullScale ~ fullScale yVal (CDbl(waveData(i)) / 128.0) * fullScale Print #fnum, i , Format(yVal, 0.000000E00) Next i Close #fnum MsgBox Exported to fileName End Sub核心逻辑说明GetVerticalScale()需自行实现通过CHANnel1:SCALe?读取当前垂直档位如0.2表示 0.2V/div再乘以 8DSO-X 屏幕垂直格数得到满量程电压waveData(i)是 BYTE 数组直接CDbl()会丢失符号VB6Byte无符号必须先转为Integer再做范围映射Format(yVal, 0.000000E00)确保科学计数法输出避免 Excel 导入时精度丢失。5.3 产线落地建议用批处理 VBScript 封装一键测试脚本最终交付给产线的不应是 VB6 工程而是一个双击即运行的.bat文件。我们用 VBScript 调用编译好的 VB6 EXE并传入参数控制行为echo off REM auto_test.bat产线一键测试脚本 set SCOPE_RESUSB0::0x0957::0x1798::MY53012345::INSTR set OUTPUT_DIRC:\TestReports REM 生成带时间戳的文件名 for /f tokens2 delims %%a in (wmic OS Get localdatetime /value) do set dt%%a set YYYYMMDD%dt:~2,4%%dt:~6,2%%dt:~8,2% set HHMMSS%dt:~8,2%%dt:~10,2%%dt:~12,2% set FILENAME%OUTPUT_DIR%\DSOX3034A_TEST_%YYYYMMDD%_%HHMMSS%.csv REM 调用 VB6 EXE已编译为 AutoTest.exe传入资源字符串和输出路径 AutoTest.exe %SCOPE_RES% %FILENAME% pause为什么这样设计产线工人只需双击auto_test.bat无需懂 VB6 或 VISAwmic获取时间戳保证报告文件名唯一避免覆盖AutoTest.exe是 VB6 工程编译的独立 EXE不依赖目标机安装 VB6 运行时VB6 工程属性 → “生成” → 勾选 “打包部署” 可生成自解压包。我坚持在每个新项目开始前先用 VISAIC 手动发送*IDN?和MEASure:VPP? CHANnel1三次——不是为了验证而是养成“与仪器对话”的肌肉记忆。DSO-X 3034A 这台设备没有云连接、没有 API 文档网站它的全部能力都藏在那本印刷泛黄的《Programmer’s Reference》PDF 里。而 VB恰恰是打开这本手册最顺手的钥匙。这些年我删掉过所有花哨的 WebSocket 实时推送、废弃过半数 Python 异步框架但只要产线那台安捷伦还在嗡嗡作响VB 的vi.WriteString就永远是我第一行敲下的代码。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

LegoFlow:自动化模型训练流水线,从数据到测评全流程

LegoFlow:自动化模型训练流水线,从数据到测评全流程

1. 从“手动挡”到“自动挡”:LegoFlow 到底想解决什么问题做过模型训练的人都有一个共同的痛:代码写完了,数据还没洗;数据洗完了,训练脚本又跑不通;好不容易训练跑起来了,测评指标又看不懂。整…

2026/10/11 23:32:33 阅读更多 →
从Cursor回归命令行:AI时代开发者的工具路线与混合实践

从Cursor回归命令行:AI时代开发者的工具路线与混合实践

1. 现象与本质:为什么会有人从Cursor“杀回”命令行最近不止一次被问到同一个问题:“你天天用命令行写代码,是不是在开历史的倒车?”问的人大多刚尝到现代AI IDE的甜头,正沉浸在自动补全带来的爽感里,看到我…

2026/10/11 23:32:33 阅读更多 →
从模糊到清晰:以rea为例的命名歧义拆解与需求对齐方法论

从模糊到清晰:以rea为例的命名歧义拆解与需求对齐方法论

1. 从一个字母说起:为什么"rea"值得单独拿出来聊第一次看到"rea"这个标题,我承认自己也愣了一下。三个字母,没有上下文,没有关键词,没有摘要,项目正文还是空的。放在任何一个技术社区里…

2026/10/11 23:31:32 阅读更多 →

最新新闻

Python深度学习驾驶员状态检测识别:从模型到工程落地

Python深度学习驾驶员状态检测识别:从模型到工程落地

简介:这是一份Python基于深度学习的驾驶员状态检测识别项目源码与配套文档,适合计算机专业毕业生、开发者及需要项目实战的学习者。项目完整覆盖从数据预览、特征提取、模型微调到评估的流程,基于Keras实现多种经典卷积网络的迁移学习&#x…

2026/10/12 0:25:12 阅读更多 →
新零售智能销售数据可视化教案:从数据到经营决策

新零售智能销售数据可视化教案:从数据到经营决策

简介:一份面向大数据技术类专业的《Python数据可视化实战》第七章教案,以新零售智能销售数据为实战案例,完整覆盖工程背景、数据读取、清洗与规约、基于pyecharts绘制销售分析图/库存分析图/用户分析图,以及撰写工程分析报告的全流…

2026/10/12 0:25:11 阅读更多 →
省市区行政区划数据包解析:表结构、SQL导入与多端复用实践

省市区行政区划数据包解析:表结构、SQL导入与多端复用实践

简介:省份城市地区完整数据库是一份面向数据分析、GIS开发、市场研究、物流规划等领域从业者的实用数据资源,涵盖全国34个省级行政区、下辖城市与区县的行政代码、经纬度、人口、面积、经济指标、交通及文教等多维信息,可有效支撑区域分析、地…

2026/10/12 0:25:11 阅读更多 →
Python知识图谱问答系统课程设计:Neo4j图数据库构建与Cypher查询实战

Python知识图谱问答系统课程设计:Neo4j图数据库构建与Cypher查询实战

简介:这份资源是面向高校学生与Python学习者的知识图谱问答系统课程设计完整源码,适合作为毕业设计、课程大作业或知识图谱入门实战的参考方案,项目评分在95分以上。压缩包共486个文件,约32.56MB,涵盖py、java、class、…

2026/10/12 0:25:11 阅读更多 →
DBeaver CE 24.2.2:全能数据库工作台连接 MySQL 实战指南

DBeaver CE 24.2.2:全能数据库工作台连接 MySQL 实战指南

简介:DBeaver Community Edition 24.2.2 Windows 版是一款开源数据库管理工具与 SQL 客户端,面向需要在 Windows 环境下快速连接、查询和维护数据库的开发、运维及初学者,可解决数据查询、结构浏览与基础管理等工作。该版本以“下载即用”为特…

2026/10/12 0:25:11 阅读更多 →
三维LBM渗流模拟实战:从D3Q19模型到渗透率计算

三维LBM渗流模拟实战:从D3Q19模型到渗透率计算

简介:这是一份基于格子玻尔兹曼方法(LBM)的三维渗流模拟MATLAB源码,主要面向流体力学、多孔介质渗流方向的工程师与科研人员,适用于地下水流动、石油开采、土壤污染扩散等典型渗流场景。该方法通过离散玻尔兹曼方程模拟…

2026/10/12 0:24:11 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →