亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ch375dll.pas

?? CH372的單片機編程,VC編程,VB編程,dephi編程
?? PAS
字號:
unit CH375DLL;

interface
// 2003.09.08, 2003.12.28, 2004.10.15, 2004.12.05, 2004.12.10, 2005.01.20, 2005.02.23, 2005.07.15
//****************************************
//**  Copyright  (C)  W.ch  1999-2005   **
//**  Web:  http://www.winchiphead.com  **
//****************************************
//**  DLL for USB interface chip CH375  **
//**  C, VC5.0                          **
//****************************************
//
// USB總線接口芯片CH375的應用層接口庫  V2.1
// 南京沁恒電子有限公司  作者: W.ch 2005.07
// CH375-DLL  V2.1 , Support: Ctrl/Bulk/Int
// 運行環境: Windows 98/ME, Windows 2000/XP
// support USB chip: CH372/CH375
//
uses main,SysUtils,unit1;
Const
   mCH375_PACKET_LENGTH = 64;         // CH375支持的數據包的長度
   mCH375_MAX_NUMBER = 16;            // 最多同時連接的CH375數
   mMAX_BUFFER_LENGTH = $1000;        // 數據緩沖區最大長度
   mDEFAULT_BUFFER_LEN = $400;        // 數據緩沖區默認長度1024

// CH375端點地址
   mCH375_ENDP_INTER_UP = $81;        // CH375的中斷數據上傳端點的地址
   mCH375_ENDP_INTER_DOWN = $1;       // CH375的中斷數據下傳端點的地址
   mCH375_ENDP_DATA_UP = $82;         // CH375的數據塊上傳端點的地址
   mCH375_ENDP_DATA_DOWN = $2;        //CH375的數據塊下傳端點的地址

// 設備層接口提供的管道操作命令
   mPipeDeviceCtrl = $4;              // CH375的綜合控制管道;
   mPipeInterUp = $5;                 //CH375的中斷數據上傳管道;
   mPipeDataUp = $6;                  //CH375的數據塊上傳管道
   mPipeDataDown = $7;                //CH375的數據塊下傳管道
   mPipeAuxDown =$8;	              // CH375的輔助數據下傳管道

// 應用層接口的功能代碼
   mFuncNoOperation = $H0;            // 無操作
   mFuncGetVersion = $1;              // 獲取驅動程序版本號
   mFuncGetConfig = $2;               // 獲取USB設備配置描述符
   mFuncSetExclusive = $b;	      // 設置獨占使用
   mFuncResetDevice = $C;             // 復位USB設備
   mFuncResetPipe = $D;               // 復位USB管道
   mFuncAbortPipe = $E;               // 取消USB管道的數據請求
   mFuncSetTimeout = $0f;	      // 設置USB通訊超時
   mFuncBufferMode = $10;			// 設定緩沖上傳模式及查詢緩沖區中的數據長度

// USB設備標準請求代碼
   mUSB_CLR_FEATURE = $1;
   mUSB_SET_FEATURE = $3;
   mUSB_GET_STATUS = $0 ;
   mUSB_SET_ADDRESS = $5;
   mUSB_GET_DESCR = $6;
   mUSB_SET_DESCR = $7;
   mUSB_GET_CONFIG = $8;
   mUSB_SET_CONFIG = $9;
   mUSB_GET_INTERF = $A;
   mUSB_SET_INTERF = $B;
   mUSB_SYNC_FRAME = $C;

// CH375控制傳輸的廠商專用請求類型
   mCH375_VENDOR_READ = $C0;          //通過控制傳輸實現的CH375供應商專用讀操作
   mCH375_VENDOR_WRITE = $40;         //通過控制傳輸實現的CH375供應商專用寫操作

// CH375控制傳輸的供應商專用請求代碼
   mCH375_SET_CONTROL = $51;          // 輸出控制信號
   mCH375_GET_STATUS = $52;           // 輸入狀態信號

