VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

求助,dll函數的使用方式求教

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Bruce Lin



註冊時間: 2004-03-28
文章: 24
來自: Taiwan,Taipei

第 1 樓

發表發表於: 星期一 四月 13, 2015 9:45 am    文章主題: 求助,dll函數的使用方式求教 引言回覆

小弟近期買了一台設備,廠商有附dll的說明及VB、C#的範例,但沒有VFP範例,小弟使用VFP6.0 ,因以前沒用過dll,所以不知如何呼叫,請各位前輩指導,謝謝

目前碰到的問題,是不知將設備裡面的記錄取出,dll中的函數說明如下:

********************************
GetGeneralLogDataStr
[Definition]
VARIANT_BOOL GetGeneralLogDataStr( [in] long dwMachineNumber, [out] long*
dwEnrollNumber, [out] long* dwVerifyMode, [out] long* dwInOutMode, [out] BSTR
*TimeStr)
[Usage]
Read attendance records one by one from the internal buffer. Before using this function, you
can use ReadAllGLogData or ReadGeneralLogData to read attendance records from the
device and write them into the internal buffer of the PC. Each time this function is executed,
the pointer points to the next attendance record. The difference between this function and
GetGeneralLogData is the returned time type.
[Parameter]
dwMachineNumber
Device number
dwEnrollNumber
Pointer pointing to a long variable. The value is the user ID of the received
attendance record.
dwVerifyMode
Pointer pointing to a long variable. The value is the verification mode of the received
attendance record. The specific values are the same as those of
GetGeneralLogData.
dwInOutMode
Pointer pointing to a long variable. The value is the attendance state of the reserved
attendance record. The specific values are the same as those of
GetGeneralLogData.
TimeStr
Pointer pointing to a BSTR variable. The value is the attendance time of the received
attendance record.
[Return Value]
Return True if it is successful, or return False.
[Related Function]
GetGeneralLogData

*******************
VB 將記錄取出來的寫法
*******************
While axCZKEM1.GetGeneralLogDataStr(iMachineNumber, idwEnrollNumber, idwVerifyMode, idwInOutMode, sTime)
iGLCount += 1
lvItem = lvLogs.Items.Add(iGLCount.ToString())
lvItem.SubItems.Add(idwEnrollNumber.ToString())
lvItem.SubItems.Add(idwVerifyMode.ToString())
lvItem.SubItems.Add(idwInOutMode.ToString())
lvItem.SubItems.Add(sTime)
End While

************************************
小弟用VFP,已可連接設備,但接下就不知該如何處理
************************************
axCZKEM1 = CreateObject("zkemkeeper.ZKEM.1")
aa = AxCZKEM1.Connect_Net("192.168.X.X","4370")
local idwEnrollNumber As Integer
local idwVerifyMode As Integer
local idwInOutMode As Integer
iMachineNumber =1
sTime = ""

*******************
以上煩請各位前輩協助,謝謝

_________________
= BRUCE LIN = ^_^
回頂端
檢視會員個人資料 發送私人訊息
Bruce Lin



註冊時間: 2004-03-28
文章: 24
來自: Taiwan,Taipei

第 2 樓

發表發表於: 星期二 四月 14, 2015 4:56 pm    文章主題: 引言回覆

小弟參考VB的寫法,寫出以下的CODE,但取出來的值,都是空白的.... 是哪邊有寫錯嗎? 煩請前輩協助,感激不盡。

************************************
axCZKEM1 = CreateObject("zkemkeeper.ZKEM.1")
aa = AxCZKEM1.Connect_Net("192.168.X.X","4370")
local idwEnrollNumber As Integer
local idwVerifyMode As Integer
local idwInOutMode As Integer
iMachineNumber =1
sTime = ""
if aa=.T.
do while AxCZKEM1.GetGeneralLogDataStr(iMachineNumber, idwEnrollNumber, idwVerifyMode, idwInOutMode, sTime)=.T.
lvItem =idwEnrollNumber+" "+idwVerifyMode+" "+idwInOutMode+" "+sTime
? lvItem
enddo
axCZKEM1.Disconnect()
endif
************************************

_________________
= BRUCE LIN = ^_^
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 83


