见过这个库名的人应该知道是什么吧,我就不多说了。
我现在想要两方面解决方案: 1、如果你是das公司或是你开发过这个包,能不能告诉我,在3.0的写卡过程中,这个DLL是不是有经过什么特殊处理?因为我按照文档来写函数,是连不通机器的。
2.如果你成功开发过这个写卡过程,为了尊重你的劳动成果,我愿意出现金买你的心得。或是指点一二也行!或Email:Hwkknd·163.net属于1类的,我愿意出2000分相赠…
2类的具体再议…
我现在想要两方面解决方案: 1、如果你是das公司或是你开发过这个包,能不能告诉我,在3.0的写卡过程中,这个DLL是不是有经过什么特殊处理?因为我按照文档来写函数,是连不通机器的。
2.如果你成功开发过这个写卡过程,为了尊重你的劳动成果,我愿意出现金买你的心得。或是指点一二也行!或Email:Hwkknd·163.net属于1类的,我愿意出2000分相赠…
2类的具体再议…
XFShakeHand()[就餐机]需要传入的值为:串口句柄,从机地址,系统卡编号(10位),通讯密码(8位)
成功后再调用其它需要的函数
完成调用后closecomm(icdev)释放串口
Private Sub Command1_Click()
Dim Comhandle As Long
Dim LngCardsn As Long
Dim Info As Integer
Dim Intbasic As Integer
Dim Carddispno As String '卡显示编号
Dim Struct_BasicInfo As struc_Employee
Dim structconsumeinfo As Struct_Consume_Info
Dim CardSN As Long '卡固有号
Dim Cardid As Long '卡流水号
Dim Validate As String * 7 '卡失效日
Dim Gender As Byte
Dim IcCarfNo As String * 13
On Error GoTo err:
'devid为串口号,0代表串口1,1代表串口2,以此类推
Comhandle = rf_init(Devid, 19200) '此处为打开串口,所有对卡片的操作都要先‘调用此函数,以便得到串口句柄,也就是我上面定义的Comhandle
If Comhandle <= 0 Then
MsgBox 打开串口错误", vbInformation, "提示"
Exit Sub
End If
info= GetBasicInfo(Comhandle, Struct_BasicInfo, CardSN)'读取卡基本信息
If info<> 0 Then
info= rf_card(Comhandle, 0, Cardsn) '单独寻卡,返回卡固有号
If info<> 0 Then
MsgBox "寻卡失败!", vbCritical
Comhandle = rf_exit(Comhandle) '释放串口句柄
Exit Sub
Else
'处理返回的固有号
Info = rf_beep(Comhandle, 10) '发卡器响100毫秒
Comhandle = rf_exit(Comhandle)
Exit Sub
End If
MsgBox GetErrorDescriptionCard(info), vbCritical, "´调用错误处理函数
Comhandle = rf_exit(Comhandle)
Exit Sub
Else '已正确读取到卡的信息,可以对其做相应处理
Gender = Struct_BasicInfo.Gender
Carddispno = Struct_BasicInfo.IcCarfNo
Validate = Struct_BasicInfo.Validate
info= rf_beep(Comhandle, 10)
End if
Comhandle = rf_exit(Comhandle) Exit Sub
err:
MsgBox err.Description
End Sub
1,MakeCard :发用户卡,用户扇区各数据都为0
2.MakeCard_N :发用户卡,并初始化用户卡的卡类 第二个函数比第一个函数多了一个参数(LPCSTR UserCardType 卡类,32个字符。每个字符为‘0’或‘1’),此分类是什么类?用在何处?操作员卡为何用?装入授权文件Load_Author,功能何在
我用MakeSysSubCard发系统卡如下:
MakeSysSubCard(CardHWND,UserPass,4,1,CardNo) //(4为客户消费扇区)发卡成功 然后用CheckCardSecInfo()检查扇区使用情况返回结果如下:
2000000000000000
而C3考勤子卡检测信息为:
0999999999999999
('0'-不是空白卡 '1'- 系统卡 '2'- 系统子卡 '3'-初始化卡 '9'-空白卡) 我的调用参数有什么问题吗?请指点
1、C3中为什么3.0、2.0的动态库混用呢?难道是单一版本解决不了问题?拿一个简单的函数来说吧CheckCardSecInfo(),C3中用的是2.0的吧,它和3.0返回的结果不一致,这也就是我昨天遇到的最后一个问题。还有一个技术上的问题向你请教,我在消费充值或是查询扇区信息的时候
充值成功,但消费机查不到金额(不知道充那里去了)
查询消费扇区,函数返回-1(使用扇区错误)
我猜想是扇区这个参数格式的问题
我的函数声明是Byte类型,但我写4 或是$04(delphi中dx04)格式结果都一样……
GetConsumeInfo(CardHWND,ConsumeInfo,dx04,addr(CardNo))不知何故……请指点……
GetConsumeInfo(CardHWND,ConsumeInfo,4,addr(CardNo))
或
GetConsumeInfo(CardHWND,ConsumeInfo,$04,addr(CardNo))
还是取不到数据
CardHWND 应为传入的串口句柄
ConsumeInfo 自定义的消费结构,正确定义很重要
4 消费系统使用的扇区
addr(CardNo) 应为卡片固有序列号
只要传入的东西没问题,Licence.das 也没问题,肯定能读出卡上的数据
ConsumeInfo 消费结构包含的内容比较多,有卡上金额(分表示),卡使用次数,卡金额失效日,卡片级限次规定等等,具体请参照开发文档