Merhabalar, geçenlerde satın aldıgımız masaüstü RFID okuyucu ve yazıcısını hastane yazılımında SDK sını kullanmak istedigimizde, SDK içindeki API nin DLL inin C ile yazıldıgını fark ettik. Ve Visual Studio ya normal DLL i ekler gibi ekleyemedik.
Bende paylaşmak istedim, bu tarz başka dillerle yazılmış DLL leri P/Invoke ile kullanıyoruz projelerimizde. Bu tarz Win32 DLL lerini P/Invoke ile çagırabiliriz.
Bizim kullandıgımız masa üstü RFID okuyucusunun modeli TKP705 idi. Ama içerisinde bir Serial Reader var. Windows cihazı HJSRFID-7640 ve HJSRFID-S7640 olarak tanımakta. Seri çevirici üzerinden USB RFID cihazı ile haberleşiliyor.
SDK içerisinden çıkan CVAPIV01.DLL C dili ile yazılmış. .Net projenizde kullanmak için DLL ile Bin klasorunun altına kopyalayıp.
[DllImport("CVAPIV01.dll", CharSet = CharSet.Ansi)]
Deyip altınada kullanmak istedigimiz methodları tanımlıyoruz tek tek,
public static extern int GetVersionAPI(StringBuilder VersionAPI);
public static extern int OpenComm(StringBuilder Com, int Baudrate);
...
Burada dikkat etmeniz gereken Win32 type lerini C# nasıl tanımlayacagınızı bilmeniz. Ve API içinde methodları parametreleri ile bilmeniz.Yukarıdaki 2 method için API nin SDK dökümanınında ( S795X-RS232 )
Şu şekilde ifade edilmişti :
int GetVersionAPI( char *VersionAPI )
int OpenComm(char *Com, int Baudrate)
kritik nokta türler, işte türlerin listesi
Win32 Types | Specification | CLR Type |
char, INT8, SBYTE, CHAR* | 8-bit signed integer | System.SByte |
short, short int, INT16, SHORT | 16-bit signed integer | System.Int16 |
int, long, long int, INT32, LONG32, BOOL* , INT | 32-bit signed integer | System.Int32 |
__int64, INT64, LONGLONG | 64-bit signed integer | System.Int64 |
unsigned char, UINT8, UCHAR* , BYTE | 8-bit unsigned integer | System.Byte |
unsigned short, UINT16, USHORT, WORD, ATOM, WCHAR* , __wchar_t | 16-bit unsigned integer | System.UInt16 |
unsigned, unsigned int, UINT32, ULONG32, DWORD32, ULONG, DWORD, UINT | 32-bit unsigned integer | System.UInt32 |
unsigned __int64, UINT64, DWORDLONG, ULONGLONG | 64-bit unsigned integer | System.UInt64 |
float, FLOAT | Single-precision floating point | System.Single |
double, long double, DOUBLE | Double-precision floating point | System.Double |
|