# Native Code > برنامه نویسی در Delphi > مباحث عمومی دلفی و پاسکال >  نحوه استفاده از دستگاه RFT-200

## Batman

با سلام
دیروز یه دستگاه reader با مدل اشاره شده گرفتم.همراه اون یکسری فایل dll هم دادن.CC3260 و CC3260MT و EasyD12 و MF_API.
چجوری باید این dllها رو load کنم.یه چیزهایی توی سایت پیدا کردم.مثل این:
https://barnamenevis.org/showth...&highlight=dll
منتها متوجه نشدم که چجوری باید dll رو رجیستر کنم؟
فقط میخوام از دستگاه برای نوشتن و خواندن بارکد استفاده کنم.
در ضمن من توابع داخل فایلهای dll رو هم ندارم.
لطفا کمکم کنید.
ممنونم.

----------


## Batman

یه فایل pdf هم همراهش هست که فکر میکنم توابع رو توضیح داده باشه.
لطفا توابع ارسال و دریافت داده رو معرفی کنید..فکر کنم به زبان c باشه.
ممنونم

----------


## BORHAN TEC

> منتها متوجه نشدم که چجوری باید dll رو رجیستر کنم؟


نيازي به رجيستر كردن نداري. فقط كافي است كه Dll ها رو در كنار برنامه خودت قرار بدي. البته اگه دوست داري كه Dll رو در يك پوشه ي ديگه قرار بدي بايد در اعلان تابعي كه مي نويسي مسير نسبي Dll رو نسبت به فايل اجرايي برنامه بنويسي:
به عنوان مثال:
function External_Fun(Par1:DataType): DataType ; external '*Directory\*DllName.DLL';
بعد از انجام اين كار ميتوني كه توابع رو فراخوني كني (مثل همون صفحه اي كه لينكش رو گذاشتي)
دفت كن كه در مورد اعلان تابع به حروف كوچك و بزرگ توجه كني، در غير اين صورت با يك استثنا (Error) مواجه ميشي!!!

----------


## BORHAN TEC

به عنوان مثال تابعي كه در فايل PDF اشاره شده به صورت int _stdcall MF_Halt(int DeviceAddr) است مي توان به شكل زير به معادل دلفي تعريف كرد.
function MF_Halt(DeviceAddr : Integer): Integer; external 'MF_API.dll';

در زير هم معادلهاي نوعهاي متغير در C و دلفي نشان داده شده است. (سمت چپ براي زبان C و سمت راست براي Delphi)

char -----------> ShortInt
BYTE, unsigned short -----------> Byte
short -----------> SmallInt
unsigned short -----------> Word
int, long -----------> Integer, LongInt
unsigned long -----------> Cardinal, LongWord
__int64 -----------> Int64
float -----------> Single
double -----------> Double
longdouble -----------> Extended
VARIANT, Variant, OleVariant -----------> Variant, OleVariant, TVarData
char -----------> Char
WCHAR -----------> WideChar
AnsiString -----------> String (before delphi 2009)
char * -----------> PChar
LPCWSTR	 -----------> PWideChar
WideString -----------> WideString
(Any 1-byte) -----------> Boolean, ByteBool
(Any 2-byte) -----------> WordBool
BOOL -----------> BOOL, LongBool

----------


## Batman

با تشکر از شما
ببینید من دستگاه رو با پورت usb وصل می کنم و فایل dl رو فراخونی میکنم:
Function    MF_ControlBuzzer(DeviceAddr:Integer;BeepTimer:Word  ):Integer;
  External 'MF_API.dll';
و سپس به صورت زیر تابع رو فراخونی می کنم.این تابع باید یکی صدای بیپ به انداره 3 ثانیه تولید کنه.
Status:=MF_ControlBuzzer(0,30);
زمانی که برنامه رو اجرا میکنم عدد 33 رو نشون میده و بعد خطای زیر ظاهر میشه:
access violation at 0x78ecd:write of address0x00030ffc

----------


## Batman

این هم فایلهای dll

----------


## Batman

آقا تورو خدا یکی کمک کنه

----------


## BORHAN TEC

من اين كدها رو تست كردم . به نظر من مشكل از جاي ديگه هست. شما در اينجا از روش فراخواني ايستا براي بكارگيري توابع درون DLL استفاده كرده ايد. اگر اين قسمت برنامه مشكل داشت برنامه شما اجرا نمي شد و اين در حالي است كه برنامه شما اجرا مي شود. من پيشنهاد مي كنم كه براي امتحان يك پروژه فاقد كدهاي اضافي توليد كنيد و اين تكه كدها را در آن تست كنيد. يا به عنوان روش دوم از بلوك try..except به شكل زير استفاده كنيد تا ببينيد كه مشكل از كجا است.

 try
  { Write Code Here }
 except on E: Exception do
  ShowMessage(e.Message);
 end;

----------


## BORHAN TEC

*يك سوال: آيا دستگاه شما براي اين كه درست كار كند نياز به نصب يك درايور مخصوص ندارد؟*

----------


## Batman

> *يك سوال: آيا دستگاه شما براي اين كه درست كار كند نياز به نصب يك درايور مخصوص ندارد؟*


 چرا من درایور رو نصب کردم.مشکلی با درایور نداره.

----------


## Batman

> من اين كدها رو تست كردم . به نظر من مشكل از جاي ديگه هست. شما در اينجا از روش فراخواني ايستا براي بكارگيري توابع درون DLL استفاده كرده ايد. اگر اين قسمت برنامه مشكل داشت برنامه شما اجرا نمي شد و اين در حالي است كه برنامه شما اجرا مي شود. من پيشنهاد مي كنم كه براي امتحان يك پروژه فاقد كدهاي اضافي توليد كنيد و اين تكه كدها را در آن تست كنيد. يا به عنوان روش دوم از بلوك try..except به شكل زير استفاده كنيد تا ببينيد كه مشكل از كجا است.
> 
>  try
>   { Write Code Here }
>  except on E: Exception do
>   ShowMessage(e.Message);
>  end;


 دوست عزیز من با این روش کار نکردم.ممکنه یه نمونه کد کامل بذارید.(از همین بلاک)

----------


## دلفــي

اگه منظورت استفاده از اين دستگاهه :



شما نياز به هيچ گونه dll نداريد و به راحتي مي تونيد با استفاده از كامپوننت TComPort اون رو مديريت كنيد .
براي اين كار پس از نصب دراور دستگاه با مراجعه به Device Manager پورتي رو كه به دستگاه شما اختصاص يافته رو پيدا كنيد و در قسمت Properties كامپوننت Tcomport مقادير زير رو مقداردهي كنيد :

