Skip to content

JDDKCN/KCNScopeClock

Repository files navigation

KCNScopeClock

KCNScopeClock 是一个基于 .NET 9 & C# 的控制台应用程序。本程序通过声卡和音频设备生成音频信号,以在模拟&数字示波器的 XY 模式中绘制出高质量且美观的矢量时钟图形。

功能特性

  • 多驱动支持

    • ASIO (推荐):提供低延迟、直接硬件访问,支持高采样率。
    • WASAPI Exclusive:独占模式,减少系统混音干扰。
    • WaveOut:传统的兼容模式。
  • 高精度矢量渲染

    • 采用线性插值算法将矢量点光栅化为音频采样,确保在不同采样率下的图形连贯性。
    • 使用 ArrayPoolSpan<T> 进行内存管理,优化实时渲染性能。
  • 高度可配置

    • 支持 16-bit, 24-bit 以及 32-bit Float 位深。
    • 支持使用预设及自定义的采样率 (KHz)。
    • 可调节刷新率 (FPS) 和绘图密度。
    • 持久化的配置文件。
  • 多种时钟风格

    • Standard (标准)
    • Dots (点阵)
    • Roman (罗马数字)
    • Military (24小时制)
    • Minimalist (极简)

实机图片

image01
图片示例中,声卡输出通过同轴转接头和RCA线缆直连示波器

软件下载

下载二进制分发文件 (开箱即用)

请到最新 Releases 处下载。

通过源代码自行构建

请下载 项目源码 自行编译,需要 Visual Studio 与 .NET 9 开发环境。

硬件要求

要获得最佳显示效果,需要以下硬件:

  1. 模拟示波器:双通道,支持 X-Y 显示模式。

    • 若使用数字示波器,请开启 FastAcq 模式或开启 Display Persistence - Variable 以达到类似模拟示波器的余辉效果。
  2. 音频接口

    • 建议使用支持 DC Coupled (直流耦合) 输出的声卡 (具有ASIO驱动的专业级声卡)。
    • 如果使用普通 AC Coupled (交流耦合) 声卡或电脑内置音频设备,图形可能会发生漂移或变形。
  3. 连接线 (默认)

    • 左声道 (L) -> 示波器 X 通道 (CH1)
    • 右声道 (R) -> 示波器 Y 通道 (CH2)
    • LR 声道可随意连接。若发现示波器图像翻转,在 时钟设置 中切换 通道翻转 设置项即可。

快速开始

先决条件

  1. 您需要将您的示波器调整为X-Y显示模式,且CH1、CH2通道打开。最好将带宽限制在20MHz,以减少高频信号产生的噪声。
  2. 对于希望获得高质量信号的玩家,建议购买两个同轴接口转RCA接口的转接头,然后将声卡输出的RCA线缆/3.5mm输出转RCA线缆直插到两个示波器通道上。
  3. 您也可以直接使用示波器探头。找一条废弃的RCA线缆/3.5mm输出线缆,剥开绝缘皮,将探头和GND夹到对应声道上。地线回路应尽可能短,直接使用接地弹簧最佳。

交互模式

在不带任何参数的情况下直接运行程序,将进入交互式菜单。菜单中可以进行音频设置、时钟样式切换以及启动时钟。

命令行模式

程序支持通过命令行参数快速启动,适用于脚本调用或自动运行:

KCNScopeClock.exe <DriverType> [DeviceName] [SampleRate] [BitDepth]

参数说明:

  • DriverType: ASIO, WASAPI, WAVEOUT
  • DeviceName: (仅 ASIO 需要) 驱动名称,如 "Focusrite USB ASIO"
  • SampleRate: 采样率整数,如 192000
  • BitDepth: 16, 24, 32

示例:

# 使用 ASIO 驱动,192kHz 采样率,32位浮点
KCNScopeClock.exe ASIO "Universal Audio Thunderbolt" 192000 32

配置说明

程序首次运行后会生成 config.json 文件,可手动修改:

{
  "Audio": {
    "DriverType": "ASIO",
    "DeviceName": "Focusrite USB ASIO",
    "SampleRate": "Rate192000",
    "SampleRateCustom": 192000,
    "BitDepth": "BitFloat32"
  },
  "Clock": {
    "RefreshRate": 60.0,      // 刷新率
    "DrawDensity": 2.0,       // 绘图密度 (点/单位距离)
    "ChannelFlip": false,     // 翻转 X/Y 通道
    "Style": "Military"       // 默认样式
  }
}

致谢

矢量数据表 (Data Tables) 移植自 maurohh/ESP32_OscilloscopeClock

许可证与免责声明

本项目基于 AGPL-3.0 许可证开源。本项目仅供研究交流用,禁止用于商业及非法用途。使用本项目造成的事故与损失,与作者无关。本项目完全免费,如果您是花钱买的,说明您被骗了。请尽快退款,以减少您的损失。

其他平台

前往我的 B站主页 : 剧毒的KCN

关注我的 Twitter账号 : @2233kcn03

加入我的 QQ交流群 : 1140538395