关于考勤机接口调用的问题
小弟最近正在做一个考勤管理系统,使用的考勤机是由舒特电子提供的,考勤机是lan类型的,不是接串口的。厂商提供的硬件接口是用delphi开发的,主要的函数有以下几个:
function _GETVERSION():Pchar;stdcall;
返回值为动态库的版本号
function _LANREALDOWNLOAD(ipaddr:pchar):pchar;stdcall;export;
实时采集考勤机的最新一条刷卡数据,若考勤机在上次调用该函数之后没有新的刷卡记录,则返回 '00000000000000000000 ',若有记录则返回“卡号(6位)+年(4位)+月(2位)+日(2位)+时(2位)+分(2位)+考勤机机号(2位)”。注意:该函数作为实时采集刷卡数据功能,需要不断地调用,考勤机记号要轮流更换。若长时间不调用该函数,且考勤机有多次刷卡,则调用该函数时只能采集到最新的刷卡记录。IPADDR为考勤机的IP地址。
。。。。。。
我现在在vb.net 2003 环境下调用该接口的_LANREALDOWNLOAD函数,返回的值是乱码,或者空串,调用其它和硬件相关的函数也会报错;只有调用_GETVERSION取版本号这种不参与通信的函数返回值才正确,以下是代码,请高手指正。
'*声明
<DllImport( "..\bin\w_kqrec.dll ", CharSet:=CharSet.Auto)> _
Public Shared Function _LANREALDOWNLOAD(ByVal ip As String) As String
End Function
'*调用
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim s As String = String.Empty
s = _LANREALDOWNLOAD( "172.26.32.147 ")
End Sub
s会出现乱码
[解决办法]
字节数组取到了?那只有自己想办法转码了
[解决办法]
字节数组是取不到的,什么类型的数组都取不到,报的错误是: 不能return values.
我试着声明返回intptr,返回了一串数字,也不知道是什么东西,反正不是我想要的。
会不会是调用pchar的时候需要分配内存??
======================
返回的是内存地址
try
Marshal.ReadByte( intptr , int//索引 )读取