BaudRate = br9600
DataBits = dbEight
Discardull = True
Port = COM4 //نام پورت مربوط به دستگاه
StopBits = sbOneStopBit 
پس از انجام تنظيمات مي توني با Active كردن كامپوننت در قسمت OnRxChar شماره كارت رو بخوني : 

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
Count  :Integer;
begin
ComPort1.ReadStr(Str, Count);
Memo1.Text := Memo1.Text + Str;
End;

----------


## Batman

با سلام و تشکر از شما
من از پورت usb استفاده میکنم.آیا کامپوننت جواب میده؟

----------


## دلفــي

> با سلام و تشکر از شما
> من از پورت usb استفاده میکنم.آیا کامپوننت جواب میده؟


پس از نصب درايور ، يه پورت كام به سخت افزار شما اختصاص پيدا ميكنه و اغلب COM4 رو بر ميداره ، پس صددرصد كار ميكنه .

من خودم باهاش برنامه نوشتم ، براي حضور غياب يه غذاخوري .

----------


## دلفــي

من يه مثال دمو برات آپلود كردم ، موفق باشي ...

----------


## Batman

> من يه مثال دمو برات آپلود كردم ، موفق باشي ...


برنامه شما خطای زیر رو میده:
Unable to open com port(win error code: 2)
در ضمن من از ویندوز 7 استفاده می کنم.ولی همراه این دستگاه(Buyer model:RFT-230-2 Ver:2) یک برنامه demo هم دادن که برنامه درست کار میکنه.ببینید برنامه demo برای خوندن tag باید 5 مرحله رو طی کنه:
1-request
2-Anticoll
3-select
4-load key
5-Authentication
6-read/write
توی مرحله 6 دستگاه آماده میشه تا داخل tag رو بخونه یا توش بنویسه.حالا من نمیدونم که شما چطوری میتونید به همین سادگی توش بنویسید یا ازش بخونید.
در ضمن من وقتی که دستگاه رو نصب میکنم توی device manager به قسمت Universal Serial Bus Controllers گزینه زیر اضافه میشه:
IC Card Reader
منتها اون گزینه هایی که شما گفتید رو نتونستم از توی Properties پیدا کنم.
در ضمن من کامپوننت ComPort رو هم نصب کردم.
به خاطر همین هستش که میگم باید تلفنی صحبت بشه.
راستی ممکنه source برنامه رو هم بذارید؟
بهرحال از اینکه وقت میذارید ممنونم.

----------


## Batman

راستی منظور از نوع داده AnsiChar چیه؟

----------


## Batman

دوست عزیز شما ظاهرا برنامه ای که نوشتید فقط بارکد رو میخونه.درسته؟
من موفق شدم که با دستگاه ارتباط برقرار کنم.(Port 3).منتها نمیدونم چجوری باید بارکد رو بخونم.در واقع اون دو تا متغیر از نوعهای AnsiChar و Count که از نوع integer هستش رو بیشتر توضیح بدید.و اینکه این procedure چجوری باید فرواخونی بشه.مثلا توی Button1 کد زیر درسته؟
ComPort1.OnRxChar(Owner,0);
یا باید این کد رو درون یه Timer نوشت؟
ممنونم.

----------


## دلفــي

> دوست عزیز شما ظاهرا برنامه ای که نوشتید فقط بارکد رو میخونه.درسته؟


Card Reader است .




> در ضمن من وقتی که دستگاه رو نصب میکنم توی device manager به قسمت Universal Serial Bus Controllers گزینه زیر اضافه میشه:
> IC Card Reader