第 3 樓

發表發表於: 星期三 四月 15, 2015 7:57 am    文章主題: 引言回覆

** VARIANT_BOOL GetGeneralLogDataStr(
** [in] long dwMachineNumber,
** [out] long* dwEnrollNumber,
** [out] long* dwVerifyMode,
** [out] long* dwInOutMode,
** [out] BSTR *TimeStr)

iMachineNumber = 1
idwEnrollNumber = 0
idwVerifyMode = 0
idwInOutMode = 0
sTime = SPACE(254)
** do while AxCZKEM1.GetGeneralLogDataStr(iMachineNumber, @idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime)==1
do while AxCZKEM1.GetGeneralLogDataStr(iMachineNumber, @idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime)
lvItem = TRANSFORM(idwEnrollNumber) + " ";
+ TRANSFORM(idwVerifyMode) + " ";
+ TRANSFORM(idwInOutMode) + " ";
+ STRCONV(LEFT(sTime, 10), 15) && 暫解釋sTime(原型是BSTR)看看再處理
? lvItem
enddo
回頂端
檢視會員個人資料 發送私人訊息
Bruce Lin



註冊時間: 2004-03-28
文章: 24
來自: Taiwan,Taipei

第 4 樓

發表發表於: 星期三 四月 15, 2015 8:36 am    文章主題: 引言回覆

oldbb 寫到:
** VARIANT_BOOL GetGeneralLogDataStr(
** [in] long dwMachineNumber,
** [out] long* dwEnrollNumber,
** [out] long* dwVerifyMode,
** [out] long* dwInOutMode,
** [out] BSTR *TimeStr)

iMachineNumber = 1
idwEnrollNumber = 0
idwVerifyMode = 0
idwInOutMode = 0
sTime = SPACE(254)
** do while AxCZKEM1.GetGeneralLogDataStr(iMachineNumber, @idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime)==1
do while AxCZKEM1.GetGeneralLogDataStr(iMachineNumber, @idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime)
lvItem = TRANSFORM(idwEnrollNumber) + " ";
+ TRANSFORM(idwVerifyMode) + " ";
+ TRANSFORM(idwInOutMode) + " ";
+ STRCONV(LEFT(sTime, 10), 15) && 暫解釋sTime(原型是BSTR)看看再處理
? lvItem
enddo


vItem = TRANSFORM(idwEnrollNumber) + " ";
+ TRANSFORM(idwVerifyMode) + " ";
+ TRANSFORM(idwInOutMode) + " ";
+ sTime
sTime取出是字元型態,可以不用轉換
終於搞定了!! 太感謝你了~~~~ ^^

另小弟不解 @idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime 為何都要加一個@號呢?
測試結果,少加@號,值就無法取出

_________________
= BRUCE LIN = ^_^


Bruce Lin 在 星期三 四月 15, 2015 8:55 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 83


第 5 樓

發表發表於: 星期三 四月 15, 2015 8:54 am    文章主題: 引言回覆

** VARIANT_BOOL GetGeneralLogDataStr(
** [in] long dwMachineNumber,
** [out] long* dwEnrollNumber,
** [out] long* dwVerifyMode,
** [out] long* dwInOutMode,
** [out] BSTR *TimeStr)
@idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime
接口說明是輸出型[out],VFP用@表示Pointer
回頂端
檢視會員個人資料 發送私人訊息
Bruce Lin



註冊時間: 2004-03-28
文章: 24
來自: Taiwan,Taipei

第 6 樓

發表發表於: 星期三 四月 15, 2015 8:58 am    文章主題: 引言回覆

oldbb 寫到:
** VARIANT_BOOL GetGeneralLogDataStr(
** [in] long dwMachineNumber,
** [out] long* dwEnrollNumber,
** [out] long* dwVerifyMode,
** [out] long* dwInOutMode,
** [out] BSTR *TimeStr)
@idwEnrollNumber, @idwVerifyMode, @idwInOutMode, @sTime
接口說明是輸出型[out],VFP用@表示Pointer

原來如此,再次感謝解惑~ ^^

_________________
= BRUCE LIN = ^_^
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作