?? ch341pt.pas
字號:
unit CH341PTDLL;
interface
// 2005.07.28
//****************************************
//** Copyright (C) W.ch 1999-2005 **
//** Web: http://www.winchiphead.com **
//****************************************
//** DLL for USB interface chip CH341 **
//** C, VC5.0 **
//****************************************
//
// USB總線接口芯片CH341端口應(yīng)用層接口庫 V1.0
// 南京沁恒電子有限公司 作者: W.ch 2005.07
// CH341-Port-DLL V1.0
// 運行環(huán)境: Windows 98/ME, Windows 2000/XP
// support USB chip: CH341, CH341A
// USB => Serial, Parallel
//
const MAX_DEVICE_PATH_SIZE = 128 ; // 設(shè)備名稱的最大字符數(shù)
MAX_DEVICE_ID_SIZE= 64 ; // 設(shè)備ID的最大字符數(shù)
Function CH341PtGetVersion( ):cardinal;stdcall; external 'CH341PT.DLL'; // 獲得DLL版本號,返回版本號
Function CH341PtHandleIsCH341( // 檢查已經(jīng)打開的端口是否為CH341端口
iPortHandle:cardinal ):boolean;stdcall; external 'CH341PT.DLL'; // 指定已經(jīng)打開的端口句柄
Function CH341PtNameIsCH341( // 檢查指定名稱的端口是否為CH341端口
iPortName:PCHAR ):boolean;stdcall; external 'CH341PT.DLL'; // 指定端口名稱,例如"COM3","COM15"等,該端口必須未被占用(指未被其它程序打開)
type mPCH341PT_NOTIFY_ROUTINE=Procedure ( // 端口設(shè)備事件通知回調(diào)程序
iDevIndexAndEvent:integer );stdcall; // 端口設(shè)備序號和事件及當(dāng)前狀態(tài)(參考下行說明)
// iDevIndexAndEvent: 正數(shù)說明是設(shè)備插入事件/已經(jīng)插入, 負(fù)數(shù)說明是設(shè)備拔出事件/已經(jīng)拔出, 其絕對值是設(shè)備序號(1到255)
Function CH341PtSetDevNotify( // 設(shè)定端口設(shè)備事件通知程序
iDeviceID:PCHAR; // 可選參數(shù),指向以\0終止的字符串,指定被監(jiān)控的設(shè)備的ID或者不含序號的主名稱,對于串口該參數(shù)必須為NULL或者"COM"
iNotifyRoutine:mPCH341PT_NOTIFY_ROUTINE):boolean;stdcall; external 'CH341PT.DLL'; // 指定端口設(shè)備事件回調(diào)程序,為NULL則取消事件通知,否則在檢測到事件時調(diào)用該程序
{/* 即插即用設(shè)備的應(yīng)用程序編程參考
1. 主程序啟動,默認(rèn)是禁止數(shù)據(jù)傳輸?shù)模挥性诖_定有CH341端口可用并且打開端口后才進(jìn)行數(shù)據(jù)傳輸
2. 調(diào)用CH341PtSetDevNotify設(shè)置插拔監(jiān)視,如果將來發(fā)生CH341端口的插拔事件DLL將會自動調(diào)用iNotifyRoutine所指定的子程序或者函數(shù)
3. 從端口1到端口255(正常到20即可)逐個調(diào)用CH341PtNameIsCH341確定是否為CH341端口,如果返回是則記憶其端口號并打開后開始傳輸,如果返回否則休息
4. 如果iNotifyRoutine收到事件通知,那么可以在保存事件參數(shù)后通知主程序處理,也可以在該子程序中處理,
分析事件參數(shù),如果是正數(shù)則說明有一個端口插入,需要打開時應(yīng)該首先用CH341PtNameIsCH341判斷是否為CH341端口,是則記憶其端口號并打開后開始傳輸,
如果是負(fù)數(shù)則說明有一個端口拔出,判斷其端口號(用0減去該負(fù)數(shù)得端口號)是否與記憶的已打開的端口號相同,是則應(yīng)該及時關(guān)閉
5. 當(dāng)前已經(jīng)打開的端口號應(yīng)該保存為全局變量, 如果端口未打開或者被關(guān)閉,那么應(yīng)用程序應(yīng)該停止數(shù)據(jù)傳輸
6. 如果事先未用CH341PtNameIsCH341確定是否為CH341端口,那么在端口已經(jīng)打開后,也可以調(diào)用CH341PtHandleIsCH341判斷是否為CH341端口
*/}
implementation
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -