imediacorp/Hantek-10008B
GitHub: imediacorp/Hantek-10008B
这是一个通过逆向工程开发的 Python 驱动库,旨在解决 Hantek 1008B 示波器在 macOS 和 Linux 平台上缺乏官方驱动支持的问题。
Stars: 0 | Forks: 0
# 适用于 macOS/Linux 的 Hantek 1008B Python 驱动
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://github.com/imediacorp/Hantek-10008B)
[](https://github.com/imediacorp/Hantek-10008B/releases)
一个用于在 macOS 和 Linux 上控制 Hantek 1008B 8 通道 USB 示波器的 Python 库。该驱动是通过逆向工程 USB 协议捕获数据开发的,提供了对设备的完全控制。
## 功能
- ✅ **跨平台**:适用于 macOS (ARM64/Intel) 和 Linux
- ✅ **USB 网桥支持**:自动处理通过 USB 网桥连接的设备
- ✅ **多通道**:同时采集所有 8 个通道的数据
- ✅ **完整协议**:完整实现 USB 通信协议
- ✅ **易于使用**:简单的 Python API 用于设备控制
- ✅ **无依赖**:仅需要 pyusb 和 libusb
## 为什么存在此项目
Hantek 1008B 是一款流行的 8 通道示波器,但 **官方 Mac 支持有限或根本不存在**。在联系制造商未获回复后,该驱动通过逆向工程从 Windows 软件捕获数据中提取 USB 协议而创建,使该设备能够在 macOS 和 Linux 平台上使用。
**这填补了社区的一个真正空白** - 拥有 Hantek 1008B 设备的 Mac 用户现在可以使用他们的硬件了!
## 安装
### 前置条件
**macOS (Apple Silicon):**
```
# 通过 Homebrew 安装 libusb
/opt/homebrew/bin/brew install libusb
# 或者对于 Intel Mac
brew install libusb
```
**Linux:**
```
sudo apt-get install libusb-1.0-0
# 或
sudo yum install libusb
```
### Python 包
```
pip install pyusb
```
然后将 `hantek1008b` 目录复制到您的项目中,或者安装它:
```
cd hantek1008b_standalone
pip install -e .
```
## 快速开始
```
from hantek1008b import Hantek1008B
# 连接到设备
scope = Hantek1008B()
if not scope.connect():
print("Device not found")
exit(1)
# 初始化
scope.initialize()
# 从通道 1-2 读取数据
data = scope.read_channels([1, 2], samples=1024)
# 处理数据
for channel, voltages in data.items():
print(f"Channel {channel}: {len(voltages)} samples")
print(f" Min: {min(voltages):.3f}V, Max: {max(voltages):.3f}V")
```
## API 参考
### `Hantek1008B`
用于设备控制的主类。
#### `connect(backend=None) -> bool`
连接到 Hantek 1008B 设备。如果成功则返回 `True`。
**参数:**
- `backend`:可选的 USB 后端(用于自定义 libusb 路径)
**示例:**
```
scope = Hantek1008B()
if scope.connect():
print("Connected!")
```
#### `initialize() -> bool`
初始化设备。必须在连接后调用。
#### `read_channels(channels, samples=4096, voltage_range=5.0, timeout=3000) -> dict`
从指定通道读取数据。
**参数:**
- `channels`:通道号列表 (1-8)
- `samples`:每个通道的采样点数(最大 4096)
- `voltage_range`:满量程电压范围,单位为伏特(默认:5.0)
- `timeout`:USB 超时时间,单位为毫秒
**返回:**
将通道号映射到电压值列表的字典。
**示例:**
```
data = scope.read_channels([1, 2, 3, 4], samples=2048, voltage_range=10.0)
```
#### `send_command(command) -> bool`
向设备发送原始命令。
#### `read_response(size=64) -> bytes`
从设备读取响应。
## 设备规格
- **通道**:8 个同步通道
- **ADC 分辨率**:12 位 (0-4095)
- **存储深度**:每通道 4K 采样点
- **采样率**:2.4 MSa/s
- **电压范围**:10 mV/div 至 5 V/div
- **最大输入**:400V (DC + AC 峰值)
## 协议信息
USB 协议是通过逆向工程捕获的命令序列得出的:
- **VID**:0x0783
- **PID**:0x5725
- **端点**:0x81 (IN), 0x02 (OUT)
- **数据包大小**:64 字节
- **识别出 10 种独特的命令类型**
详细的协议文档请参阅 `PROTOCOL.md`。
## 故障排除
### 未找到设备
1. 确保设备已连接并通电
2. 检查 USB 网桥连接(自动支持)
3. 在 Linux 上,您可能需要 `sudo` 或 udev 规则:
```
# 创建 udev 规则
sudo nano /etc/udev/rules.d/99-hantek1008b.rules
```
添加:
```
SUBSYSTEM=="usb", ATTR{idVendor}=="0783", ATTR{idProduct}=="5725", MODE="0666"
```
然后:
```
sudo udevadm control --reload-rules
```
### USB 后端问题 (macOS)
如果您收到 "No backend available" 错误:
1. 验证 libusb 是否已安装:
file /opt/homebrew/opt/libusb/lib/libusb-1.0.dylib
2. 显式指定后端:
import usb.backend.libusb1
backend = usb.backend.libusb1.get_backend(
find_library=lambda x: "/opt/homebrew/opt/libusb/lib/libusb-1.0.dylib"
)
scope = Hantek1008B()
scope.connect(backend=backend)
## 示例
### 基本数据采集
```
from hantek1008b import Hantek1008B
import matplotlib.pyplot as plt
scope = Hantek1008B()
if not scope.connect():
print("Device not found")
exit(1)
scope.initialize()
# 从通道 1 读取
data = scope.read_channels([1], samples=1024)
# 绘图
plt.plot(data[1])
plt.xlabel("Sample")
plt.ylabel("Voltage (V)")
plt.title("Channel 1")
plt.show()
```
### 多通道采集
```
scope = Hantek1008B()
scope.connect()
scope.initialize()
# 读取所有 8 个通道
data = scope.read_channels([1, 2, 3, 4, 5, 6, 7, 8], samples=2048)
# 处理每个通道
for ch in range(1, 9):
voltages = data[ch]
print(f"Channel {ch}: {len(voltages)} samples")
if voltages:
print(f" Range: {min(voltages):.3f}V to {max(voltages):.3f}V")
```
## 许可证
该驱动按“原样”提供,用于教育和诊断目的。USB 协议是从公开信息和 USB 捕获数据中逆向工程得出的。
**注意**:这不是官方的 Hantek 驱动。使用风险自负。
## 免责声明
本软件按“原样”提供,不提供任何担保。作者与 Hantek 没有任何关联。使用风险自负。
## 支持
如有问题、疑问或贡献:
- 在 [GitHub 仓库](https://github.com/imediacorp/Hantek-10008B/issues) 上提交 issue
- 查阅协议文档了解详细信息
- 查看 `examples/` 目录中的示例
## 最新版本
**v1.0.0** - [查看版本](https://github.com/imediacorp/Hantek-10008B/releases/tag/v1.0.0)
首个公开发布版本,提供对 macOS 和 Linux 的完整跨平台支持。
**由社区为社区打造** 🎉
**仓库**:https://github.com/imediacorp/Hantek-10008B
标签:Apple Silicon, Hantek 1008B, libusb, pyusb, USB通信, 云资产清单, 协议分析, 命令控制, 开源硬件, 数据采集, 权限提升, 电子测量, 硬件驱动, 示波器, 逆向工具, 逆向工程