- 最後登錄
- 2023-4-16
- 在線時間
- 0 小時
- 註冊時間
- 2008-12-30
- 閱讀權限
- 20
- 精華
- 0
- UID
- 5557993
- 帖子
- 69
- 積分
- 177 點
- 潛水值
- 9308 米
| 本帖最後由 asdfrosy 於 2013-6-19 12:23 AM 編輯
- SetPortValType SetPortVal = (SetPortValType)Marshal.GetDelegateForFunctionPointer
- (GetProcAddress(hMod, "SetPortVal"), typeof(SetPortValType));
- GetPortValType GetPortVal = (GetPortValType)Marshal.GetDelegateForFunctionPointer
- (GetProcAddress(hMod, "GetPortVal"), typeof(GetPortValType));
- // 頻率
- UInt32 freq = 1193180 / 1000;
- UInt32 data = 0;
- GetPortVal(0x61, &data, 1);
- SetPortVal(0x61, data | 3, 1);
- SetPortVal(0x43, 0xb6, 1);
- SetPortVal(0x42, freq & 0xff, 1);
- SetPortVal(0x42, (freq >> 8) & 0xff, 1);
- // 持續時間
- System.Threading.Thread.Sleep(1000);
- data = 0;
- GetPortVal(0x61, &data, 1);
- SetPortVal(0x61, data & 0xfc, 1);
複製代碼 WinIO的初始化請參考WinIO網站提供的範例
範例是使用C#寫的
範例有兩個可以選擇DumpPort這個範例為基礎來修改
程式碼我僅僅是根據以下網站提供的資料轉換成C#而已
我也不清楚詳細的過程
不過我已經測試過確實可以讓主機板揚聲器發出聲音了
話說...我其實一開始沒有預期到真的能成功
註1:
專案的目標平台請一定要使用Any
範例的程式碼使用IntPtr的大小來判斷平台
因為WinIO會使用到驅動程式
必須選擇正確的檔案來載入
註2:
64位元的驅動程式檔案有附上數位簽章了
不過不知道是有什麼問題
我即使安裝了那個簽章也無法順利載入驅動程式
如果你也是這樣的話
可能必須使用Test Mode開機
參考
... |
|