// 寄存器的位定義
   mBitInputRxd = $2;                 // 只讀,RXD#引腳輸入狀態,1:高電平,0:低電平
   mBitInputReq = $4;                 // 只讀,REQ#引腳輸入狀態,1:高電平,0:低電平

// 直接輸入的狀態信號的位定義
   mStateRXD = $200;                  // RXD#引腳輸入狀態,1:高電平,0:低電平
   mStateREQ = $400;                  // REQ#引腳輸入狀態,1:高電平,0:低電平

type
  PVOID =Pointer;
  plong=pcardinal;
  TiIntRoutine=procedure(mbuffer:pbytearray);stdcall;

Type
        mUspValue=record
        mUspValueLow : Byte;
        mUspValueHigh : Byte;
End;
Type
        mUspIndex=record
        mUspIndexLow : Byte;
        mUspIndexHigh  : Byte;
End ;
Type
    USB_SETUP_PKT=record
    mUspReqType : Byte;
    mUspRequest : Byte;
    mUspValue : mUspValue;
    mUspIndex : mUspIndex;
    mLength : Integer;
End ;
Type
   WIN32_COMMAND=record               //定義WIN32命令接口結構
   mFunction : cardinal;              //輸入時指定功能代碼或者管道號
                                      //輸出時返回操作狀態
   mLength : cardinal;                //存取長度,返回后續數據的長度
   mBuffer:array[0..(mCH375_PACKET_LENGTH-1)] of Byte;         //數據緩沖區,長度為0至255B                                           '數據緩沖區,長度為0至255B
End ;

var
   mUSB_SETUP_PKT :USB_SETUP_PKT;
   mWIN32_COMMAND : WIN32_COMMAND;
   mm:procedure(mbuffer:pbytearray);stdcall;

   Function CH375OpenDevice(iIndex :cardinal):cardinal ;Stdcall; external 'CH375DLL.DLL' ;
//打開CH375設備,返回句柄,出錯則無效. 指定CH375設備序號,0對應第一個設備

   procedure CH375CloseDevice(iIndex :cardinal) ;Stdcall; external 'CH375DLL.DLL';
//關閉CH375設備,指定CH375設備序號

   Function CH375GetVersion():cardinal  ;Stdcall; external 'CH375DLL.DLL';
//獲得DLL版本號,返回版本號

   Function CH375DriverCommand (           // 直接傳遞命令給驅動程序,出錯則返回0,否則返回數據長度
                 iIndex:cardinal;          // 指定CH375設備序號,V1.6以上DLL也可以是設備打開后的句柄
                 ioCommand:WIN32_COMMAND   // 命令結構的指針
                 ):cardinal;Stdcall;external 'CH375DLL.DLL';