شما پس از نصب درايور تو قسمت device manager بايد به گزينه ها (Ports (COM & LPT نگاه كنيد نه به Serial Bus Controllers !!!




> من موفق شدم که با دستگاه ارتباط برقرار کنم.(Port 3).منتها نمیدونم چجوری باید بارکد رو بخونم.در واقع اون دو تا متغیر از نوعهای AnsiChar و Count که از نوع integer هستش رو بیشتر توضیح بدید.و اینکه این procedure چجوری باید فرواخونی بشه.مثلا توی Button1 کد زیر درسته؟
> ComPort1.OnRxChar(Owner,0);
> یا باید این کد رو درون یه Timer نوشت؟


نيازي به تايمر نيست ، پس از اضافه كردن ابزار TComPort و Memo به روي فرم كافيه در روال OnRxChar از ابزار ComPort كد زير رو وارد كني :

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort1.ReadStr(Str, Count);
Memo1.Text := Memo1.Text + Str;
End;
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);varStr: String;Count  :Integer;beginComPort1.ReadStr(Str, Count);Memo1.Text := Memo1.Text + Str;End; 
یک شنبه 02 اسفند 1388 09:17 صبح





> برنامه شما خطای زیر رو میده:
> 
> کد:
> Unable to open com port(win error code: 2)


به خاطر اينه كه شما پورت مربوط به دستگاه رو درست معرفي نكرديد !




> منتها اون گزینه هایی که شما گفتید رو نتونستم از توی Properties پیدا کنم.


اون مشخصات تو Properties هاي ابزار TcomPort هستند ، اگه در كامپوننتي كه شما نصب كرديد وجود ندارن حتما شما از كامپوننتي متفاوت استفاده كرديد ، تا اونجايي كه من اطلاع دارم دو نوع كامپوننت با اين نام وجود دارد .
كامپوننتي كه من مد نظرم است اينه : DsgnCport7.bpl كه 6 ابزار با خودش نصب مي كنه و يكيش هم همون TComPort است .

----------


## Batman

من از ویندوز 7 استفاده میکنم.اما این قسمتی که توی device manager بهش اشاره کردید رو نمیتونم پیدا کنم.اما تو همون قسمت universal Serial Controllers برای دستگاه port3 رو معرفی کرده.در ضمن میشه درباره اون دو تا پارامتر هم توضیح بدید؟
ممنونم.

----------


## Batman

من موفق شدم کامپوننت رو نصب کنم.دقیقا همون چیزی هستش که گفتید.6 تا ابزار داره.شی ComPort1 رو روی صفحه میذارم و تنظیمات زیر رو اعمال می کنم:
BaudRate = br9600
DataBits = dbEight
Discardull = True
Port = COM3
StopBits = sbOneStopBit

و یه memo و یه button و یه ComPort1 روی صفحه میذارم برای Button کد زیر رو می نویسم:
procedure TForm1.Button1Click(Sender: TObject);
begin
ComPort1.Connected:=True;
ComPort1.OnRxChar(Owner,0);
end;
و در رویداد OnRxChar مربوط به ComPort هم کد زیر رو مینویسم:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str:AnsiString;
begin
Str:='123';
ComPort1.ReadStr(Str,Count);
Memo1.Text:=Memo1.Text + Str;
end;
گاهی مواقع خطای زیر رو میده:
ComPort Error:Unknown Error #32 on Com3
و گاهی مواقع هم که Port رو درست شناسایی میکنه خطای AV میده:
Access Violation at Address 00000000 Read of address 00000000

----------


## دلفــي

> من موفق شدم کامپوننت رو نصب کنم.دقیقا همون چیزی هستش که گفتید.6 تا ابزار داره.شی ComPort1 رو روی صفحه میذارم و تنظیمات زیر رو اعمال می کنم:
> BaudRate = br9600
> DataBits = dbEight
> Discardull = True
> Port = COM3
> StopBits = sbOneStopBit
> 
> و یه memo و یه button و یه ComPort1 روی صفحه میذارم برای Button کد زیر رو می نویسم:
> procedure TForm1.Button1Click(Sender: TObject);
> ...


 
نوشتن اين كد :

ComPort1.OnRxChar(Owner,0);

اضافيه !

درضمن براي Str هم نبايد مقدار بديد ! اين كد هم اضافيه !

Str:='123';

----------


## Batman

*نوع کارتهای شما چی بوده؟*
یعنی اگه من از نوع کارتهای شما داشته باشم و روبه روی دستگاه بگیرم و سپس اون کد رو اجرا کنم محتویات کارت رو داخل Memo میتونم بببینم؟

----------


## دلفــي

> *نوع کارتهای شما چی بوده؟*


نوع كارت هاي من از نوع RF card هستند .
مگه شما هنوز كارت نداريد ، پس با چي برنامه رو تست مي كنيد ؟!




> یعنی اگه من از نوع کارتهای شما داشته باشم و روبه روی دستگاه بگیرم و سپس اون کد رو اجرا کنم محتویات کارت رو داخل Memo میتونم بببینم؟


بله ، فقط يه كم بايد در نوشته بالاي شما تغيير داد و اينطوري نوشت :

یعنی اگه من از نوع کارتهای شما داشته باشم و اون کد رو اجرا کنم  و سپس روبه روی دستگاه بگیرم محتویات کارت رو داخل Memo میتونم بببینم؟ بله

----------


## Batman

کارت من از نوع Mifare 1k هستش؟به خاطر همینه که میگم 5 مرحله داره.

----------


## Batman

من دو نوع tag براتون میذارم لطفا بگید که کدوم یک از Tagهارو امتحان کردید.
tag اولی tag از نوع read/write هستش و tag دومی برای حضور و غیاب یه اداره هستش.
در ضمن من توی Procedure مربوط به RxOnChar کدهایی رو که گفتید نوشتم.خوب حالا چجوری و کجا Procedure رو فراخونی کنم؟

----------


## Batman

دوست عزیز میشه کامپوننت comportی رو که خوتون استفاده کردید رو واسم Upload کنید؟ممنونم

----------


## BORHAN TEC

اين هم يك مثال از بلوك try..except براي به دام انداختن خطاها :
procedure TForm1.Button1Click(Sender: TObject);
var
  a: extended;
  b: Integer;
begin
  a := 10;
  b := 0;

  try
   ShowMessage(FloatToStr(a / b));
  except
    on E: Exception do
      ShowMessage(e.Message);
    end;

end;

*نكته : هميشه كدهاي خود را در داخل اين بلاك بنويسيد، چون اگر در سيستم مشتري نرم افزار شما يك Remote Debuger نصب شده باشد با رخ دادن اولين استثناي مديريت نشده در برنامه، برنامه ي شما به طرز وحشتناكي خاتمه ميابد!!!!!!*

----------


## Batman

من یه درخواست Source code برای دلفی به سایت سازنده دستگاه دادم . اونها هم یه نمونه برام فرستادن.منتها من که چیزی ازش سر در نیاوردم.لطفا یه نگاهی بهش بندازید.
http://rapidshare.com/files/35440654..._code.rar.html

----------


## دلفــي

> من دو نوع tag براتون میذارم لطفا بگید که کدوم یک از Tagهارو امتحان کردید.
> tag اولی tag از نوع read/write هستش و tag دومی برای حضور و غیاب یه اداره هستش.
> در ضمن من توی Procedure مربوط به RxOnChar کدهایی رو که گفتید نوشتم.خوب حالا چجوری و کجا Procedure رو فراخونی کنم؟


از هر دوتاش هم ميشه استفاده كرد ولي من از كارت استفاده كردم .

لازم نيست RxOnChar رو جايي فراخواني كنيد ، اين پروسيجر خود به خود هنگام دريافت داده از پورت مربوطه اجرا ميشه .

----------


## غلامرضا شریفی

من مثال كامل كار با كارتهاي مايفر  و  password  دار كردن ركوردهاي آنها  را با vb دارم اگر خواستيد براتون بگذارم

----------


## aliasghar

سلام.
ببخشین من به تازگی درگیر انجام پروژه ای برای کا با RFT-200 شدم
مباحث دوستان در این بخش را کامل مطالعه کردم. من هم مشکلاتی Batman دارم
دستگاه من از طریق کابل USB به سیستم (labtop) کانکت می شه و بعد از اتصال و نصب دریوار مربوطه اصلاً در Device Manager گزینه ای مربوط به Port(چه سریال و چه موازی) وجود نداره که بطونم از طریق TComPort بهش دسترسی پیدا کنم.
همراه با دستگاه چند DLL به من داده شده که باید از MF_API.dll استفاده کنم ولی مشکل اینجاست که با فراخوانی هر یک از توابع این Dll یک خطا(دسترسی غیر مجاز به حافظه) ایجاد میشه.
من در کارم متوقف شدم و احتیاج به کمک دارم.
لطفاً دریغ نکنید.

----------


## غلامرضا شریفی

> دستگاه من از طریق کابل USB به سیستم (labtop) کانکت می شه و بعد از اتصال و نصب دریوار مربوطه اصلاً در Device Manager گزینه ای مربوط به Port(چه سریال و چه موازی) وجود نداره که بطونم از طریق TComPort بهش دسترسی پیدا کنم.


وقتي با usb اتصال برقرار ميشود نيازي به باز كردن port نيست فقط بجاي com3وارد ميكنيد usb

----------


## disappear

سلام
دوستان عزیز من هم مشکل دوستان را داشتم که با جستجو به تاپیک شما برخوردم .
آیا کسی مشکل دسترسی به حافظه را حل کرد ؟ من سورس #C و VB رو اجرا می کنم درسته ولی دلفی نه ؟

----------


## aliasghar

من مشکل را حل کردم
اگر دوست داشین Email بدین تا راهنمای استفاده را برایتون ارسال کنم

----------


## disappear

من ایمیل شما رو پیدا نکردم ولی در پیغام خصوصی ایمیل خودم را فرستادم 
با تشکر فراوان .

----------


## disappear

Aliasghar جان هنوز منتظریمــــــــــــــــــ  ـــــــــــــــــــــــــ  ــا . هیچ ایمیلی از شما دریافت نکردم . 

ایمیل من : f.ghasemi@gmail.com

----------


## hamid_shrk

تورو خدا کامپوننت DsgnCport7.bpl رو بهم بدین

hesarkhani@gmail.com

----------


## makhof

سلام 
چرا قسم میدی ؟ :لبخند گشاده!: 
بیا یه dll بدم برو مستقیم با RFT200 کار کن  خودش مستقیم همه فانکشناشو ران می کنه (البته اگه مشکلتون همین بود)

----------


## emdadgar_shahed

سلام 
ببخشید من این فایل شما را دانلود و اجرا کردم ولی هم فایل اجرایی که فرستادید و هم موقع اجرای برنامه از طریق سورس پیغام زیر داده میشه و برنامه دستگاه را نمیشناسه و برنامه اجرا نمیشه .

Class not registered,ClassID:{8A065704-BC54-421C-9026-FB97A3B03EC8}


ممنون میشم راهنماییم کنید .

----------


## emdadgar_shahed

سلام 
ببخشید من این فایل شما را دانلود و اجرا کردم ولی هم فایل اجرایی که فرستادید و هم موقع اجرای برنامه از طریق سورس پیغام زیر داده میشه و برنامه دستگاه را نمیشناسه و برنامه اجرا نمیشه .

Class not registered,ClassID:{8A065704-BC54-421C-9026-FB97A3B03EC8}


ممنون میشم راهنماییم کنید .

----------


## emdadgar_shahed

آقا کسی نیست جواب منو بده ... 
دو روز گذشته و هیچ کس جواب منو نداده ...  :گریه:   :گریه:   :گریه:

----------


## makhof

سلام دوست عزیز 

کلاس dll مربوط به برنامه نصب نشده لطفا قبل از استفاده از کد برنامه اونو نصب کنید.add class.jpg

با تشکر

----------


## emdadgar_shahed

سلام
این کار را هم کردم ولی باز هم همون پیغام را نشون میده !!!!!!!

2.JPG

راه کار دیگه ای وجود داره ؟؟؟؟

----------


## massoud_tekieh

سلام
من درایور دستگاه rft200 رو نیاز دارم
اگر ممکن راهنمایی کنین
ممنون

----------


## moh3n_42

با سلام خدمت دوستان عزيز. آقا من ميخوام با C#‎ برنامه اي بنويسم كه بتونم با اين دستگاه كار كنم. اما متاسفانه DLL هاي ارائه شده براي زبان C++‎ بوده و جوابگو براي C#‎  نيس. كسي هست بتونه كمك كنه ؟

----------


## romixery

سلام.
چون خودم خيلي عذاب كشيدم تا اين دستگاه و دستگاه RFT-23x را با خود MF_API.dll و نه با كامپوننت راه بندازم، كلاسي رو آماده كردم تا دوستان ديگه هم استفاده كنن. اين كلاس رو خودم نوشتم و به راحتي مي تونيد از اون استفاده كنيد. نحوه استفاده از اون در توضيحات فايل اومده.
موفق باشين.
{
Author: Ahmad.daneshvar (romixery@gmail.com)
        Feb-2012     Fractal Technologies® group
**************************************************  ********
                 Release Info
**************************************************  ********
         RFID library for RFT-23x Reader Device - V1.0
                    Need to 'MF_API.dll' and other DLLs:
                  "CC3260.dll"
              "CC3260MT.dll"
              "EasyD12.dll"

          Passed x32 and x64 Machine test on Windows 7.
**************************************************  *********
                Function List
**************************************************  *********
        function loadDll;
        destructor freeDll;

        function rfGetDLL_Ver;
        function rfControlBuzzer;
        function rfInitComm;
        function rfControlLED;
        function rfRequest;
        function rfAnticoll;

**************************************************  *********
               Example and Usage
**************************************************  *********
          Usage and Example:
              var
                dev: TDevice;
            begin
                dev := TDevice.create;
              dev.loadDLL('MF_API.dll');
              dev.rfInitComm(pnUSB, 9600);
              dev.rfControlBuzzer(0, 30);
              dev.freeDll;
            end
**************************************************  *********}
unit Device;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Dialogs, vcl.Forms;

type
    TPortName = (pnUSB, pnCOM1, pnCOM2, pnCOM3, pnCOM4, pnCOM5, pnCOM6, pnCOM7, pnCOM8);


    TDevice = class
      private
        handle : THandle;
      dllLoaded : Boolean;
      function byteAsString(arr : array of Byte) : String;
      function byteToString(arr : array of Byte) : String;
      function hexToInt(hexNum : String) : Integer;
      public
        constructor Create;
      function loadDll(dllName : PWideChar) : Boolean;
      destructor freeDll;

      function rfGetDLL_Ver (var rVer : String) : Integer;
      function rfControlBuzzer (DeviceAddr : Integer; BeepTime : Integer) : Integer;
      function rfInitComm (portname : TPortName; baud : LongInt) : Integer;
      function rfControlLED (DeviceAddr : Integer; LED1 : Integer; LED2 : Integer) : Integer;
      function rfRequest (DeviceAddr : Integer;  mode : Integer; var cardType : String) : Integer;
      function rfAnticoll (DeviceAddr : Integer; var serialNumber : String) : Integer;
  end;

  TDeviceUtil = class
    private
        const BEEP_TIME  : Integer = 10;
      const DELAY_TIME_BLANK : Integer = 100;
      const DELAY_TIME_LED : Integer = 2000;

    public
        procedure _MODE_OK(dev : TDevice);
      procedure _MODE_ERROR(dev : TDevice);
  end;

implementation

{ TDevice }

procedure LongDelay(DelayMs : Cardinal);
var  StopTime : Cardinal;
begin
  StopTime := GetTickCount + DelayMs;
  while (GetTickCount < StopTime) do
  begin
    Application.ProcessMessages;
    Sleep(1);
  end;
end;

function TDevice.byteAsString(arr: array of Byte): String;
var
  ind: Integer;
  val: String;
begin
   for ind := 0 to length(arr) do
            val := val + intToStr(arr[ind]);
   result := val + #0;
end;

function TDevice.byteToString(arr: array of Byte): String;
var
  ind: Integer;
  val: String;
begin
   for ind := 0 to length(arr) do
            val := val + chr(arr[ind]);
   result := val + #0;
end;

constructor TDevice.Create;
begin

end;

destructor TDevice.freeDll;
begin
  FreeLibrary(handle);
  dllLoaded := false;
end;

function TDevice.hexToInt(hexNum: String): Integer;
begin
    result := strToInt('$' + hexNum);
end;

function TDevice.loadDll(dllName: PWideChar): Boolean;
begin
    handle := LoadLibrary(dllName);
  if handle >= 32 then
      result := true
  else
    result := false;
    dllLoaded := result;
end;

function TDevice.rfAnticoll(DeviceAddr: Integer;
  var serialNumber: String): Integer;
var
    MF_Anticoll_DLL : Function (DeviceAddr : Integer;
                      snr : array of byte) : Integer; stdcall;
  ba : array [0..3] of Byte;
begin
    if (not dllLoaded) then exit;

    MF_Anticoll_DLL := GetProcAddress(handle, 'MF_Anticoll');
  result := MF_Anticoll_DLL(DeviceAddr, ba);
  serialNumber := byteAsString(ba);
end;

function TDevice.rfControlLED(DeviceAddr, LED1, LED2: Integer): Integer;
var
      MF_ControlLED_DLL : Function (DeviceAddr : Integer; LED1 : Integer;
                    LED2 : Integer) : Integer; stdcall;
begin
        if (not dllLoaded) then exit;

    MF_ControlLED_DLL := GetProcAddress(handle, 'MF_ControlLED');
    result := MF_ControlLED_DLL(DeviceAddr, LED1, LED2);
end;

function TDevice.rfControlBuzzer(DeviceAddr, BeepTime: Integer): Integer;
var
    MF_Control_Buzzer_DLL : Function (DeviceAddr : Integer;
                      BeepTime : Integer) : Integer; stdcall;
begin
    if (not dllLoaded) then exit;

    MF_Control_Buzzer_DLL := GetProcAddress(handle, 'MF_ControlBuzzer');
  result := MF_Control_Buzzer_DLL(DeviceAddr, BeepTime);
end;

function TDevice.rfGetDLL_Ver(var rVer: String): Integer;
var
  MF_GetDLL_Ver_DLL :    Function (rVer : array of byte) : Integer; stdcall;
  ba : array [0..31] of Byte;
begin
    if (not dllLoaded) then exit;

    MF_GetDLL_Ver_DLL := GetProcAddress(handle, 'MF_GetDLL_Ver');
    result := MF_GetDLL_Ver_DLL(ba);
  rVer := byteToString(ba) + #0;
end;

function TDevice.rfInitComm(portname: TPortName; baud: Integer): Integer;
var
      MF_InitComm_DLL : Function (portname : array of Byte; baud : Integer) : Integer; stdcall;
    ba: array [0..3] of Byte;
begin
        if (not dllLoaded) then exit;

    MF_InitComm_DLL := GetProcAddress(handle, 'MF_InitComm');
    case portName of
        pnUSB: begin
              ba[0] := ord('U'); ba[1] := ord('S'); ba[2] := ord('B'); ba[3] := ord('');
                   end;
        pnCOM1: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('1');
                   end;
        pnCOM2: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('2');
                   end;
        pnCOM3: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('3');
                   end;
        pnCOM4: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('4');
                   end;
        pnCOM5: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('5');
                   end;
        pnCOM6: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('6');
                   end;
        pnCOM7: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('7');
                   end;
        pnCOM8: begin
              ba[0] := ord('C'); ba[1] := ord('O'); ba[2] := ord('M'); ba[3] := ord('8');
                   end;

    end;

    result := MF_InitComm_DLL(ba, baud);
end;

function TDevice.rfRequest(DeviceAddr, mode: Integer;
  var cardType: String): Integer;
var
  MF_Request_DLL : Function (DeviceAddr : Integer;  mode : Integer;
                       CardType : array of byte) : Integer; stdcall;
    ba: array [0..1] of Byte;
begin
  if (not dllLoaded) then exit;

    MF_Request_DLL := GetProcAddress(handle, 'MF_Request');
  result := MF_Request_DLL(DeviceAddr, mode, ba);
  cardType := byteAsString(ba);

end;

{ TDeviceUtil }

procedure TDeviceUtil._MODE_ERROR(dev : TDevice);
begin
    dev.rfControlLED(0, 0, 1);
    dev.rfControlBuzzer(0, BEEP_TIME);
    LongDelay(DELAY_TIME_BLANK);
    dev.rfControlBuzzer(0, BEEP_TIME);
    LongDelay(DELAY_TIME_LED);
    dev.rfControlLED(0, 0, 0);
end;

procedure TDeviceUtil._MODE_OK(dev: TDevice);
begin
    dev.rfControlLED(0, 1, 0);
    dev.rfControlBuzzer(0, BEEP_TIME);
    LongDelay(DELAY_TIME_LED);
    dev.rfControlLED(0, 0, 0);
end;

end.

----------


## sina_p43

من نیاز شدید به درایور این دستگاه در و
یندوز سون 64 بیت دارم هرچی گشتم پیدانکردم...لطفا کمک کنید

----------


## عارف پردازشگران

سلام بر اساتید بنده هم می خوام با rft230 کار کنم منتها رو سیستمم (win7)نصب نمیشه چیکار کنم؟

----------


## mamoor

سلام منم این مشکل *رو داشتم . چه طوری می تونم از کلاس* *romixery استفاده کنم؟ لطفا جواب دهید.**
*

----------


## amirjigili

دوست عزیز من این مشکله با نرم افزار Driver Esay حل کردم اون خودش یه دیوار بهم داد اگه میخوای یه میل بهم بده تا برات دیوارشو بفرستم

----------


## amirjigili

> من يه مثال دمو برات آپلود كردم ، موفق باشي ...


سلام دوست عزیز میشه سورس این برنامه رو برام بذاری یا حداقل بگی چجوری اطلاعات رو از کارت میخونه؟

----------


## حسین خانی

با سلام

از دوستان کسی هست یک نمونه کد برای عملیات شناسایی کارت، خواندن و نوشتن بر روی کارت با دستگاه RFT-200 برای راهنمایی بزاره؟

تشکر

----------


## حسین خانی

دوستانی که تجربه کار با این دستگاه را دارید‏، لطفا جواب دهید !!!  :ناراحت: 

تشکر

----------


## romixery

سلام
اولاً اين دستگاه براي ويندوز 64 بيت درايور درست حسابي نداره. و بايد با پورت سريال بهش دستور بدين.
ولي اگه با USB و ويندوز 32 بيت استفاده مي‌كنيد، نبايد مشكلي داشته باشين.  اين كلاس كاملاً روشنه. با اين حال اگه مشكلي دارين بگين من راهنماييتون كنم. در كامنتها هم من يه مثال زدم. اين برنامه رو تحت دلفي XE و ويندوز 7 نوشتم و به خوبي كار ميكنه.
قطعه كدي كه بالا گذاشتم رو در يك فايل Unit قرار بدين و با نام Device ذخيره كنيد. سپس اين يونيت رو در پروژتون use كنيد و ازش استفاده كنيد. كار سختي نيست. فقط توجه كنيد كه DLL هاي مربوطه رو در كنار برنامه قرار بدين يا اينكه آدرسشون رو درست در تابع loadDLL قرار بدين.
اينم مثال:

var
   dev: TDevice;
begin
   dev := TDevice.create;
   dev.loadDLL('MF_API.dll');
   dev.rfInitComm(pnUSB, 9600);
   dev.rfControlBuzzer(0, 30);
   dev.freeDll;
end
توجه كنيد كه قبلش اين Device رو در پروژتون Uses كرده باشين.
موفق باشين

----------


## حسین خانی

> سلام
> اولاً اين دستگاه براي ويندوز 64 بيت درايور درست حسابي نداره. و بايد با پورت سريال بهش دستور بدين.
> ولي اگه با USB و ويندوز 32 بيت استفاده مي‌كنيد، نبايد مشكلي داشته باشين.  اين كلاس كاملاً روشنه. با اين حال اگه مشكلي دارين بگين من راهنماييتون كنم. در كامنتها هم من يه مثال زدم. اين برنامه رو تحت دلفي XE و ويندوز 7 نوشتم و به خوبي كار ميكنه.
> قطعه كدي كه بالا گذاشتم رو در يك فايل Unit قرار بدين و با نام Device ذخيره كنيد. سپس اين يونيت رو در پروژتون use كنيد و ازش استفاده كنيد. كار سختي نيست. فقط توجه كنيد كه DLL هاي مربوطه رو در كنار برنامه قرار بدين يا اينكه آدرسشون رو درست در تابع loadDLL قرار بدين.
> اينم مثال:
> 
> var
>    dev: TDevice;
> begin
> ...


با سلام
ممنون از راهنمایی شما
من با این کدی که گذاشتید مشکلی ندارم (حداقلش این که خطا نمیده  :لبخند: )! اما از چه کدی متوجه بشم که موقع اجرا فایل Dll و تنظیمات "پورت و کنترل بوق" درست بوده ؟؟؟ و اگه نشناخت یه پیغامی به کاربر داده بشه !!!
و دوم این که
 بعد از شناخت و ارتباط با دستگاه (به کمک کلاس شما و توابع موجود) بتونه سریال دستگاه رو بخونه - بوق رو به صدا در بیاره - هر دو LED رو روشن و خاموش کنه !
و با گذاشتن کارت جلوی دستگاه بتونه سریال کارت رو تشخیص بده و بریزه تو یه تکست باکس - یه بلاک از حافظه کارت رو بخونه - و عمل نوشتن رو بشه انجام داد.
همه این امکانات تو فایل ضمیمه (دمو خود تولید کننده دستگاه (فایل exe)) هستش - لطفا ببینید چطور عمل میکنن!!!

  دومین فایل ضمیمه یه تست از نحوه استفاده از کلاس و فراخوانی همه توابع رو آماده کردم!(فایلهای dll رو بدلیل محدود بودن فایل آپلود شده در سایت نذاشتم - فک کنم تو پستای قبلی دوستان گذاشته باشن)
لطفا راهنمایی کنید که از چه پارامترهایی هنگام فراخوانی توابع استفاده کنم و نتیجه شو تو لیست باکس بریزم؟

دستگاه: RFT - 200
سیستم عامل: Win7 - 64bit
دلفی: XE2
پورت سریال(COM4) رو هم میشناسه !!!

ممنون جناب دانشور

----------


## meysam_abbasinia

سلام
دوستان کسی می دونه چطور باید کد های key a و یا  key b رو تغییر داد برای بالاتر رفتن امنیت اطلاعات

----------


## romixery

سلام
ببينين تمام توابعي كه از DLL فراخواني ميشن، يك مقداري رو بر ميگردونن كه با توجه به مستندات توسعه براي دستگاه، و همچنين مقدار برگردانده شده، ميشه فهميد كه دستگاه اررور داده يا خير. متأسفانه من اين مستندات رو ندارم وگرنه براتون آپ ميكردم.
براي مثال از اين كد براي دريافتن اينكه دستگاه شناخته شده است يا خير يا اينكه DLL يافت شده يا نه استفاده كنيد:
function TreaderFrame.initDevice : boolean;
begin
  device := TDevice.Create;
  if (not device.loadDll('MF_API.dll')) then
  begin
    fShowMessage('خطا در برقراري ارتباط', mtError);
    result := false;
    exit;
  end;
  if (device.rfInitComm(pnUSB, 9600) = 22) then
  begin
    fShowMessage('دستگاه يافت نشد', mtError);
    result := false;
    exit;
  end;
  result := true;
end;
اما در مورد دوم، ببينيد براي كار با دستگاه بايد توابع ذيل رو به ترتيب صدا بزنين:
device.loadDll // for load DLL
device.rfInitComm(pnUSB, 9600) // For port and boand set
device.rfRequest(0 , 0, stringVarible) // for Address to access to device and check is tag ready for reading?
device.rfAnticoll(0, tagCode); // for read tag code and put that in "tagCode" argument
توجه كنيد كه هر بار بخواين يه تگ رو بخونيد نياز نيست DLL رو لود كنيد و initComm‌رو صدا بزنيد. كدهايي كه براي خواندن كد استفاده ميشن، rfRequest و rfAntiColl هست. يعني هر بار بخواين كد بخونيد از اين توابع استفاده كنيد. براي مثال، تابع زير رو من در يك تايمر قرار دادم تا مدام چك كنه كه آيا تگي وجود داره يا خير و اگه داره اون رو بخونه و فرم مربوطه رو ببنده:

procedure TreaderFrame.readerTimerTimer(Sender: TObject);
var ct : String;
begin
	if (device.rfRequest(0, 0, ct)  = 0) then
  begin
	  device.rfAnticoll(0, tagCode);
  	readerTimer.Enabled := false;
		deviceUtile._MODE_OK(device);
    ModalResult := mrOk;
  end;
end;



براي خاموش روشن كردن LED دستگاه از rfControlLED استفاده كنيد. براي مثال كد زير LED اول و دوم دستگاه را خاموش مي كند. و دومين خط دومين LED رو روشن ميكنه:

rfControlLED(0, 0, 0);
dev.rfControlLED(0, 0, 1);


در مورد صدا هم از rfControlBuzzer استفاده كنيد. 
براي اينكه خودتون رو راحت كنيد، هر جا آرگومان deviceAddress بود، 0 بدين. همه چيز كاملاً روشنه ديگه.
موفق باشين.

----------


## حسین خانی

سلام

از راهنمایی خوبتون خیلی ممنونم!
اما فعلا جواب نگرفتم !!!  :ناراحت: 
آیا این کدهایی که در زیر من استفاده کردم ایرادی داره؟
ممنون میشم طوری راهنمایی کنید که نشون بده چطوری نتیجه هر تابع در یک شی تکست نشون داده بشه.

procedure TForm1.But_OpenPortClick(Sender: TObject);
var
ct,tagCode : String;
Device: TDevice;
DeviceUtile:TDeviceUtil;
begin
Device := TDevice.create;
Device.loadDLL('MF_API.dll');
Device.rfInitComm(pnCOM4, 9600);
Device.initDevice;
Device.rfControlBuzzer(0, 30);
Device.rfControlLED(0, 0, 0);
Device.rfRequest(0 , 0, ct);
Device.rfAnticoll(0, tagCode);
//Device.freeDll;
 
    if (device.rfRequest(0, 0, ct)  = 0) then
  begin
      Device.rfAnticoll(0, tagCode);
    Timer1.Enabled := false;
        DeviceUtile._MODE_OK(Device);
    ModalResult := mrOk;
  end;
end;

----------


## حسین خانی

سلام مجدد
انگار که اصلا دستگاه رو نمیشناسه !!!  :ناراحت: 

چون موقع تریس کردن تابع rfRequest پارامتراهایی که از Dll میخونه با وقتی که دستگاه اصلا به سیستم وصل نیست یکی هست و هیچ خروجی نداره
مثلا همین کد زیر رو لطفا تست کنید.

procedure TForm1.Timer1Timer(Sender: TObject);
var
ct,tagCode : String;
Dev100: TDevice;
DeviceUtile100:TDeviceUtil;
begin
Dev100 := TDevice.create;
Dev100.loadDLL('MF_API.dll');
Dev100.rfInitComm(pnCOM4, 9600);
Dev100.initDevice;
Dev100.rfControlBuzzer(0, 30);
Dev100.rfControlLED(0, 0, 0);
Dev100.rfRequest(0 , 0, ct);
Dev100.rfAnticoll(0, tagCode);


    if (Dev100.rfRequest(0, 0, ct)  = 0) then
  begin
      Dev100.rfAnticoll(0, tagCode);
    Timer1.Enabled := false;
        DeviceUtile100._MODE_OK(Dev100);
    ModalResult := mrOk;

    ListBox1.Items.Add('CardType: '+IntToStr(Dev100.rfRequest(0, 0, ct)));
    ListBox1.Items.Add('SNCard: '+IntToStr(Dev100.rfAnticoll(0, tagCode)));
    Dev100.freeDll;
  end
  else
  ListBox1.Items.Add('No Card for read');
end;

----------


## حسین خانی

> Dev100.rfInitComm(pnCOM4, 9600);
> Dev100.initDevice;
> Dev100.rfControlBuzzer(0, 30);


بیشتر که بررسی کردم متوجه شدم تابع rfInitComm درست عمل نمیکنه و حتی خطا هم نمیده !!!
نمیدونم جناب دانشور آیا این تابع رو بدون مشکل اجرا میگیرید یا نه؟
اگه شما مشکلی ندارید به نظرتون مشکل کجاست؟
از پورت نیست به نظرتون؟؟؟

راستش اینطور که من متوجه شدم تابع rfInitComm وقتی که پورت رو نمیشناسه مقدار 34 رو برمیگردونه و اگر پورت موردنظر درست ست شده باشه مقدار صفر رو بر میگردونه !!!
با این کد میتونید مقدار برگشتی رو ببینید:
Edit1.Text := IntToStr(dev.rfInitComm(pnCOM8, 9600)); ولی تو سیستم من پورت Com4 رو شناخته و موندم که کجاش گیره !!!
توی 3 تا سیستم چک کردم (2 تا با ویندوز 7 و 64 بیت + 1 ویندوز xp )
و اگه احتمالا از درایور باشه؟ آیا درایور مناسبی دارید تا به نتیجه برسیم؟

----------


## romixery

سلام
ببينيد دوست عزيز، كدهايي كه گذاشتين مشكلي نداره. و مطمعناً دستگاه رو سيستم شما نشناخته يا درست نصب نشده. براي اينكه مطمئن بشين، از MFDemo استفاده كنيد و در تب Mifire همين توابع رو به ترتيب صدا بزنيد «بر روي كليدهاي مربوطه كليك كنيد». اگر اررور نداد يعني شناخته و در غير اين صورت، مشكل نه از دلفي هست و نه از كدهاي شما. مشكل از دستگاه و سيستمتونه.
در ضمن من اين كلاسي رو كه نوشتم رو با USB تست كردم. اما مطمئناً با پورت COM‌ هم نبايد مشكلي داشته باشه.
آرگومان 2 يا 3 تابع rfControlLEd رو به 1 كنيد كه حداقل يه چراغ روشن بشه. چون وقتي همه چراغها خاموشن، دوباره خاموش كردن اونها فايده اي نداره.

----------


## حسین خانی

> براي اينكه مطمئن بشين، از MFDemo استفاده كنيد و در تب Mifire همين توابع رو به ترتيب صدا بزنيد «بر روي كليدهاي مربوطه كليك كنيد». اگر اررور نداد يعني شناخته و در غير اين صورت، مشكل نه از دلفي هست و نه از كدهاي شما. مشكل از دستگاه و سيستمتونه.
> در ضمن من اين كلاسي رو كه نوشتم رو با USB تست كردم. اما مطمئناً با پورت COM‌ هم نبايد مشكلي داشته باشه.


سلام
با MFDemo تست که میکنم درسته درسته (با پورت COM4: هم میشناسه دستگاه رو‏ - بوق میزنه - چراغا روشن و خاموش میشن و سریال کارت رو هم میخونه)
اما با همین کدهایی که شما هم تائید میکنید خروجی نمیگیرم !!!  :افسرده: 

با این شرایط به نظر هم پورت درسته و هم دستگاه و کارت سالم هستند.

اگه فک میکنید از درایور هست لطفا درایوری که خودتون استفاده میکنید رو آپلود کنید 
ممنون از لطفتون

----------


## حسین خانی

> if (device.rfInitComm(pnUSB, 9600) = 22) then
>   begin
>     fShowMessage('دستگاه يافت نشد', mtError);
>     result := false;
>     exit;
>   end;
>   result := true;



یه نکته دیگه این که شما واسه کنترل تشخیص دستگاه شرط مربوطه رو 22 قرار دادید !!!
چرا 22 ؟؟؟
آیا این عدد مقدار بازگشتی پورت pnUSB هست؟ و آیا همه جا ثابته؟
  تریس که میکنم:
پورتهای pnCom1  تا  pnCom8 رو 34 برمیگردونه (چه دستگاه به سیستم وصل باشه و یا نباشه)
ولی پورت pnUSB مقدار صفر بر میگردونه (چه دستگاه به سیستم وصل باشه و یا نباشه)!

----------


## حسین خانی

سلام مجدد

درایوری که من دارم و ازش استفاده میکنم رو ضمیمه میکنم(اما جواب نمیگیرم ازش)
دوستان اگه درایور مناسبی دارند لطفا به منم بدن

با تشکر

----------


## حسین خانی

این توابع رو هم نوشتم ولی مثل تابع شما، 34 رو برمیگردونه !!!  :متفکر: 

Function MF_InitComm (portname : String; baud : LONG) : LONG;  external 'MF_API.dll' ;
Function MF_ControlBuzzer (DeviceAddr : Integer; var BeepTime : SHORT) : Integer;  external 'MF_API.dll' ;

procedure TForm1.But_buzzClick(Sender: TObject);
var
a : SHORT;
begin
  Edit2.Text := IntToStr(MF_InitComm('COM4', 9600));
        a := 30;
  MF_ControlBuzzer(0, a);
end;

----------


## حسین خانی

با سلام

سایر دوستان اگر تجربه ای تو این زمینه دارید! لطفا تو این بحث شرکت کنید

----------


## mostafa_tak2000

سلام به همگی
دوستان میدونم تاریخ این تایپیک خیلی وقته گذشته و مطالبش عالی بود . من به تازگی از این مدل دستگاهها خریدم ولی نیاز خیلی زیادی به کامپوننت تحت دات نتش دارم . میخوام از این دستگاه در یک سایت که با زبان asp.net است استفاده کنم . 
اگه امکانش هست کمکم کنید

----------


## davoodghafoory

سلام من دستگاه RFT-200 دارم و USB هست . چطوری میتونم در Visual Basic 6.0 فراخوانی کنم ممنون میشوم اگر کمک کنید ...

----------


## davoodghafoory

سلام کسی هست راهنمایی کنه.  که از نوع USB داخل برنامه نویسی  Visual Basic  چطوری میشه فراخوانی کرد. ممنون

----------


## نیما عطایی

سلام دوستان 
من توی ویندوز xp و با پورت usb و با زبان C#‎ پروژم بدون هیچ مشکلی کار میکنه
اما جدیدا نیاز به کار کردن توی ویندوز 7 دارم
تو ویندوز 7 حتی درایور هم نصب نمیشه 
مشه راهنمایی کنید 
ایمیل من nimasoftco@gmail.com

----------


## نیما عطایی

سلام
من با ویندوز 7 و برای C#‎ مشکل دارم
درایور که نصب نمیشه
کسی میتونه راهنمایی کنه و یه مثال برام بفرسته
متشکرم
nimasoftco@gmail.com

----------


## AmirSky

باسلام
این فایلهای EasyD12 و MF_API را ممکنه برام بفرستید 
من نتونستم بدست بیارم
ممنون

----------


## mahtab2007

سلام. ممنون میشم اگر منا بیشتر راهنمایی کنید. مشکل من نحوه نوشتن یا خوندن از کارته. ممنونم اگه زود جواب بدید.

----------


## mehr_83

سلام. من نیاز به درایور این دستگاه برای ویندوز xp دارم. RTF--200 
از کجا میتونم دانلود کنم؟ تو سایت سازندش نتونستم پیدا کنم

----------


## SayeyeZohor

> من مشکل را حل کردم
> اگر دوست داشین Email بدین تا راهنمای استفاده را برایتون ارسال کنم


دوست عزیز راه حلتون رو در صورت صلاحدید در این تاپیک برای استفاده دوستان بگذارید

با تشکر

----------


## mostafa5

سلام به همه 
من از اول این بحث نخوندم ببینم چی شده ولی منم یه زمانی سر این مسئله خیلی اذیت شدم یه نمونه سورس میذارم 
یادمه مشکل در ارتباط با دی ال ال ها سر متغیر ها بود.
من دی ال ال ها رو هم گذاشتم یه موقع به مشکل نخورید البته دو تای اصلی رو ، در این نمونه سورس می تونید مقدار اعتبار کارت رو کاهش و یا افزایش بدین

----------


## یوسف زالی

یک پست، یک کار خوب!
آفرین به شما که کدت رو توزیع کردی.

----------


## surushm

> سلام به همه 
> من از اول این بحث نخوندم ببینم چی شده ولی منم یه زمانی سر این مسئله خیلی اذیت شدم یه نمونه سورس میذارم 
> یادمه مشکل در ارتباط با دی ال ال ها سر متغیر ها بود.
> من دی ال ال ها رو هم گذاشتم یه موقع به مشکل نخورید البته دو تای اصلی رو ، در این نمونه سورس می تونید مقدار اعتبار کارت رو کاهش و یا افزایش بدین


دوست عزیز
خیلی متشکر از اینکه تجربه خودتان را با دیگران به اشتراک گذاشتید.
اما من برنامه شما را با اشکال کامپوننت های .....s باز میکنم.
این کامپوننت از چه مجموعه ای است.

----------


## gbg

من دنبال درایورش میگشتم این پست قدیمی رو دیدم
خواستم بگم بدون DLL هم میشه
من خودم مستقیم کار میکنم باهاش

----------


## khatereha7

سلام و وقت بخير
من تمامي مطالب مربوط به اين تالار را به دقت خوندم من مشكلي با فرخواني dll و يا توابع آن ندارم برنامه من راحت كار ميكنه و ارور هم نمي دهد فقط نمي دانم چرا به هيچ وجه نمي توانم با دستگاه ارتباط برقرار كنم دستگاه من با پورت Usb وصل شده و درايور دستگاه درست نصب شده و دستگاه را روي كام 8 شناخته مشكلي از اين بابت ندارم ولي باز هم هيچ يك از توابع كار نمي كنند اگر كسي اطلاعاتي در اين ضمينه دارد لطفا به من كمك كند

----------


## Valadi

با سلامر
من كار كردم مشكلي نداشتم كد تون يا نمونه برنامه قرار بديد تا ببينم

----------


## mostafa5

> دوست عزیز
> خیلی متشکر از اینکه تجربه خودتان را با دیگران به اشتراک گذاشتید.
> اما من برنامه شما را با اشکال کامپوننت های .....s باز میکنم.
> این کامپوننت از چه مجموعه ای است.


از سری کامپوننت های alphaskin استفاده کردم

----------


## a.sazgar

سلام کسی *RFT-200  با سی شارپ زده ?*

----------


## mmbguide

سلام

دوستان من هنوز موفق به نصب درایور تو ویندوز 7 x64 نشدم. آیا راه حلی داره.
درایوری که دانلود کردم فایل های زیر داخلش بود ولی بعد از نصب 64 بیتی همچنان دستگاه برای ویندوز شناخته شده نیست.

Untitled.png

----------

