PB讀寫IC卡

 

在寫相關的信息管理系統時,有時會遇見讀寫相關的外部設備等問題,這類的問題,在PowerBulider中實現這類的功能並不是一件難事,現在的相關外部設備廠商在提供產品時,基本都提供了相關編程接口,利用這些接口函數後ActiveX控件,結合PowerBulider中外部函數的調用,可以輕鬆的實現相關功能,以下提供讀寫IC卡實現的基本代碼,以期消除相關編程人員對讀寫外部設備等問題的恐懼心理

外部函數聲明:

Subroutine PostPara(long prot,strig syspara) library “lock739.dll”//傳遞參數,主要傳遞串口信息

Function long Reset() library “lock739.dll”//讀寫復位

Function Boolean OpenCom () library “lock739.dll”//打開串口

Subroutine CloseCom() library “lock739.dll”//關閉串口

Function long ChkCard() library “lock739.dll”//檢查卡是否到位

Function long CmpSc(string sc) library “lock739.dll”//覈對密碼

Function long WriteSc(string sc) library “lock739.dll”//修改加密卡密碼

Function long ReadSc(string inbuff,long sclen) library “lock739.dll”//度曲加密卡密碼

Function long RdDat(long cardtype,long start,long ilen,ref string inbuff) library “lock739.dll”//讀卡信息

Function long WrDat(long cardtype,long start,long ilen,ref string outbuff)library “lock739.dll”//寫卡信息

實例變量:

public string sc=’272272272’

寫卡函數:wf_write(string as_arg1,long al_start,long al_len)

/*參數 string as_arg1 寫入的字符串;

long al_start 寫入的位置

long al_len 寫入的長度*/

long l_rtn

if opencom()=false then

messagebox(“提示”,”串口連接失敗”)

return

end if

l_rtn=chkcard()

if l_rtn<>0 then

  wf_errormessage(l_rtn)

closecom()

return

end if

l_rtn=cmpsc(sc)//sc爲密碼

if l_rtn<>0 then

wf_errormessage(l_rtn)

closecom()

return

end if

l_rtn=wrdat(1,al_start,al_len,as_agr1)

if l_rtn<>0 then

  wf_errormessage(l_rtn)

closecom()

return

end if

messagebox(“提示”,”寫卡成功!”)

讀卡函數:wf_read(string as_arg1,long al_start,long al_len)

/*參數 string as_arg1 保存讀出信息的字符串;

long al_start 開始讀卡入的位置

long al_len 讀卡的長度*/

long l_rtn

if opencom()=false then

messagebox(“提示”,”串口連接失敗”)

return

end if

l_rtn=chkcard()

if l_rtn<>0 then

  wf_errormessage(l_rtn)

closecom()

return

end if

l_rtn=rddat(1,al_start,al_len,as_agr1)

if l_rtn<>0 then

  wf_errormessage(l_rtn)

closecom()

return

end if

messagebox(“提示”,”讀卡成功!”)

顯示錯誤函數:wf_errormessage(long lerror)

choose case lerror

case 1

messagebox(“提示”,”寫入錯誤或密碼錯誤!”)

case 2

messagebox(“提示”,”卡已損壞或參數越界!“)

case 3

messagebox(“提示”,”請插卡!”)

case 4

messagebox(“提示”,”通訊錯誤!”)

case else

messagebox(“提示”,”未知錯誤!”)

end choose

初始化卡函數wf_initialcard(long al_port)

/*參數:long al_port 傳入讀寫器使用的串口*/

psotpara(al_port,””)

以上的例子代碼所使用的ic卡爲sle4442 加密存儲器卡,讀卡器爲wb1000 IC卡讀寫器

通過以上代碼的示例,實現與外部設備的通訊,並不是一件很難的時吧?!

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章