// 該程序在調用后返回數據長度,并且仍然返回命令結構,如果是讀操作,則數據返回在命令結構中,
// 返回的數據長度在操作失敗時為0,操作成功時為整個命令結構的長度,例如讀一個字節,則返回mWIN32_COMMAND_HEAD+1,
// 命令結構在調用前,分別提供:管道號或者命令功能代碼,存取數據的長度(可選),數據(可選)
// 命令結構在調用后,分別返回:操作狀態代碼,后續數據的長度(可選),
// 操作狀態代碼是由WINDOWS定義的代碼,可以參考NTSTATUS.H,
// 后續數據的長度是指讀操作返回的數據長度,數據存放在隨后的緩沖區中,對于寫操作一般為0

   Function CH375GetDrvVersion:cardinal;Stdcall; external'CH375DLL.DLL';
   //獲得驅動程序版本號,返回版本號,出錯則返回0

   Function CH375ResetDevice(iIndex:cardinal) : Boolean ;Stdcall; external 'CH375DLL.DLL';
   //復位USB設備, iIndex 指定CH375設備序號

   Function CH375GetDeviceDescr (iIndex :cardinal;oBuffer:pvoid;ioLength:plong) : Boolean ;Stdcall; external'CH375DLL.DLL';
   //讀取設備描述符
   //iIndex指定CH375設備序號
   //oBuffer指向一個足夠大的緩沖區,用于保存描述符
   //ioLength指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度

   Function CH375GetConfigDescr(iIndex :cardinal; oBuffer :pvoid; ioLength:plong) : Boolean ;Stdcall; external 'CH375DLL.DLL' ;
   //讀取配置描述符
   //iIndex指定CH375設備序號
   //oBuffer指向一個足夠大的緩沖區,用于保存描述符
   //ioLength  指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度

   Function CH375SetIntRoutine (iIndex:cardinal;iIntRoutine :TiIntRoutine) :boolean ;Stdcall; external 'CH375DLL.DLL';
   //設定中斷服務程序
   //iIndex指定CH375設備序號
   //iIntRoutine指定中斷服務程序,為NULL則取消中斷服務,否則在中斷時調用該程序
   //"TiIntRoutine"過程傳遞參數要用非默認的'Register'方式傳遞.

   Function CH375ReadInter(iIndex:cardinal;oBuffer:pvoid;ioLength :plong) :Boolean ; Stdcall;external 'CH375DLL.DLL';
   //讀取中斷數據
   //iIndex指定CH375設備序號
   //oBuffer指向一個足夠大的緩沖區,用于保存描述符
   //ioLength指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度

   Function CH375AbortInter (iIndex :cardinal) :Boolean ;Stdcall; external 'CH375DLL.DLL';
   //放棄中斷數據讀操作
   //iIndex  指定CH375設備序號

   Function CH375ReadData (iIndex :cardinal;oBuffer :pvoid;ioLength :plong):Boolean ;Stdcall; external 'CH375DLL.DLL'; //讀取數據塊
   //iIndex指定CH375設備序號,oBuffer指向一個足夠大的緩沖區,用于保存描述符,ioLength指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度

   function CH375AbortRead(iIndex:cardinal):boolean ;Stdcall; external 'CH375DLL.DLL' ;
   //放棄數據塊讀操作
   //iIndex  指定CH375設備序號

   Function CH375WriteData(iIndex :cardinal;iBuffer :pvoid;ioLength :plong):longbool ;Stdcall; external 'CH375DLL.DLL';
   //先寫出標準的數據塊(命令,長度不超過8字節),再讀取標準的數據塊(應答,長度不超過8字節)
   //iIndex指定CH375設備序號,oBuffer指向一個足夠大的緩沖區,用于保存描述符,ioLength指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度

   Function CH375AbortWrite (iIndex:cardinal):boolean ;Stdcall; external 'CH375DLL.DLL';
   //放棄數據塊寫操作
   //iIndex  指定CH375設備序號

   Function CH375WriteRead (iIndex:cardinal;iBuffer:byte;oBuffer :pvoid;ioLength:plong):Boolean ;Stdcall; external 'CH375DLL.DLL'; //寫出數據塊
   //iIndex指定CH375設備序號,iBuffer指向一個緩沖區,放置準備寫出的數據,長度不大于mCH375_PACKET_LENGTH,oBuffer指向一個足夠大的緩沖區,用于保存描述符,ioLength指向長度單元,輸入時為準備讀取的長度,返回后為實際讀取的長度

   Function CH375GetStatus(iIndex:cardinal;var iStatus:plong):boolean ;Stdcall; external 'CH375DLL.DLL';
    //通過CH375直接輸入數據和狀態
    //iIndex   指定CH375設備序號
    //iStatus  指向一個雙字單元,用于保存狀態數據
    //位7-位0對應CH375的D7-D0引腳,位9對應CH375的RXD#引腳,位10對應CH375的REQ#引腳

   Function CH375SetTimeout(         // 設置USB數據讀寫的超時
	    iIndex:cardinal;         // 指定CH375設備序號
	    iWriteTimeout:cardinal;  // 指定USB寫出數據塊的超時時間,以毫秒mS為單位,0xFFFFFFFF指定不超時(默認值)
	    iReadTimeout:cardinal    // 指定USB讀取數據塊的超時時間,以毫秒mS為單位,0xFFFFFFFF指定不超時(默認值)
                            ):boolean;Stdcall; external 'CH375DLL.DLL';

   Function CH375WriteAuxData(     // 寫出輔助數據
	iIndex:cardinal;           // 指定CH375設備序號
	iBuffer:pvoid;             // 指向一個緩沖區,放置準備寫出的數據
	ioLength:plong             // 指向長度單元,輸入時為準備寫出的長度,返回后為實際寫出的長度
                              ):boolean;Stdcall; external 'CH375DLL.DLL';

   Function CH375SetExclusive(  // 設置獨占使用當前CH375設備
	iIndex:cardinal;        // 指定CH375設備序號
	iExclusive:cardinal     // 為0則設備可以共享使用,非0則獨占使用
         ):boolean;Stdcall; external 'CH375DLL.DLL';

   Function CH375GetUsbID(  // 獲取USB設備ID,返回數據中,低16位為廠商ID,高16位為產品ID,錯誤時返回全0(無效ID)
	    iIndex:cardinal // 指定CH375設備序號
                         ):cardinal;Stdcall; external 'CH375DLL.DLL';

   Function CH375GetDeviceName(  // 返回指向CH375設備名稱的緩沖區,出錯則返回NULL
	    iIndex:cardinal      // 指定CH375設備序號,0對應第一個設備
                               ):pvoid;Stdcall; external 'CH375DLL.DLL';

  Function CH375SetBufUpload(       // 設定內部緩沖上傳模式
       iIndex:cardinal;             // 指定CH375設備序號,0對應第一個設備
        iEnableOrClear:cardinal ):longbool;Stdcall; external 'CH375DLL.DLL';  // 為0則禁止內部緩沖上傳模式,使用直接上傳,非0則啟用內部緩沖上傳模式并清除緩沖區中的已有數據
