首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 並行埠讀寫:WQL 查詢基址解決方案(一)

     編輯:關於C語言

專案需同時操作串口與並行埠 POS 列印機。.NET 內建 SerialPort 解決串口,但並行埠無對應類別。調研兩條路徑:

  • Win32 API:寫入方便,但無法讀取資料/狀態。
  • inpout32.dll:可讀寫,但基址(0x378/0x379/0x37A)非固定,客戶無法自行查找。

靈感來自 WQL(WMI Query Language)可查詢硬體資源。實驗證實:

var searcher = new ManagementObjectSearcher(
    "ASSOCIATORS OF {Win32_ParallelPort.DeviceID='LPT1'}");
foreach (var obj in searcher.Get()) {
    if (obj.ClassPath.ClassName == "Win32_PortResource") {
        uint baseAddr = Convert.ToUInt32(obj.Properties["StartingAddress"].Value);
        // 取得基址,後續可用 inpout32 讀寫
    }
}

此法完美解決基址自動偵測問題,配合 inpout32 實現完整讀寫與狀態輪詢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved