天天看點

ID卡函數說明

/// <summary>

/// Z9讀卡器

/// </summary>

public class carderZ9

{

/// <summary>

/// 說明:初始化裝置通訊口

/// 該函數對計算機的端口進行初始化。

/// 傳回:小于等于 0 錯誤,沒有初始化成功; 大于 0 初始化成功,傳回序列槽辨別符

/// </summary>

/// <param name="Port">0、1、2表示序列槽1、2、3; 100 USB接口</param>

/// <param name="baud">傳輸速率;使用19200</param>

[DllImport("dcic32.dll")]

public static extern int IC_InitComm_Baud(int Port, int baud);

[DllImport("dcic32.dll")]

//關閉端口

public static extern short IC_ExitComm(int icdev);

/// <summary>

/// 說明:蜂鳴

/// 傳回:0 成功;非0 失敗

/// </summary>

/// <param name="icdev">通訊裝置辨別符</param>

/// <param name="intime">蜂鳴時間,值範圍0~255(機關50ms)</param>

[DllImport("dcic32.dll")]

public static extern short IC_PosBeep(int icdev, int intime);

[DllImport("dcic32.dll")]

//

public static extern short IC_Request(int icdev, int mode);

/// <summary>

/// 說明:判斷連接配接是否成功,小于0 ,連接配接不成功.0可以讀寫,1連接配接成功,但是沒插卡.

/// </summary>

/// <param name="icdev">通訊裝置辨別符</param>

[DllImport("dcic32.dll")]

public static extern short IC_Status(int icdev);

/// <summary>

/// 說明:尋卡函數,能傳回在工作區域内某張卡的序列号(相當于執行IC_Request IC_Anticoll IC_Select)

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">設定卡的模式,0在對卡進行操作完畢後,執行dc_halt();則該卡進入HALT模式,則必須把卡移開感應區再進來才能尋得這張卡</param>

/// <returns>

/// <param name="snr">存放找到的卡的序列号的位址</param>

/// </returns>

[DllImport("dcic32.dll")]

public static extern short IC_Card(int icdev, int mode, ref ulong snr);

/// <summary>

/// 說明:裝入密碼函數,成功則傳回 0.密碼裝入讀卡器中

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">驗證密碼的方法;0: 用KEYSET0和KEYA驗證; 4: 用KEYSET0和KEYB驗證</param>

/// <param name="secnr">要驗證密碼的扇區号</param>

/// <param name="nkey">密碼是16進制字元串,長度12位元組。ffffffffffff</param>

[DllImport("dcic32.dll")]

public static extern short IC_Load_Keyhex(int icdev, int mode, int secnr, string nkey);

/// <summary>

/// 說明:驗證某一扇區密碼的函數,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">驗證密碼的方法;0: 用KEYSET0和KEYA驗證; 4: 用KEYSET0和KEYB驗證</param>

/// <param name="secnr">要驗證密碼的扇區号</param>

[DllImport("dcic32.dll")]

public static extern short IC_Authentication(int icdev, int mode, int secnr);

/// <summary>

/// 說明:核對密碼函數,成功則傳回 0.密碼裝入讀卡器中

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">驗證密碼的方法;0: 用KEYSET0和KEYA驗證; 4: 用KEYSET0和KEYB驗證</param>

/// <param name="Addr">要驗證密碼的絕對位址号碼,一般是扇區的最後一個位址塊,比如0扇區就是3,15扇區就是63等等 如果對于新的4K卡計算方式可以根據公式來計算,密碼Addr=扇區号×4+3</param>

/// <param name="nkey">密碼是16進制字元串,長度12位元組。ffffffffffff</param>

[DllImport("dcic32.dll")]

public static extern short IC_Authentication_Passaddrhex(int icdev, int mode, int Addr, string nkey);

[DllImport("dcic32.dll")]

//在固定的位置寫入固定長度的資料

public static extern short IC_Write(int icdev, int offset, int Length, string Databuffer);

/// <summary>

/// 說明:讀函數,一次必須讀一個塊,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="adr">所讀資料的位址,0 - 63</param>

/// <returns>

/// <param name="sdata">存放被讀資料的位址</param>

/// </returns>

[DllImport("dcic32.dll")]

public static extern short IC_ReadMifare_Hex(int icdev, int adr, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata);

/// <summary>

/// 說明:寫函數,一次必須寫一個塊,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="adr">所寫資料的位址,0 - 63</param>

/// <returns>

/// <param name="sdata">要寫入的資料 32位 </param>

/// </returns>

[DllImport("dcic32.dll")]

public static extern short IC_WriteMifare_Hex(int icdev, int adr, string sdata);

/// <summary>

/// 說明:獲得使用者鍵盤密碼的輸入,該函數會一直等待使用者輸入直到逾時

/// type = 0x0, 成功取得密碼,rlen = 密碼位數(1-8之間,根據客戶輸入而定)cpass就是密碼

/// type = 0xa1,使用者取消密碼輸入,rlen =0,無data段;

/// type = 0xa2,使用者密碼輸入操作逾時,rlen =0,無data段;

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// /// <param name="ctime">是使用者按鍵輸入的逾時時間,以second為機關;最大255s,最小1s</param>

/// <param name="rlen">密碼位數(1-8之間,根據客戶輸入而定)</param>

/// <param name="cpass">密碼</param>

[DllImport("dcic32.dll")]

public static extern short IC_GetInputPass(int icdev, int ctime, ref int rlen, [MarshalAs(UnmanagedType.LPStr)] StringBuilder cpass);

/// <summary>

/// 說明:按指定的類型顯示系統内置的操作提示,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="type">

/// type=0x01,:顯示“請插上卡!”

/// type=0x02,:顯示“請插下卡!”

/// type=0x03,:顯示“請刷卡!”,

/// type=0x04,:顯示“讀卡錯誤!”

/// type=0x05,:顯示“請輸入密碼!”

/// type=0x06,:顯示“密碼錯誤!”,

/// type=0x07,:顯示“操作成功!”,

/// type=0x08,:顯示“操作失敗!”,

/// type=0x09,:顯示“操作逾時!”,

/// </param>

[DllImport("dcic32.dll")]

public static extern short IC_DispLcd(int icdev, int type);

/// <summary>

/// 說明:顯示主菜單,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

[DllImport("dcic32.dll")]

public static extern short IC_DispMainMenu(int icdev);

/// <summary>

/// 說明:顯示資訊,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="line">行号 範圍為0~1</param>

/// <param name="offset">偏移 範圍為0~7</param>

/// <param name="data">以空标志結束的字元串,'字'長度+偏移不能超過8,即每行最多可能顯示8個'字'</param>

[DllImport("dcic32.dll")]

public static extern short IC_DispInfo(int icdev, int line, int offset, string data);

/// <summary>

/// 說明:清除LCD螢幕,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="cLine">0表示清第一行,1表示清第二行,2表示兩行全清</param>

[DllImport("dcic32.dll")]

public static extern short IC_LcdClrScrn(int icdev, int cLine);

}