// 如果啟用內部緩沖上傳模式,那么CH375驅動程序創建線程自動接收USB上傳數據到內部緩沖區,同時清除緩沖區中的已有數據,當應用程序調用CH375ReadData后將立即返回緩沖區中的已有數據

  Function CH375QueryBufUpload(  // 查詢內部上傳緩沖區中的已有數據包個數,成功返回數據包個數,出錯返回-1
        	iIndex:cardinal ):integer;Stdcall; external 'CH375DLL.DLL';  // 指定CH375設備序號,0對應第一個設備

  Function CH375SetBufDownload(  // 設定內部緩沖下傳模式
	iIndex:cardinal;  // 指定CH375設備序號,0對應第一個設備
	iEnableOrClear:cardinal ):longbool;Stdcall; external 'CH375DLL.DLL';  // 為0則禁止內部緩沖下傳模式,使用直接下傳,非0則啟用內部緩沖下傳模式并清除緩沖區中的已有數據
// 如果啟用內部緩沖下傳模式,那么當應用程序調用CH375WriteData后將僅僅是將USB下傳數據放到內部緩沖區并立即返回,而由CH375驅動程序創建的線程自動發送直到完畢


  Function CH375QueryBufDownload(  // 查詢內部下傳緩沖區中的剩余數據包個數(尚未發送),成功返回數據包個數,出錯返回-1
        iIndex:cardinal ):integer;Stdcall; external 'CH375DLL.DLL';  // 指定CH375設備序號,0對應第一個設備


  Function CH375ResetInter(  // 復位中斷數據讀操作
	 iIndex:cardinal ):longbool;Stdcall; external 'CH375DLL.DLL';  // 指定CH375設備序號


  Function CH375ResetAux(  // 復位輔助數據寫操作
	iIndex:cardinal ):longbool;Stdcall; external 'CH375DLL.DLL';  // 指定CH375設備序號


  Function CH375ResetRead(  // 復位數據塊讀操作
        iIndex:cardinal ):longbool;Stdcall; external 'CH375DLL.DLL';  // 指定CH375設備序號


  Function CH375ResetWrite(  // 復位數據塊寫操作
	iIndex:cardinal ):longbool;Stdcall; external 'CH375DLL.DLL';  // 指定CH375設備序號

  type
	mPCH375_NOTIFY_ROUTINE=Procedure (iEventStatus:cardinal );stdcall;  // 設備事件通知回調程序
       // 設備事件和當前狀態(在下行定義): 0=設備拔出事件, 3=設備插入事件

  const	CH375_DEVICE_ARRIVAL=	3;		// 設備插入事件,已經插入
	CH375_DEVICE_REMOVE_PEND=1;		// 設備將要拔出
        CH375_DEVICE_REMOVE=0;		// 設備拔出事件,已經拔出


  Function CH375SetDeviceNotify(  // 設定設備事件通知程序
	iIndex:cardinal;  // 指定CH375設備序號,0對應第一個設備
	iDeviceID:PCHAR;  // 可選參數,指向字符串,指定被監控的設備的ID,字符串以\0終止
	iNotifyRoutine:mPCH375_NOTIFY_ROUTINE ):longbool;Stdcall; external 'CH375DLL.DLL';  // 指定設備事件回調程序,為NULL則取消事件通知,否則在檢測到事件時調用該程序

