# PynectDirect SDK

**版本：v3.0.1**

## 一、简介

PynectDirect 是**谱研互联**（深圳谱研互联科技有限公司）光谱仪的 Windows 动态库开发套件（SDK），仅供本公司光谱仪使用，**不支持其他厂家的光谱仪**。提供 58 个公开函数，覆盖设备发现与打开（支持同时打开多台）、参数设置、波长与光谱数据采集、设备状态读取、Flash 与固化配置等功能。

- 纯 C 实现，导出标准 C ABI，支持 **C / C++ / C# / Python** 等任何可调用 DLL 的语言
- 64 位 Windows 专用（需 64 位进程）
- 同时支持谱研互联 **UV/VIS** 与 **NIR** 两类光谱仪，打开时自动识别

## 二、交付包结构

```text
PynectDirect_SDK/
|-- README.md                    # 本文件
|-- bin/                         # 运行时动态库（两个 DLL 必须同目录）
|   |-- PynectDirect.dll         # SDK 本体
|   `-- ftd2xx.dll               # FTDI USB 驱动（必需）
|-- include/
|   `-- pynect_direct.h          # 公开头文件（所有语言的签名权威来源）
|-- lib/
|   |-- libPynectDirect.dll.a    # GCC 动态链接导入库
|   `-- libPynectDirect.a        # GCC 静态库
|-- examples/
|   |-- c/                       # C 例程（含预编译 exe，双击即可运行）
|   |-- cpp/                     # C++ 例程（含预编译 exe）
|   |-- csharp/                  # C# 例程（含预编译 exe）
|   `-- python/                  # Python 例程（脚本 + DLL）
`-- docs/
    |-- PynectDirect用户使用手册v3.0.1.md  # 使用手册（推荐先看）
    `-- PynectDirect_API_Guide.md         # Python 用户手册（详细）
```

## 三、快速开始

### 1. 连接设备

将光谱仪通过 USB 连接到电脑，等待 Windows 完成驱动安装。

### 2. 直接运行示例（无需任何开发环境）

```powershell
cd examples\c
spectrum_demo.exe          # C 版（C++、C# 同理）
```

程序将自动扫描设备并显示波长与强度数据，结束后按任意键退出。

### 3. Python 快速测试

```powershell
cd examples\python
python minimal_test.py --read-only     # 只读检查，不改设备参数
python spectrum_demo.py                # 单次采集示例
python dual_spectrometer_test.py       # 双光谱仪同时采集示例
```

### 4. 自行编译（可选）

```powershell
# C（MinGW-w64）
cd examples\c
gcc spectrum_demo.c -Iinclude -Llib -lPynectDirect -o spectrum_demo.exe

# C++（MinGW-w64）
cd examples\cpp
g++ spectrum_demo.cpp -Iinclude -Llib -lPynectDirect -o spectrum_demo.exe

# C#（.NET Framework 4.x，64 位）
cd examples\csharp
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /platform:x64 spectrum_demo.cs
```

## 四、重要说明

- `PynectDirect.dll` 与 `ftd2xx.dll` 必须放在**同一目录**。
- SDK 仅支持 **64 位**进程（64 位 Python / x64 编译目标）。
- 同一台设备同一时刻只能被一个程序打开；同一程序内可同时打开**最多 4 台**设备，用 `pynect_direct_select_device()` 切换。
- 临时参数（积分时间、平均次数等）掉电不保留；`stored_*` 固化参数为非易失，写入需谨慎。
- 使用 Python 时必须为每个函数设置 `argtypes`/`restype`（可参考 `examples/python/minimal_test.py`）。

## 五、文档索引

| 文档 | 说明 |
| --- | --- |
| `docs/PynectDirect用户使用手册v3.0.1.md` | 使用手册：快速开始、4 种语言例程、全部 58 个 API 参考、FAQ、故障排查（推荐先读） |
| `docs/PynectDirect_API_Guide.md` | 完整 API 指南（Python 视角，逐个函数详解） |
| `examples/python/python_ctypes_example_guide.md` | 交互式指定波段示例的图文指南 |

## 六、版本记录

| 版本 | 日期 | 说明 |
| --- | --- | --- |
| v3.0.1 | 2026-08 | 支持同时打开多台设备（新增 `select_device` / `get_open_device_count` / `close_all_devices`）；波长范围改为读取完整波长数组首尾；新增 C/C++/C# 预编译示例与用户手册 |
| v2.0.2 | - | 早期版本 |

## 七、技术支持

**深圳谱研互联科技有限公司**

| 项目 | 信息 |
| --- | --- |
| 联系人 | 沈玉杰 |
| 邮箱 | jason.shen@pynect.com |
| 手机 | 18002510857 |
| 微信 | 同手机号（18002510857） |

如有使用问题、定制需求或商务合作，欢迎通过以上方式联系。
