//功能描述:从第33个字节开始读取数据,读取数据长度为40bytes
//返回值:读卡所得的字符串.有数据值--成功,空串--失败
//-------------------------------------------
//操作步骤:
//1.上电
//2.检查卡的状态及类型
//3.读卡
//4.下电
//注意:失败后返回要下电操作,并释放串口long ll_result //返回值
string ls_bfr //读卡缓冲变量
string ls_ATRbuffer //检验卡类型缓冲变量
long ll_startpos //读卡开始点
long ll_nob //读取数据长度
long i ,ll_PortHandle
string ls_com
ls_bfr = space(40) //预分配内存
ls_ATRbuffer = space(4) //预分配内存
//初始化读卡器
for i = 1 to 4 //循环查找四个串口,找到后退出循环
ls_com = "COM"+string(i)
ll_result = OpenPort(ls_com, ll_PortHandle)
If ll_result = 0 Then exit
nextif ll_porthandle =0 then
messagebox("错误","无法初始化IC卡读写设备。读卡操作中断。",stopsign!)
return ''
else
SelectPort(ll_PortHandle)
end if//1.上电
poweron()
//2.检查卡的状态及类型
if cardpresent() <> 1 then
messagebox("提示","没有IC卡在读写器内。~n~r读卡操作中断。")
poweroff()
closeport()
return ''
end if
if getcardtype(ls_atrbuffer) <> 2 then
messagebox("错误","该卡不是横县医保卡。请用医保专用卡。~n~r读卡操作中断。")
poweroff()
closeport()
return ''
end if
//3.读卡
ll_result = Read_4442_NO_PB(33,40,ls_bfr) //虚读一次 注:虚读的原因见相关文档
ll_result = Read_4442_NO_PB(33,40,ls_bfr) //实读
if ll_result <> 0 then
messagebox("提示","无法读取卡内信息。~n~r读卡操作中断。")
poweroff()
closeport()
return '' // 读卡失败返回空串
end ifls_bfr = f_dmndecrypto(ls_bfr) //解密
poweroff()
closeport()
return ls_bfr //返回字符串
//返回值:读卡所得的字符串.有数据值--成功,空串--失败
//-------------------------------------------
//操作步骤:
//1.上电
//2.检查卡的状态及类型
//3.读卡
//4.下电
//注意:失败后返回要下电操作,并释放串口long ll_result //返回值
string ls_bfr //读卡缓冲变量
string ls_ATRbuffer //检验卡类型缓冲变量
long ll_startpos //读卡开始点
long ll_nob //读取数据长度
long i ,ll_PortHandle
string ls_com
ls_bfr = space(40) //预分配内存
ls_ATRbuffer = space(4) //预分配内存
//初始化读卡器
for i = 1 to 4 //循环查找四个串口,找到后退出循环
ls_com = "COM"+string(i)
ll_result = OpenPort(ls_com, ll_PortHandle)
If ll_result = 0 Then exit
nextif ll_porthandle =0 then
messagebox("错误","无法初始化IC卡读写设备。读卡操作中断。",stopsign!)
return ''
else
SelectPort(ll_PortHandle)
end if//1.上电
poweron()
//2.检查卡的状态及类型
if cardpresent() <> 1 then
messagebox("提示","没有IC卡在读写器内。~n~r读卡操作中断。")
poweroff()
closeport()
return ''
end if
if getcardtype(ls_atrbuffer) <> 2 then
messagebox("错误","该卡不是横县医保卡。请用医保专用卡。~n~r读卡操作中断。")
poweroff()
closeport()
return ''
end if
//3.读卡
ll_result = Read_4442_NO_PB(33,40,ls_bfr) //虚读一次 注:虚读的原因见相关文档
ll_result = Read_4442_NO_PB(33,40,ls_bfr) //实读
if ll_result <> 0 then
messagebox("提示","无法读取卡内信息。~n~r读卡操作中断。")
poweroff()
closeport()
return '' // 读卡失败返回空串
end ifls_bfr = f_dmndecrypto(ls_bfr) //解密
poweroff()
closeport()
return ls_bfr //返回字符串
这个我回声明了,请问能解释一下‘读写串口用spcomm’吗?谢谢
Function long OpenPort(string PortName,Ref long PortHandle) library "micro900.dll"
Function long ClosePort() library "micro900.dll"
Function Long SelectPort (Long PortHandle) Library "micro900.dll"
Function Long PowerOn() Library "micro900.dll"
Function Long PowerOff() Library "micro900.dll"
Function Long CardChanged() Library "micro900.dll"
Function Long GetCardType(Ref string ATRBuffer) Library "micro900.dll"
Function string GetCardName(long CardType) Library "micro900.dll"
Function Long CardPresent() Library "micro900.dll"
Function Long C_Read_4442_With_PB ( Long StartPos, Long NOB , &
ref char Bfr,ref char PB_Bf) Library "micro900.dll" alias for Read_4442_With_PB
Function Long Read_4442_With_PB ( Long StartPos, Long NOB , &
ref string Bfr,ref string PB_Bf) Library "micro900.dll"
Function Long Read_4442_NO_PB ( Long StartPos, Long NOB , &
ref string Bfr) Library "micro900.dll"
Function Long C_Read_4442_NO_PB ( Long StartPos, Long NOB , &
ref char Bfr) Library "micro900.dll" alias for Read_4442_NO_PB
Function Long Read_4442_PB ( Ref string PB_Bfr) Library "micro900.dll"
Function Long C_Read_4442_PB ( Ref char PB_Bfr) Library "micro900.dll" &
alias for Read_4442_PB
Function Long Write_4442_PB(long Address) Library "micro900.dll"
Function Long Write_4442(long StartPos,char DestByte,char PBSetFlag) Library "micro900.dll"
Function Long Write_4442_Array(long StartPos,long NOB,Ref string DestByte, &
Ref string PBSetFlag) Library "micro900.dll"
Function Long C_Write_4442_Array(long StartPos,long NOB,Ref char DestByte, &
Ref char PBSetFlag) Library "micro900.dll" alias for Write_4442_Array
Function Long Verify_4442_PSC(char PSC1,char PSC21,char PSC3) Library "micro900.dll"
Function Long Read_4442_SM(Ref string SM_Bfr) Library "micro900.dll"
Function Long C_Read_4442_SM(Ref char SM_Bfr) Library "micro900.dll" &
alias for Read_4442_SM
Function Long Write_4442_SM(long SMAddress,char SMByte) Library "micro900.dll"
请问pb中的long, ref long ,ref string 分别对应delphi中的什么类型?
http://www.2ccc.com/article.asp?articleid=75
可以参考这个例子
http://www.2ccc.com/article.asp?articleid=1047