implementation

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一线二线三线| 久久久久久久网| 亚洲午夜在线视频| 在线观看视频一区| 亚洲视频免费看| 在线观看国产91| 亚洲国产综合91精品麻豆| 在线观看亚洲成人| 免费人成黄页网站在线一区二区| 欧美一区二区在线观看| 国产精品一品二品| 亚洲色图欧美偷拍| 正在播放一区二区| 亚洲成人激情av| 日韩精品专区在线影院重磅| 激情综合网av| √…a在线天堂一区| 欧美午夜影院一区| 韩国毛片一区二区三区| 中文字幕欧美三区| 欧美中文字幕一区二区三区亚洲| 日本网站在线观看一区二区三区| 久久网站热最新地址| 99国产精品久久久久久久久久| 亚洲一区二区三区四区在线免费观看 | 国产精品免费免费| 欧美色网站导航| 国产制服丝袜一区| 亚洲人成在线播放网站岛国 | 成人在线视频一区| 午夜激情综合网| 国产女人18毛片水真多成人如厕 | 在线免费观看一区| 国产另类ts人妖一区二区| 亚洲视频在线一区| 日韩一级免费观看| 色94色欧美sute亚洲线路一ni| 日本视频在线一区| 亚洲综合小说图片| 久久久久88色偷偷免费| 欧美日韩情趣电影| 成人动漫中文字幕| 美女久久久精品| 亚洲一区二区三区四区在线免费观看 | 精品国产亚洲一区二区三区在线观看 | 国产精品免费久久| 日韩精品一区二区在线| 91福利国产精品| 成人三级伦理片| 久久99久久精品| 亚洲国产精品影院| 亚洲三级在线观看| 久久久久久久久久久99999| 欧美日韩和欧美的一区二区| 波多野结衣在线一区| 国内一区二区在线| 麻豆成人综合网| 亚洲国产精品一区二区久久| 亚洲视频一区在线| 国产精品久久久久久久久久久免费看 | 精品亚洲免费视频| 日韩精品久久理论片| 一区二区三区日韩精品视频| 久久久久久一级片| 日韩欧美一区二区久久婷婷| 在线免费亚洲电影| 色综合久久天天| av在线不卡电影| 不卡av在线免费观看| 国产成人免费视频网站高清观看视频 | 欧美一区二区人人喊爽| 欧美在线不卡一区| 91蜜桃在线观看| 91国偷自产一区二区开放时间 | 亚洲国产精品精华液网站| 亚洲视频中文字幕| 亚洲欧美精品午睡沙发| 国产精品国产自产拍在线| 国产日韩欧美精品一区| 国产欧美一区二区三区在线看蜜臀| 久久精品欧美一区二区三区麻豆| 日韩欧美中文一区| www国产成人| 久久精品日韩一区二区三区| 久久久91精品国产一区二区三区| 久久久久国产精品厨房| 久久久精品影视| 国产精品久线观看视频| 国产精品视频第一区| 亚洲国产成人私人影院tom| 国产精品国产三级国产aⅴ无密码| 国产精品久久久久久久浪潮网站| 国产精品美女久久久久aⅴ | 日韩欧美国产综合一区| 欧美一二三在线| 欧美成人a∨高清免费观看| 欧美v日韩v国产v| 久久色在线视频| 国产精品二三区| 一区二区三区四区精品在线视频| 亚洲一区免费观看| 免费人成在线不卡| 懂色av一区二区三区免费看| av不卡在线观看| 欧美在线视频你懂得| 日韩欧美国产成人一区二区| 久久先锋影音av鲁色资源网| 中文字幕免费不卡| 一区二区免费视频| 蜜臀国产一区二区三区在线播放| 国产制服丝袜一区| 91麻豆高清视频| 欧美一级一区二区| 国产婷婷精品av在线| 亚洲精品伦理在线| 六月丁香婷婷色狠狠久久| 国产精品资源在线看| 91论坛在线播放| 日韩三区在线观看| 亚洲国产高清不卡| 污片在线观看一区二区| 国产成都精品91一区二区三| 日韩久久精品一区| 亚洲欧美综合色| 奇米亚洲午夜久久精品| 国产福利精品一区| 欧美丰满一区二区免费视频| 欧美激情资源网| 天天综合色天天综合| 国产一区啦啦啦在线观看| 欧美做爰猛烈大尺度电影无法无天| 6080亚洲精品一区二区| 亚洲免费观看在线视频| 九色|91porny| 欧美性猛交xxxxxxxx| 国产午夜亚洲精品不卡| 丝袜美腿亚洲综合| 99久久99久久精品国产片果冻| 久久先锋影音av鲁色资源| 五月天婷婷综合| 色一情一伦一子一伦一区| 久久综合丝袜日本网| 亚洲大型综合色站| 99精品偷自拍| 国产欧美日韩精品在线| 日韩电影网1区2区| 91国模大尺度私拍在线视频| 国产日韩精品一区二区浪潮av | 7777精品伊人久久久大香线蕉的 | 亚洲一区二区三区四区不卡| 国产精品一区二区久激情瑜伽| 欧美喷水一区二区| 亚洲欧美另类图片小说| 成人黄色777网| 欧美xxxx老人做受| 午夜私人影院久久久久| 色综合一个色综合亚洲| 国产亚洲精品7777| 精品一区二区免费在线观看| 欧美喷水一区二区| 亚洲成人资源在线| 在线视频一区二区免费| 18成人在线观看| 97久久久精品综合88久久| 日本一区二区三区视频视频| 国内精品国产成人国产三级粉色| 91精品国产高清一区二区三区蜜臀| 亚洲欧美区自拍先锋| 91在线免费播放| 亚洲欧美综合色| 99国产精品久久久久久久久久| 中文字幕在线播放不卡一区| 国产黄人亚洲片| 久久精品无码一区二区三区| 国内精品久久久久影院色| 精品捆绑美女sm三区| 九九**精品视频免费播放| 日韩免费福利电影在线观看| 另类中文字幕网| 精品国产一区二区三区不卡 | 久久久精品国产99久久精品芒果| 看电视剧不卡顿的网站| 精品欧美乱码久久久久久 | 国产精品系列在线观看| 欧美精品一区二区三区蜜桃| 国产综合成人久久大片91| 久久久久99精品国产片| 成人av片在线观看| 亚洲免费观看高清完整版在线 | 欧美岛国在线观看| 久久国产精品99精品国产 | 欧美日韩激情一区| 日本强好片久久久久久aaa| 亚洲精品一区在线观看| 国产乱码精品一区二区三| 中文字幕一区二区三区av| 欧美亚一区二区| 久久黄色级2电影| 国产精品第五页| 欧美日韩精品高清|