硬體介面確認
驅動器通常提供 脈衝/方向 差分輸入 (PUL+/PUL-, DIR+/DIR-),需 5V/24V 電平轉換。
三種 PC 控制方案比較
| 方案 | 介面 | 即時性 | 開發難度 | 成本 |
| 並口 (LPT) | DB25 直接腳位 | 極佳 (µs 級) | 低 (inpout32.dll) | 免費 (舊主機板) |
| USB 轉並口晶片 (CH341/FT245) | USB + GPIO | 良好 (ms 級) | 中 (libusb/FTD2XX) | ~50 元 |
| 運動控制卡 (PCIe/USB/EtherCAT) | 專用卡 | 硬體級 (ns~µs) | 高 (廠商 SDK) | 千元起 |
方案一:並口 + inpout32.dll (最簡單)
// 需管理員權限載入驅動
[DllImport("inpout32.dll")] static extern void Out32(short port, short val);
const short DATA_PORT = 0x378; // LPT1 資料埠
void Pulse(int hz, int durationMs) {
int halfPeriod = 500000 / hz; // µs
int cycles = hz * durationMs / 1000;
for (int i = 0; i < cycles; i++) {
Out32(DATA_PORT, 0x01); // PUL+ 高
SleepMicro(halfPeriod);
Out32(DATA_PORT, 0x00); // PUL+ 低
SleepMicro(halfPeriod);
}
}
方案二:USB-GPIO (FT245/CH341) + libftd2xx
使用廠商 DLL 設定 GPIO 輸出高低電平,邏輯同並口但需初始化裝置。
關鍵提醒
- Windows 非即時作業系統,**純軟體延遲抖動大**,高精度需求請用運動控制卡。
- 並口需關閉 BIOS 的 ECP/EPP 模式,設為 SPP (Standard Parallel Port)。
- 驅動器使能 (ENA) 訊號別忘記拉高。
- 上一篇文章: libcurl 最新版無官方 MSVC 預編譯包的原因與解決方案:自行編譯或改用 vcpkg/Conan
- 下一篇文章: Eclipse 找不到 Server 視圖?一鍵啟用 Servers 視圖並配置 Tomcat 完整步驟
Copyright ©
程式碼之家 All Rights Reserved