線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1509
推到 Plurk!
推到 Facebook!

無法呼叫RFID的dll

缺席
cubi
初階會員


發表:56
回覆:94
積分:35
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-06-12 21:18:21 IP:203.79.xxx.xxx 訂閱
各位前輩好
小弟最近在試RFID出勤打卡遇到一個問題,就是無法呼叫廠商所附的dll,
以下是廠商提供的sdk範例與宣告:
ps: RFID的溝通介面是TCP/IP

====================================================================================
vc 函數格式:
[code cpp]
HANDLE OpenController(LPCTSTR host, UINT port, LPMESG_CALLBACK getDataEvent, BYTE controllerID)
[/code]

host LPCTSTR [in]控制器IP地址
port UINT [in]埠
getDataEvent LPMESG_CALLBACK [in]程式定義的回呼函數,用來處理發送或接收完資料的處理。
controllerID BYTE [in]連接的控制器ID,1~255


回呼函數類型定義:
[code cpp]
//定義
typedef void (WINAPI *LPMESG_CALLBACK)(LPCSTR buff, UINT nBuffType)
[/code]
[code cpp]
//範例:
HANDLE instance = OpenController(_T(“192.168.1.1”), 10002, HandleMessage, 1);
[/code]

====================================================================================

以下是小弟在delphi的實作
MTAPI.pas (定義dll)
----------------------
[code delphi]

const
__MTAPI__ = 'c:\\MTAPI.dll';

type
LPMESG_CALLBACK = procedure(buff: LPCTSTR; nBuffType: UNIT32) of object;

function OpenController(host: PChar; port: Integer; getDataEvent: Pointer; controllerID: Byte): Cardinal; stdcall;

implementation

function OpenController; external __MTAPI__ name 'OpenController';
[/code]

unit1.pas
-----------------------
[code delphi]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MTAPI, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
const
__ControlID__ = 1;
var
instance: Cardinal

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
instance := OpenController('192.168.1.35', 10002, nil, __ControlID__);

if (instance = 0) then
Memo1.Lines.Add('Open Controller 失敗')
else
Memo1.Lines.Add('Open Controller 成功');
end;

end.
[/code]

====================================================================================

廠商所附的sample是vb.net及vc.net,執行當然沒問題
而小弟用以上程式執行時,返回值一都是0,而且也沒出現錯誤訊息
小弟有用sniffer去看封包,若用廠商的sample,sniffer是有抓到sample發給RFID感應機的封包,
但若執行小弟的程式時,就沒有封包發出
不知道是哪出問題了,這問題小弟已經試了快2個禮拜了,小也弟與廠商溝通過,
廠商說他們沒辦法給我delphi的sample,他們只有.net的,
小弟也試過用bcb去做,返回值一樣都是0
感謝各位前輩的不吝指導
感謝.......
編輯記錄
cubi 重新編輯於 2010-06-12 21:20:29, 註解 無‧
cubi 重新編輯於 2010-06-12 21:21:45, 註解 無‧
cubi
初階會員


發表:56
回覆:94
積分:35
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-06-13 09:41:03 IP:203.79.xxx.xxx 訂閱
 小弟有用GetLastError,返回"拒絕存取"的訊息
謝謝

系統時間:2024-04-27 2:32:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!