如何将以下的.h转换成delphi
#ifndef _COUNTER_LIB_H_
#define _COUNTER_LIB_H_#pragma comment(lib, "ctcjggd3.lib")#define VENDORID 0x10ee
#define DEVICEID 0x0310#include "windrvr/windrvr.h"
#include "windrvr/pci_regs.h"
#include "windrvr/bits.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DLL __declspec(dllimport)enum { CTCJGGD3_DEFAULT_VENDOR_ID = 0x10EC };
enum { CTCJGGD3_DEFAULT_DEVICE_ID = 0x8139 };enum
{
CTCJGGD3_MODE_BYTE = 0,
CTCJGGD3_MODE_WORD = 1,
CTCJGGD3_MODE_DWORD = 2
};
typedef DWORD CTCJGGD3_MODE;enum
{
CTCJGGD3_AD_BAR0 = AD_PCI_BAR0,
CTCJGGD3_AD_BAR1 = AD_PCI_BAR1,
CTCJGGD3_AD_BAR2 = AD_PCI_BAR2,
CTCJGGD3_AD_BAR3 = AD_PCI_BAR3,
CTCJGGD3_AD_BAR4 = AD_PCI_BAR4,
CTCJGGD3_AD_BAR5 = AD_PCI_BAR5,
CTCJGGD3_AD_EPROM = AD_PCI_BAR_EPROM,
};
typedef DWORD CTCJGGD3_ADDR;// Number of IO and memory ranges
enum { CTCJGGD3_ITEMS = AD_PCI_BARS };typedef struct CTCJGGD3_STRUCT *CTCJGGD3_HANDLE;CTCJGGD3_HANDLE cHandle;typedef struct
{
DWORD dwCounter; // number of interrupts received
DWORD dwLost; // number of interrupts not yet dealt with
BOOL fStopped; // was interrupt disabled during wait
} CTCJGGD3_INT_RESULT;typedef void (*CTCJGGD3_INT_HANDLER)(CTCJGGD3_HANDLE hCTCJGGD3, CTCJGGD3_INT_RESULT *intResult);// options for CTCJGGD3_Open
enum { CTCJGGD3_OPEN_USE_INT = 0x1 };typedef struct
{
WORD CNT1;
WORD CNT2;
WORD CNT3;
WORD IMPTimeTag;
BYTE Status;
BOOL TIMCome;
BOOL BUPCome;
BOOL IMPCome;
}DataInfo_STRUCT;DataInfo_STRUCT stDataInfo={0};
// internal data structures
typedef struct
{
WD_INTERRUPT Int;
HANDLE hThread;
WD_TRANSFER Trans[1];
CTCJGGD3_INT_HANDLER funcIntHandler;
} CTCJGGD3_INT_INTERRUPT;typedef struct
{
DWORD index;
DWORD dwMask;
BOOL fIsMemory;
BOOL fActive;
} CTCJGGD3_ADDR_DESC;typedef struct CTCJGGD3_STRUCT
{
HANDLE hWD;
BOOL fUseInt;
CTCJGGD3_INT_INTERRUPT Int;
WD_PCI_SLOT pciSlot;
CTCJGGD3_ADDR_DESC addrDesc[CTCJGGD3_ITEMS];
WD_CARD_REGISTER cardReg;
} CTCJGGD3_STRUCT;DLL BOOL CTCJGGD3_Open(CTCJGGD3_HANDLE *phCTCJGGD3, DWORD dwVendorID, DWORD dwDeviceID);
DLL void CTCJGGD3_Close(CTCJGGD3_HANDLE hCTCJGGD3);
DLL BOOL ResetCard(CTCJGGD3_HANDLE hCTCJGGD3);DLL BOOL SetFDiv(CTCJGGD3_HANDLE hCTCJGGD3,BYTE Multiple);
DLL void SetTimerInterval(CTCJGGD3_HANDLE hCTCJGGD3,BYTE Time);
DLL BOOL StartTimer(CTCJGGD3_HANDLE hCTCJGGD3,BOOL Enable);
DLL void SetTriggerDepth(CTCJGGD3_HANDLE hCTCJGGD3,BYTE Depth);
DLL BOOL IsFIFOTriggered(CTCJGGD3_HANDLE hCTCJGGD3);
DLL BOOL IsFIFOEmpty(CTCJGGD3_HANDLE hCTCJGGD3);
DLL void ReadDatas(CTCJGGD3_HANDLE hCTCJGGD3,DataInfo_STRUCT *myDatas);#ifdef __cplusplus
}
#endif
#endif
#ifndef _COUNTER_LIB_H_
#define _COUNTER_LIB_H_#pragma comment(lib, "ctcjggd3.lib")#define VENDORID 0x10ee
#define DEVICEID 0x0310#include "windrvr/windrvr.h"
#include "windrvr/pci_regs.h"
#include "windrvr/bits.h"
#ifdef __cplusplus
extern "C" {
#endif
#define DLL __declspec(dllimport)enum { CTCJGGD3_DEFAULT_VENDOR_ID = 0x10EC };
enum { CTCJGGD3_DEFAULT_DEVICE_ID = 0x8139 };enum
{
CTCJGGD3_MODE_BYTE = 0,
CTCJGGD3_MODE_WORD = 1,
CTCJGGD3_MODE_DWORD = 2
};
typedef DWORD CTCJGGD3_MODE;enum
{
CTCJGGD3_AD_BAR0 = AD_PCI_BAR0,
CTCJGGD3_AD_BAR1 = AD_PCI_BAR1,
CTCJGGD3_AD_BAR2 = AD_PCI_BAR2,
CTCJGGD3_AD_BAR3 = AD_PCI_BAR3,
CTCJGGD3_AD_BAR4 = AD_PCI_BAR4,
CTCJGGD3_AD_BAR5 = AD_PCI_BAR5,
CTCJGGD3_AD_EPROM = AD_PCI_BAR_EPROM,
};
typedef DWORD CTCJGGD3_ADDR;// Number of IO and memory ranges
enum { CTCJGGD3_ITEMS = AD_PCI_BARS };typedef struct CTCJGGD3_STRUCT *CTCJGGD3_HANDLE;CTCJGGD3_HANDLE cHandle;typedef struct
{
DWORD dwCounter; // number of interrupts received
DWORD dwLost; // number of interrupts not yet dealt with
BOOL fStopped; // was interrupt disabled during wait
} CTCJGGD3_INT_RESULT;typedef void (*CTCJGGD3_INT_HANDLER)(CTCJGGD3_HANDLE hCTCJGGD3, CTCJGGD3_INT_RESULT *intResult);// options for CTCJGGD3_Open
enum { CTCJGGD3_OPEN_USE_INT = 0x1 };typedef struct
{
WORD CNT1;
WORD CNT2;
WORD CNT3;
WORD IMPTimeTag;
BYTE Status;
BOOL TIMCome;
BOOL BUPCome;
BOOL IMPCome;
}DataInfo_STRUCT;DataInfo_STRUCT stDataInfo={0};
// internal data structures
typedef struct
{
WD_INTERRUPT Int;
HANDLE hThread;
WD_TRANSFER Trans[1];
CTCJGGD3_INT_HANDLER funcIntHandler;
} CTCJGGD3_INT_INTERRUPT;typedef struct
{
DWORD index;
DWORD dwMask;
BOOL fIsMemory;
BOOL fActive;
} CTCJGGD3_ADDR_DESC;typedef struct CTCJGGD3_STRUCT
{
HANDLE hWD;
BOOL fUseInt;
CTCJGGD3_INT_INTERRUPT Int;
WD_PCI_SLOT pciSlot;
CTCJGGD3_ADDR_DESC addrDesc[CTCJGGD3_ITEMS];
WD_CARD_REGISTER cardReg;
} CTCJGGD3_STRUCT;DLL BOOL CTCJGGD3_Open(CTCJGGD3_HANDLE *phCTCJGGD3, DWORD dwVendorID, DWORD dwDeviceID);
DLL void CTCJGGD3_Close(CTCJGGD3_HANDLE hCTCJGGD3);
DLL BOOL ResetCard(CTCJGGD3_HANDLE hCTCJGGD3);DLL BOOL SetFDiv(CTCJGGD3_HANDLE hCTCJGGD3,BYTE Multiple);
DLL void SetTimerInterval(CTCJGGD3_HANDLE hCTCJGGD3,BYTE Time);
DLL BOOL StartTimer(CTCJGGD3_HANDLE hCTCJGGD3,BOOL Enable);
DLL void SetTriggerDepth(CTCJGGD3_HANDLE hCTCJGGD3,BYTE Depth);
DLL BOOL IsFIFOTriggered(CTCJGGD3_HANDLE hCTCJGGD3);
DLL BOOL IsFIFOEmpty(CTCJGGD3_HANDLE hCTCJGGD3);
DLL void ReadDatas(CTCJGGD3_HANDLE hCTCJGGD3,DataInfo_STRUCT *myDatas);#ifdef __cplusplus
}
#endif
#endif
解决方案 »
- 正式申请非技术区小版主,望大家捧场!
- DELPHI+ACCESS的问题,帮忙一下啊。。
- 求助:关于COM客户端报错“RPC服务器不可用”的原因!
- 诚心求净网先锋屏蔽器,要免费并且不过去的,3Q
- BORLAND 在“迫害”程序员?
- 请问如何安装GIFIMAGE这个控件呢?
- SQL SERVER 两个表update
- 请教一个数据备份问题
- 如何控制edit框中输入的字符为0.00-9.99
- 有没有求某一天是在一年中第几个星期的函数?(sorry,我已经快没分了)
- 有人在Delphi下写过MSN Messenger的程序吗?
- 请教高手点击ComboBox组件旁的下拉箭头,会产生什么事件?以及如何让Combobox不显示下拉框?多谢了
unit 123;
{**************************************************************************}
{ }
{ This C DLL header file first (automatic) conversion generated by: }
{ HeadConv 4.0 (c) 2000 by Bob Swart (aka Dr.Bob - www.drbob42.com) }
{ Final Delphi-Jedi (Darth) command-line units edition }
{ }
{ Generated Date: 2004-3-29 }
{ Generated Time: 22:12:39 }
{ }
{**************************************************************************}interface
uses
{$IFDEF WIN32}
Windows;
{$ELSE}
Wintypes, WinProcs;
{$ENDIF}{$IFNDEF _COUNTER_LIB_H_}
{$DEFINE _COUNTER_LIB_H_}{ #pragma comment(lib, "ctcjggd3.lib") }const
VENDORID = $10ee;
const
DEVICEID = $0310;{$INCLUDE "windrvr/windrvr.h"}
{$INCLUDE "windrvr/pci_regs.h"}
{$INCLUDE "windrvr/bits.h"}
{$IFDEF __cplusplus}
{$ENDIF}
const
DLL = __declspec(dllimport);type
CTCJGGD3_STRUCT*CTCJGGD3_HANDLE; = (
CTCJGGD3_DEFAULT_VENDOR_ID {= 0x10EC } );
type
CTCJGGD3_STRUCT*CTCJGGD3_HANDLE; = (
CTCJGGD3_DEFAULT_DEVICE_ID {= 0x8139 } );type
CTCJGGD3_STRUCT*CTCJGGD3_HANDLE; = (
CTCJGGD3_MODE_BYTE {= 0},
CTCJGGD3_MODE_WORD {= 1},
CTCJGGD3_MODE_DWORD {= 2 } );
type
CTCJGGD3_MODE = LongInt;type
CTCJGGD3_STRUCT*CTCJGGD3_HANDLE; = (
CTCJGGD3_AD_BAR0 {= AD_PCI_BAR0},
CTCJGGD3_AD_BAR1 {= AD_PCI_BAR1},
CTCJGGD3_AD_BAR2 {= AD_PCI_BAR2},
CTCJGGD3_AD_BAR3 {= AD_PCI_BAR3},
CTCJGGD3_AD_BAR4 {= AD_PCI_BAR4},
CTCJGGD3_AD_BAR5 {= AD_PCI_BAR5},
CTCJGGD3_AD_EPROM {= AD_PCI_BAR_EPROM} );
type
CTCJGGD3_ADDR = LongInt;{/// Number of IO and memory ranges }
type
CTCJGGD3_STRUCT*CTCJGGD3_HANDLE; = (
CTCJGGD3_ITEMS {= AD_PCI_BARS } );type
CTCJGGD3_STRUCT*CTCJGGD3_HANDLE; = record
dwCounter: LongInt;
dwLost: LongInt;
fStopped: Bool;
end {CTCJGGD3_STRUCT*CTCJGGD3_HANDLE;};type
= VOID (*CTCJGGD3_INT_HANDLER)(CTCJGGD3_HANDLE HCTCJGGD3, CTCJGGD3_INT_RESULT*INTRESULT);{/// options for CTCJGGD3_Open }
type
DataInfo_STRUCT = (
CTCJGGD3_OPEN_USE_INT {= 0x1 } );type
DataInfo_STRUCT = record
CNT1: Word;
CNT2: Word;
CNT3: Word;
IMPTimeTag: Word;
Status: BYTE;
TIMCome: Bool;
BUPCome: Bool;
IMPCome: Bool;
end {DataInfo_STRUCT};{/// internal data structures }
type
CTCJGGD3_INT_INTERRUPT = record
Int: WD_INTERRUPT;
hThread: THandle;
Trans: Array[0..1-1] of WD_TRANSFER;
funcIntHandler: CTCJGGD3_INT_HANDLER;
end {CTCJGGD3_INT_INTERRUPT};type
CTCJGGD3_ADDR_DESC = record
index: LongInt;
dwMask: LongInt;
fIsMemory: Bool;
fActive: Bool;
end {CTCJGGD3_ADDR_DESC};type
CTCJGGD3_STRUCT = record
hWD: THandle;
fUseInt: Bool;
Int: CTCJGGD3_INT_INTERRUPT;
pciSlot: WD_PCI_SLOT;
CTCJGGD3_ADDR_DESC addrDesc: Array[0..CTCJGGD3_ITEMS-1] of Integer;
cardReg: WD_CARD_REGISTER;
end {CTCJGGD3_STRUCT};var
CTCJGGD3_Open: function(phCTCJGGD3: PCTCJGGD3_HANDLE;
dwVendorID: LongInt;
dwDeviceID: LongInt): DLL cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
CTCJGGD3_Close: function(hCTCJGGD3: CTCJGGD3_HANDLE) cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
ResetCard: function(hCTCJGGD3: CTCJGGD3_HANDLE): DLL cdecl {$IFDEF WIN32} stdcall {$ENDIF}; var
SetFDiv: function(hCTCJGGD3: CTCJGGD3_HANDLE;
Multiple: BYTE): DLL cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
SetTimerInterval: function(hCTCJGGD3: CTCJGGD3_HANDLE;
Time: BYTE) cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
StartTimer: function(hCTCJGGD3: CTCJGGD3_HANDLE;
Enable: Bool): DLL cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
SetTriggerDepth: function(hCTCJGGD3: CTCJGGD3_HANDLE;
Depth: BYTE) cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
IsFIFOTriggered: function(hCTCJGGD3: CTCJGGD3_HANDLE): DLL cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
IsFIFOEmpty: function(hCTCJGGD3: CTCJGGD3_HANDLE): DLL cdecl {$IFDEF WIN32} stdcall {$ENDIF};
var
ReadDatas: function(hCTCJGGD3: CTCJGGD3_HANDLE;
var myDatas: DATAINFO_STRUCT) cdecl {$IFDEF WIN32} stdcall {$ENDIF}; {$IFDEF __cplusplus}
{$ENDIF}
{$ENDIF}var
DLLLoaded: Boolean { is DLL (dynamically) loaded already? }
{$IFDEF WIN32} = False; {$ENDIF}implementationvar
SaveExit: pointer;
DLLHandle: THandle;
{$IFNDEF MSDOS}
ErrorMode: Integer;
{$ENDIF} procedure NewExit; far;
begin
ExitProc := SaveExit;
FreeLibrary(DLLHandle)
end {NewExit};procedure LoadDLL;
begin
if DLLLoaded then Exit;
{$IFNDEF MSDOS}
ErrorMode := SetErrorMode($8000{SEM_NoOpenFileErrorBox});
{$ENDIF}
DLLHandle := LoadLibrary('123.DLL');
if DLLHandle >= 32 then
begin
DLLLoaded := True;
SaveExit := ExitProc;
ExitProc := @NewExit;
@CTCJGGD3_Open := GetProcAddress(DLLHandle,'CTCJGGD3_Open');
{$IFDEF WIN32}
Assert(@CTCJGGD3_Open <> nil);
{$ENDIF}
@CTCJGGD3_Close := GetProcAddress(DLLHandle,'CTCJGGD3_Close');
{$IFDEF WIN32}
Assert(@CTCJGGD3_Close <> nil);
{$ENDIF}
@ResetCard := GetProcAddress(DLLHandle,'ResetCard');
{$IFDEF WIN32}
Assert(@ResetCard <> nil);
{$ENDIF}
@SetFDiv := GetProcAddress(DLLHandle,'SetFDiv');
{$IFDEF WIN32}
Assert(@SetFDiv <> nil);
{$ENDIF}
@SetTimerInterval := GetProcAddress(DLLHandle,'SetTimerInterval');
{$IFDEF WIN32}
Assert(@SetTimerInterval <> nil);
{$ENDIF}
@StartTimer := GetProcAddress(DLLHandle,'StartTimer');
{$IFDEF WIN32}
Assert(@StartTimer <> nil);
{$ENDIF}
@SetTriggerDepth := GetProcAddress(DLLHandle,'SetTriggerDepth');
{$IFDEF WIN32}
Assert(@SetTriggerDepth <> nil);
{$ENDIF}
@IsFIFOTriggered := GetProcAddress(DLLHandle,'IsFIFOTriggered');
{$IFDEF WIN32}
Assert(@IsFIFOTriggered <> nil);
{$ENDIF}
@IsFIFOEmpty := GetProcAddress(DLLHandle,'IsFIFOEmpty');
{$IFDEF WIN32}
Assert(@IsFIFOEmpty <> nil);
{$ENDIF}
@ReadDatas := GetProcAddress(DLLHandle,'ReadDatas');
{$IFDEF WIN32}
Assert(@ReadDatas <> nil);
{$ENDIF}
end
else
begin
DLLLoaded := False;
{ Error: 123.DLL could not be loaded !! }
end;
{$IFNDEF MSDOS}
SetErrorMode(ErrorMode)
{$ENDIF}
end {LoadDLL};begin
LoadDLL;
end.