财会方舟网

服務與支持 SERVICE SUPPORT

    • Hex為后綴的函數說明

    字符的描述方法有多種,如字母‘A’,在ASCII表中,它的十進制表為65,十六進制表示方法為0x41,數字‘1’,它的十進制數表示為48,十六進制數表示為0x31。一個字符串是由一個個字符聯接在一起組成字符串,如‘AB12’是一個字符串,一般使用十六進制表示這個字符串即將十六制的單個表示聯在一起,即‘41423132’,當然也是一個字符串,但這個十六進制的字符串中只包含字符‘0’-‘9’和‘A’-‘F’。

    使用DCIC演示程序,可明顯的看出,如圖:

    下面就一個函數來說明一下:
    IC_Read(HANDLE idComDev,__int16 offset,__int16 len,unsigned char * databuffer);
             如卡內的地址0,開始的8個字符為:ABCD1234,程序代碼如下:
             unsigned char buff[32];注意此處的緩沖區大小
    status=IC_Read(icdev,0,8,buffer);
             if(status==0)
                       ;讀成功
    else
                       ;讀失敗

    如果以上代碼讀成功,則buffer中包含內容‘ABCD1234’

    但如果用IC_Read_Hex來讀,則buffer中的內容為‘4142434431323334’
           

    再舉一個核對密碼的例子,一般說密碼,如SLE4442,密碼是‘B62307’,這是十六進制的表示方法,實際上為ACSII表中對應的字符,但可能不可識別,即不為數字字母也不為一些常見符號等,此時使用核對密碼的函數一般會用:
             char Password[7]="b62307";
        st=IC_CheckPass_4442hex(icdev,(unsigned char *)Password);     
             當然也可以使用如下的例程:
             pass[3]={0xb6,0x23,0x07};
    IC_CheckPass_SLE4442(ICDev,pass);

    在DCIC讀寫器開發包中包含很多_Hex結尾的函數,用法都類似。請自行參考\examples目錄中的例程。注意,在讀類的函數中使用HEX方式,緩沖區的申請一定是長度的兩倍,否則會出現溢出錯誤,導致系統崩潰。

    • 關于射頻卡讀寫器RD800M/RD900M裝載密碼函數的正確使用

    我們以最常用的MIFARE ONE卡來說明。該卡有16個扇區,每個扇區都有獨立的密碼,包括A密碼和B密碼。如果需要對某一扇區操作就必須對該扇區進行密碼校驗。密碼校驗的方式分兩種。下面將分別說明。
       一種是常規的被大多數讀卡器廠商所采用的方式。首先將要校驗的扇區密碼裝載到讀寫器的保密存儲區中,每個扇區對應不同的保密存儲區。這樣在校驗卡的時候,讀寫器會根據扇區號來和讀寫器中對應的保密存儲區中的密碼進行校驗,如果密碼相同就通過校驗,可以 進行以后的讀寫工作。這種方式的特點是密碼裝載到讀寫器的保密存儲區后將一直保留,斷電后也不會丟失。用戶如果不需要改變密碼的話,就不用調用dc_load_key函數再次下載密碼。有些程序代碼在尋卡的循環中包含dc_load_key函數,這樣是不必要的。讀寫器保密存儲區是系統模塊中的EEPROM,在PHILIPS的資料中說明該區域可擦寫的次數最少在10萬次以上,但該區域還是有次數限制的,如果長期的執行裝載密碼操作將減少讀寫器保密存儲區的使用壽命。


    第二種是當需要經常對不同密碼的卡進行核對而使用的方式。該方式不用提前將密碼裝載到讀寫器的保密存儲區中。只需要在校驗卡的時候同時將密碼傳遞給讀寫器就可以進行校驗。對應的函數聲明如下:
    int dc_authentication_pass(int icdev,unsigned char _Mode,unsigned char Addr,unsigned char *passbuff)
    功 能:核對密碼函數,用此函數時,可以不用執行dc_load_key()函數
    參 數:icdev: dc_init返回的設備描述符
           _Mode:密碼驗證模式0—KEYA   4—KEYB
           Addr:要驗證密碼的扇區號
           passbuff:6字節密碼字符串
          返 回:成功返回0
    這種方式大多是在卡片采用一卡一密的時候使用,可以避免頻繁的對讀寫器的保密存儲區操作。該函數在RD800M/RD900M 7.1版本中被支持。
    除了上述的兩種方式以外還有根據讀寫器的SAM安全模塊產生密鑰進行卡片校驗的方式。可以根據客戶不同的SAM安全模塊和特殊要求來定制使用方式,以用于安全保密性要求很高的系統中。
     

    • 關于讀寫器使用的一些注意事項

    一、 插拔式卡座

    1、 對于插拔式卡座,讀寫器中采用的是德國進口的DDM卡座,插卡時候有到位開關感覺,就是在插入到快到位時候有一點停頓的感覺,然后再插入卡會有‘咯噔’的到位感覺,就表明正確插入卡片了。
    2、 要注意防止插卡過于用力,過于用力會損傷卡座的到位開關,而且對卡也有一定的傷害。
    3、 注意保持卡片的清潔,如果卡的芯片不潔,不僅卡片無法正常工作,而且也會對卡座的接觸點造成污染。
    4、 卡到位后再操作這點非常重要,在不穩定的情況下讀寫器對卡進行上電操作,有可能會對卡造成損害。
    5、 插拔式卡座中的卡在操作完成后,應用程序應該首先發命令讓讀寫器對卡片進行下電操作,下電完成后將卡拔出。在沒有下電的情況下將卡拔出有可能對卡造成損害。

    二、 推推式卡座

    1、 推推式卡座采用推入卡片,取出時再推入卡片會彈出卡片。這種結構減少了卡片和觸電之間的摩擦,對保護卡片有一定的優勢。但如果不正確使用也會損傷卡片。
    2、 最常見的錯誤情況是取出卡片的時候不是再次推入讓卡片自動彈出,而且直接把卡片拔出,這種情況會嚴重的損害卡片,而且也會嚴重損害卡座。
    3、 注意保持卡片的清潔,任何結構的卡座最終都是要和卡的芯片觸電緊密接觸,所以如果卡的芯片不潔,會對任何種類的卡座的觸點造成污染。

    三、 IC卡的使用環境和方法

    持卡人的妥善保管及正確的使用是延長IC卡的使用壽命及可靠性的最經濟有效的手段。妥善保管,不隨意彎曲,不隨意用手接觸觸點,不隨意接近強靜電環境,注意保持卡表面清潔等,將有助于提高IC卡的使用可靠性,延長使用壽命。

    四、 清潔卡的使用

    清潔卡是在讀寫器使用一段時間后,卡座的觸點受到了污染后采用的一種清潔措施。清潔卡的使用方法是:在斷電的情況下將清潔卡插入讀寫器,來回插入后將卡座的觸電清潔。
    清潔卡是以聚酯、聚乙烯、聚丙烯或硬質紙張為原料制成清潔卡基體,清潔卡基體的表面熱合或粘合一層無紡布、含磨料(氧化鋁或碳化硅)無紡布、細砂紙、細砂布或具有清潔能力的紡織物等清潔材料層,按上述結構制作而成的一定規格的清潔卡,插入卡機中,插拔幾次清潔卡,即可將卡機觸點表面清洗干凈,極為方便,而且效果明顯,可有效地確保卡機長期正常運行。

    • 讀寫器的常見問題集錦

    各種讀卡器的常見問題
    1.卡片芯片朝上朝下問題
    卡片在讀卡器中芯片朝上或朝下的問題,是根據讀卡器的型號的不同而有區別的:RD600、RD600U、RD600P、RD600W-T、RD600S-T、RD600S-U-T讀卡器中的卡片芯片朝上; RD600W-B、RD600S-B、RD600S-U-B讀卡器中的卡片芯片朝下;
    2.自動測卡問題
       RD600演示程序中的自動測卡功能僅供參考,不是判斷卡型的唯一標準,因為在測卡時讀的是特征字節,而卡的特征字節有可能因卡的生產商不同而有所不同,當測卡不準時,請手動選卡型號。
    3.驗證密碼問題
       接觸式讀卡器在驗證密碼時,如果在前一次核對密碼正確后而沒下電的情況下,無論輸入任何密碼它都認為是正確的,只有下電后才能判斷密碼的正確與否。
    4.RD900ID的參數問題
       RD900ID-S讀卡時需要打開超級終端,通訊速率為:1200BPS;RD900ID-P則只需打開一個文檔即可。還有種情況就是讀卡器RD900ID是根據客戶的要求定制的,采用的波特率和輸出數據方式都有所差異,欲知詳細情況請與我們的技術員聯系。
    5.USB讀卡器
       在使用USB讀卡器時,不能先接讀卡器,而是應該先安裝USB驅動,然后再接上USB讀卡器,這時系統會自動找到設備的。
    6.RD800M
       在RD800M演示程序中,使用自動測試功能后,如果再繼續其它操作得先對卡下電(即把卡片從感應區移開);如果要對射頻卡讀卡器改變波特率繼續工作,應該對讀卡器先斷電,然后波特率才能夠修改成功,因為讀卡器只有在剛通電的情況下,才處于自動偵測波特率的狀態。
    7.IC_InitType
       此函數不是測卡函數,它沒有測卡功能,它的作用是告訴讀卡器將要操作的卡型號而已。
    8.初始化串口錯誤
       串口資源已經被占用,(包括初始化串口后非正常退出而未關閉串口,然后再去初始化串口); 計算機與讀寫器通訊的波特率與讀寫器默認波特率不一致;計算機與讀寫器通訊的串口與讀寫器默認串口不一致;設備連接不正確,接觸不正常。
    9.DES算法加減密
       在VB中,部分數據在使用DES算法加密減密后與原文有所不同,解決辦法為:可將密文定義為全局變量,直接傳遞給解密函數解密;或者將加密后的密文以BYTE表示,用傳地址方式傳遞。
    10.擦除
       102、1604卡只有在數據成功擦除后,才能夠正確地寫入新的數據;對102卡寫數據時起始地址必須為偶數,數據長度也必須為偶數。
    11.DT4C28、4406卡操作時的注意事項
      <1>該卡是先擦除后寫,也就是如果要寫入的地方不是FF的時候必須要先擦除該字節,然后才能寫入數據.
      <2>該卡是借位擦除,比如說想把字節12處的數據擦除為FF,就必須st=IC_Erase_4406
      (p_NowCom,13),也就是擦除高一位的字節;不能寫入為FF的數據,如果已經是FF,就不用寫。(千萬要注意!!!!!!!)如果想寫為FF,必須用earse.比如:在16開始要寫入"11ff2233",就不能直接寫入IC_Write_Hex(icdev,16,4, "11ff2233"); 應該是:先執行IC_Erase_4406(p_NowCom, 18); IC_Write_ Hex(icdev, 16,1,
    "11");最后IC_Write_Hex(icdev,18,2, "2233");
       <3>該卡核對完密碼后,9是錯誤記數,10,11,12是密碼,這些字節因為一般不是FF,所以就要接著擦除密碼區的數據。st=IC_Erase_4406(p_NowCom,13);st=IC_Erase_4406(p_NowCom,12);st=IC_Erase_4406(p_NowCom,11);st=IC_Erase_4406(p_NowCom,10);   這四個函數一定要按順序執行!
       <4> 最后一定要注意的是,個人化操作,也就是寫第8個字節為"7F"(有可能不同),一定要放在最后所有的數據已經寫完后寫。
     

首頁上一頁1下一頁末頁
财会方舟网 99幸运28pc蛋蛋在线预测 开奖三分赛车 炸金花棋牌游戏下载 贵州十一选五最大遗漏 新时时财付通 金龙棋牌维护 时时福彩下载 516手机棋牌游戏中心 黑龙江福彩p62开奖走势图 赛车最快开奖网