/// <summary>

/// HCE-201讀卡器 4442晶片

/// <para>調用Mwic_32.dll</para>

/// </summary>

/// <summary>

/// D3讀卡器

/// </summary>

public class carderD3

{

/// <summary>

/// 說明:初始化裝置通訊口

/// 該函數對計算機的端口進行初始化。

/// 傳回:小于等于 0 錯誤,沒有初始化成功; 大于 0 初始化成功,傳回序列槽辨別符

/// </summary>

/// <param name="Port">0、1、2表示序列槽1、2、3; 100 USB接口</param>

/// <param name="baud">傳輸速率;使用19200</param>

[DllImport("dcrf32.dll")]

public static extern int dc_init(int Port, int baud);

[DllImport("dcrf32.dll")]

//關閉端口

public static extern short dc_exit(int icdev);

/// <summary>

/// 說明:蜂鳴

/// 傳回:0 成功;非0 失敗

/// </summary>

/// <param name="icdev">通訊裝置辨別符</param>

/// <param name="intime">蜂鳴時間,值範圍0~255(機關50ms)</param>

[DllImport("dcrf32.dll")]

public static extern short dc_beep(int icdev, int intime);

[DllImport("dcrf32.dll")]

//

public static extern short dc_request(int icdev, int mode);

/ <summary>

/ 說明:判斷連接配接是否成功,小于0 ,連接配接不成功.0可以讀寫,1連接配接成功,但是沒插卡.

/ </summary>

/ <param name="icdev">通訊裝置辨別符</param>

//[DllImport("dcrf32.dll")]

//public static extern short IC_Status(int icdev);

/// <summary>

/// 說明:尋卡函數,能傳回在工作區域内某張卡的序列号(相當于執行IC_Request IC_Anticoll IC_Select)

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">設定卡的模式,0在對卡進行操作完畢後,執行dc_halt();則該卡進入HALT模式,則必須把卡移開感應區再進來才能尋得這張卡</param>

/// <returns>

/// <param name="snr">存放找到的卡的序列号的位址</param>

/// </returns>

[DllImport("dcrf32.dll")]

public static extern short dc_card(int icdev, int mode, ref ulong snr);

/// <summary>

/// 說明:裝入密碼函數,成功則傳回 0.密碼裝入讀卡器中

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">驗證密碼的方法;0: 用KEYSET0和KEYA驗證; 4: 用KEYSET0和KEYB驗證</param>

/// <param name="secnr">要驗證密碼的扇區号</param>

/// <param name="nkey">密碼是16進制字元串,長度12位元組。ffffffffffff</param>

[DllImport("dcrf32.dll")]

public static extern short dc_load_key(int icdev, int mode, int secnr, string nkey);

/// <summary>

/// 說明:驗證某一扇區密碼的函數,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">驗證密碼的方法;0: 用KEYSET0和KEYA驗證; 4: 用KEYSET0和KEYB驗證</param>

/// <param name="secnr">要驗證密碼的扇區号</param>

[DllImport("dcrf32.dll")]

public static extern short dc_authentication(int icdev, int mode, int secnr);

/// <summary>

/// 說明:核對密碼函數,成功則傳回 0.密碼裝入讀卡器中

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="mode">驗證密碼的方法;0: 用KEYSET0和KEYA驗證; 4: 用KEYSET0和KEYB驗證</param>

/// <param name="Addr">要驗證密碼的絕對位址号碼,一般是扇區的最後一個位址塊,比如0扇區就是3,15扇區就是63等等 如果對于新的4K卡計算方式可以根據公式來計算,密碼Addr=扇區号×4+3</param>

/// <param name="nkey">密碼是16進制字元串,長度12位元組。ffffffffffff</param>

[DllImport("dcrf32.dll")]

public static extern short dc_authentication_passaddr_hex(int icdev, int mode, int Addr, string nkey);

[DllImport("dcrf32.dll")]

//在固定的位置寫入固定長度的資料

public static extern short dc_write(int icdev, int offset, int Length, string Databuffer);

/// <summary>

/// 說明:讀函數,一次必須讀一個塊,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="adr">所讀資料的位址,0 - 63</param>

/// <returns>

/// <param name="sdata">存放被讀資料的位址</param>

/// </returns>

[DllImport("dcrf32.dll")]

public static extern short dc_read_hex(int icdev, int adr, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata);

/// <summary>

/// 說明:寫函數,一次必須寫一個塊,成功則傳回 0

/// </summary>

/// <param name="icdev">裝置描述符</param>

/// <param name="adr">所寫資料的位址,0 - 63</param>

/// <returns>

/// <param name="sdata">要寫入的資料 32位 </param>

/// </returns>

[DllImport("dcrf32.dll")]

public static extern short dc_write_hex(int icdev, int adr, string sdata);

}

繼續閱讀