俺新来的:)
最近,碰到一个问题,请教了多人,也没人能帮俺搞定:(,希望贵宝地的大侠们能帮帮俺问题如下:Dim g_strMagData As String * 1024
Dim g_lngMagLen As LongPublic Declare Function IdtReadMagstripe2 Lib "idtlib.dll" (_
ByVal hCard As Long, _
ByVal responseBuffer As String, _
ByRef responseBufferLength As Long, _
ByVal TurnCardOff As Long, _
ByVal hNotifyEvent As Long _
) As LongIdtReadMagstripe2是个异步调用的函数,用于从下面的硬件取数据,不过取数据可能需要花费很长时间,所以不等取完,就立即返回;
最后一个参数hNotifyEvent是个事件句柄(event object handler),当数据真正取完的时候,下面就会将hNotifyEvent所代表的事件设置为有信号状态(signaled state)。其他参数含义:
hCard --- 标识欲访问的硬件,从这个硬件取数据
responseBuffer --- 作为接受数据的缓冲区。
ResponseBufferLength --- 存放接受到的数据的字节个数。
TurnCardOff --- 此处无关紧要,可以忽略。俺定义两个全局变量,g_strMagData用作存放数据的缓冲区,作为实参传给responseBuffer,g_lngMagLen用于存放取到数据的字节个数,作为实参传给responseBufferLength。俺的问题是:
当发现hNotifyEvent所代表的事件有信号时,g_lngMagLen被设置成正确的值,但是g_strMagData却没有得到任何数据!!!
俺不明白俺到底哪里出了问题?是不是VB不支持着这样的异步调用? 或者全局string类型变量不能作为异步调用的缓冲区?诸位高人大侠,帮帮俺吧,……
最近,碰到一个问题,请教了多人,也没人能帮俺搞定:(,希望贵宝地的大侠们能帮帮俺问题如下:Dim g_strMagData As String * 1024
Dim g_lngMagLen As LongPublic Declare Function IdtReadMagstripe2 Lib "idtlib.dll" (_
ByVal hCard As Long, _
ByVal responseBuffer As String, _
ByRef responseBufferLength As Long, _
ByVal TurnCardOff As Long, _
ByVal hNotifyEvent As Long _
) As LongIdtReadMagstripe2是个异步调用的函数,用于从下面的硬件取数据,不过取数据可能需要花费很长时间,所以不等取完,就立即返回;
最后一个参数hNotifyEvent是个事件句柄(event object handler),当数据真正取完的时候,下面就会将hNotifyEvent所代表的事件设置为有信号状态(signaled state)。其他参数含义:
hCard --- 标识欲访问的硬件,从这个硬件取数据
responseBuffer --- 作为接受数据的缓冲区。
ResponseBufferLength --- 存放接受到的数据的字节个数。
TurnCardOff --- 此处无关紧要,可以忽略。俺定义两个全局变量,g_strMagData用作存放数据的缓冲区,作为实参传给responseBuffer,g_lngMagLen用于存放取到数据的字节个数,作为实参传给responseBufferLength。俺的问题是:
当发现hNotifyEvent所代表的事件有信号时,g_lngMagLen被设置成正确的值,但是g_strMagData却没有得到任何数据!!!
俺不明白俺到底哪里出了问题?是不是VB不支持着这样的异步调用? 或者全局string类型变量不能作为异步调用的缓冲区?诸位高人大侠,帮帮俺吧,……
然后传个全局字节数组过去看看