PDA

View Full Version : نحوه استفاده از دستگاه RFT-200



Batman
چهارشنبه 28 بهمن 1388, 08:44 صبح
با سلام
دیروز یه دستگاه reader با مدل اشاره شده گرفتم.همراه اون یکسری فایل dll هم دادن.CC3260 و CC3260MT و EasyD12 و MF_API.
چجوری باید این dllها رو load کنم.یه چیزهایی توی سایت پیدا کردم.مثل این:
http://barnamenevis.org/forum/showthread.php?t=166661&highlight=dll
منتها متوجه نشدم که چجوری باید dll رو رجیستر کنم؟
فقط میخوام از دستگاه برای نوشتن و خواندن بارکد استفاده کنم.
در ضمن من توابع داخل فایلهای dll رو هم ندارم.
لطفا کمکم کنید.
ممنونم.

Batman
چهارشنبه 28 بهمن 1388, 12:27 عصر
یه فایل pdf هم همراهش هست که فکر میکنم توابع رو توضیح داده باشه.
لطفا توابع ارسال و دریافت داده رو معرفی کنید..فکر کنم به زبان c باشه.
ممنونم

BORHAN TEC
چهارشنبه 28 بهمن 1388, 17:24 عصر
منتها متوجه نشدم که چجوری باید dll رو رجیستر کنم؟
نيازي به رجيستر كردن نداري. فقط كافي است كه Dll ها رو در كنار برنامه خودت قرار بدي. البته اگه دوست داري كه Dll رو در يك پوشه ي ديگه قرار بدي بايد در اعلان تابعي كه مي نويسي مسير نسبي Dll رو نسبت به فايل اجرايي برنامه بنويسي:
به عنوان مثال:

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

BORHAN TEC
چهارشنبه 28 بهمن 1388, 17:54 عصر
به عنوان مثال تابعي كه در فايل 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
چهارشنبه 28 بهمن 1388, 19:12 عصر
با تشکر از شما
ببینید من دستگاه رو با پورت 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
چهارشنبه 28 بهمن 1388, 19:33 عصر
این هم فایلهای dll

Batman
جمعه 30 بهمن 1388, 10:29 صبح
آقا تورو خدا یکی کمک کنه

BORHAN TEC
جمعه 30 بهمن 1388, 10:49 صبح
من اين كدها رو تست كردم . به نظر من مشكل از جاي ديگه هست. شما در اينجا از روش فراخواني ايستا براي بكارگيري توابع درون DLL استفاده كرده ايد. اگر اين قسمت برنامه مشكل داشت برنامه شما اجرا نمي شد و اين در حالي است كه برنامه شما اجرا مي شود. من پيشنهاد مي كنم كه براي امتحان يك پروژه فاقد كدهاي اضافي توليد كنيد و اين تكه كدها را در آن تست كنيد. يا به عنوان روش دوم از بلوك try..except به شكل زير استفاده كنيد تا ببينيد كه مشكل از كجا است.


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

BORHAN TEC
جمعه 30 بهمن 1388, 11:00 صبح
يك سوال: آيا دستگاه شما براي اين كه درست كار كند نياز به نصب يك درايور مخصوص ندارد؟

Batman
یک شنبه 02 اسفند 1388, 08:42 صبح
يك سوال: آيا دستگاه شما براي اين كه درست كار كند نياز به نصب يك درايور مخصوص ندارد؟
چرا من درایور رو نصب کردم.مشکلی با درایور نداره.

Batman
یک شنبه 02 اسفند 1388, 08:47 صبح
من اين كدها رو تست كردم . به نظر من مشكل از جاي ديگه هست. شما در اينجا از روش فراخواني ايستا براي بكارگيري توابع درون DLL استفاده كرده ايد. اگر اين قسمت برنامه مشكل داشت برنامه شما اجرا نمي شد و اين در حالي است كه برنامه شما اجرا مي شود. من پيشنهاد مي كنم كه براي امتحان يك پروژه فاقد كدهاي اضافي توليد كنيد و اين تكه كدها را در آن تست كنيد. يا به عنوان روش دوم از بلوك try..except به شكل زير استفاده كنيد تا ببينيد كه مشكل از كجا است.


try
{ Write Code Here }
except on E: Exception do
ShowMessage(e.Message);
end;
دوست عزیز من با این روش کار نکردم.ممکنه یه نمونه کد کامل بذارید.(از همین بلاک)

دلفــي
یک شنبه 02 اسفند 1388, 09:54 صبح
اگه منظورت استفاده از اين دستگاهه :

http://www.smart-tap.com/components/com_virtuemart/shop_image/product/RFT_200_49db6d93c8a34.jpg

شما نياز به هيچ گونه 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
یک شنبه 02 اسفند 1388, 12:26 عصر
با سلام و تشکر از شما
من از پورت usb استفاده میکنم.آیا کامپوننت جواب میده؟

دلفــي
یک شنبه 02 اسفند 1388, 13:14 عصر
با سلام و تشکر از شما
من از پورت usb استفاده میکنم.آیا کامپوننت جواب میده؟

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

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

دلفــي
یک شنبه 02 اسفند 1388, 13:25 عصر
من يه مثال دمو برات آپلود كردم ، موفق باشي ...

Batman
یک شنبه 02 اسفند 1388, 16:31 عصر
من يه مثال دمو برات آپلود كردم ، موفق باشي ...
برنامه شما خطای زیر رو میده:

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
یک شنبه 02 اسفند 1388, 19:40 عصر
راستی منظور از نوع داده AnsiChar چیه؟

Batman
یک شنبه 02 اسفند 1388, 21:29 عصر
دوست عزیز شما ظاهرا برنامه ای که نوشتید فقط بارکد رو میخونه.درسته؟
من موفق شدم که با دستگاه ارتباط برقرار کنم.(Port 3).منتها نمیدونم چجوری باید بارکد رو بخونم.در واقع اون دو تا متغیر از نوعهای AnsiChar و Count که از نوع integer هستش رو بیشتر توضیح بدید.و اینکه این procedure چجوری باید فرواخونی بشه.مثلا توی Button1 کد زیر درسته؟

ComPort1.OnRxChar(Owner,0);
یا باید این کد رو درون یه Timer نوشت؟
ممنونم.

دلفــي
دوشنبه 03 اسفند 1388, 08:03 صبح
دوست عزیز شما ظاهرا برنامه ای که نوشتید فقط بارکد رو میخونه.درسته؟

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
دوشنبه 03 اسفند 1388, 08:22 صبح
من از ویندوز 7 استفاده میکنم.اما این قسمتی که توی device manager بهش اشاره کردید رو نمیتونم پیدا کنم.اما تو همون قسمت universal Serial Controllers برای دستگاه port3 رو معرفی کرده.در ضمن میشه درباره اون دو تا پارامتر هم توضیح بدید؟
ممنونم.

Batman
دوشنبه 03 اسفند 1388, 09:08 صبح
من موفق شدم کامپوننت رو نصب کنم.دقیقا همون چیزی هستش که گفتید.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

دلفــي
دوشنبه 03 اسفند 1388, 10:04 صبح
من موفق شدم کامپوننت رو نصب کنم.دقیقا همون چیزی هستش که گفتید.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


نوشتن اين كد :


ComPort1.OnRxChar(Owner,0);

اضافيه !

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


Str:='123';

Batman
دوشنبه 03 اسفند 1388, 10:15 صبح
نوع کارتهای شما چی بوده؟
یعنی اگه من از نوع کارتهای شما داشته باشم و روبه روی دستگاه بگیرم و سپس اون کد رو اجرا کنم محتویات کارت رو داخل Memo میتونم بببینم؟

دلفــي
دوشنبه 03 اسفند 1388, 10:47 صبح
نوع کارتهای شما چی بوده؟


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



یعنی اگه من از نوع کارتهای شما داشته باشم و روبه روی دستگاه بگیرم و سپس اون کد رو اجرا کنم محتویات کارت رو داخل Memo میتونم بببینم؟
بله ، فقط يه كم بايد در نوشته بالاي شما تغيير داد و اينطوري نوشت :

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

Batman
دوشنبه 03 اسفند 1388, 12:31 عصر
کارت من از نوع Mifare 1k هستش؟به خاطر همینه که میگم 5 مرحله داره.

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

Batman
دوشنبه 03 اسفند 1388, 15:22 عصر
دوست عزیز میشه کامپوننت comportی رو که خوتون استفاده کردید رو واسم Upload کنید؟ممنونم

BORHAN TEC
دوشنبه 03 اسفند 1388, 19:07 عصر
اين هم يك مثال از بلوك 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
سه شنبه 04 اسفند 1388, 01:01 صبح
من یه درخواست Source code برای دلفی به سایت سازنده دستگاه دادم . اونها هم یه نمونه برام فرستادن.منتها من که چیزی ازش سر در نیاوردم.لطفا یه نگاهی بهش بندازید.
http://rapidshare.com/files/354406545/RF_reader_sample_code.rar.html

دلفــي
سه شنبه 04 اسفند 1388, 11:14 صبح
من دو نوع tag براتون میذارم لطفا بگید که کدوم یک از Tagهارو امتحان کردید.
tag اولی tag از نوع read/write هستش و tag دومی برای حضور و غیاب یه اداره هستش.
در ضمن من توی Procedure مربوط به RxOnChar کدهایی رو که گفتید نوشتم.خوب حالا چجوری و کجا Procedure رو فراخونی کنم؟

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

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

غلامرضا شریفی
پنج شنبه 20 اسفند 1388, 21:33 عصر
من مثال كامل كار با كارتهاي مايفر و password دار كردن ركوردهاي آنها را با vb دارم اگر خواستيد براتون بگذارم

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

غلامرضا شریفی
شنبه 07 فروردین 1389, 09:05 صبح
دستگاه من از طریق کابل USB به سیستم (labtop) کانکت می شه و بعد از اتصال و نصب دریوار مربوطه اصلاً در Device Manager گزینه ای مربوط به Port(چه سریال و چه موازی) وجود نداره که بطونم از طریق TComPort بهش دسترسی پیدا کنم.
وقتي با usb اتصال برقرار ميشود نيازي به باز كردن port نيست فقط بجاي com3وارد ميكنيد usb

disappear
دوشنبه 07 تیر 1389, 10:05 صبح
سلام
دوستان عزیز من هم مشکل دوستان را داشتم که با جستجو به تاپیک شما برخوردم .
آیا کسی مشکل دسترسی به حافظه را حل کرد ؟ من سورس #C و VB رو اجرا می کنم درسته ولی دلفی نه ؟

aliasghar
دوشنبه 07 تیر 1389, 10:23 صبح
من مشکل را حل کردم
اگر دوست داشین Email بدین تا راهنمای استفاده را برایتون ارسال کنم

disappear
دوشنبه 07 تیر 1389, 10:39 صبح
من ایمیل شما رو پیدا نکردم ولی در پیغام خصوصی ایمیل خودم را فرستادم
با تشکر فراوان .

disappear
سه شنبه 08 تیر 1389, 11:56 صبح
Aliasghar جان هنوز منتظریمــــــــــــــــــ ـــــــــــــــــــــــــ ــا . هیچ ایمیلی از شما دریافت نکردم .

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

hamid_shrk
پنج شنبه 01 مهر 1389, 11:41 صبح
تورو خدا کامپوننت DsgnCport7.bpl رو بهم بدین

hesarkhani@gmail.com

makhof
شنبه 03 مهر 1389, 20:01 عصر
سلام
چرا قسم میدی ؟:لبخند:
بیا یه dll بدم برو مستقیم با RFT200 کار کن خودش مستقیم همه فانکشناشو ران می کنه (البته اگه مشکلتون همین بود)

emdadgar_shahed
پنج شنبه 18 آذر 1389, 13:45 عصر
سلام
ببخشید من این فایل شما را دانلود و اجرا کردم ولی هم فایل اجرایی که فرستادید و هم موقع اجرای برنامه از طریق سورس پیغام زیر داده میشه و برنامه دستگاه را نمیشناسه و برنامه اجرا نمیشه .

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


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

emdadgar_shahed
پنج شنبه 18 آذر 1389, 14:21 عصر
سلام
ببخشید من این فایل شما را دانلود و اجرا کردم ولی هم فایل اجرایی که فرستادید و هم موقع اجرای برنامه از طریق سورس پیغام زیر داده میشه و برنامه دستگاه را نمیشناسه و برنامه اجرا نمیشه .

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


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

emdadgar_shahed
شنبه 20 آذر 1389, 15:56 عصر
آقا کسی نیست جواب منو بده ...
دو روز گذشته و هیچ کس جواب منو نداده ... :گریه: :گریه: :گریه:

makhof
یک شنبه 21 آذر 1389, 15:09 عصر
سلام دوست عزیز

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

با تشکر

emdadgar_shahed
یک شنبه 21 آذر 1389, 15:36 عصر
سلام
این کار را هم کردم ولی باز هم همون پیغام را نشون میده !!!!!!!

63493

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

massoud_tekieh
پنج شنبه 14 مهر 1390, 21:37 عصر
سلام
من درایور دستگاه rft200 رو نیاز دارم
اگر ممکن راهنمایی کنین
ممنون

moh3n_42
شنبه 23 مهر 1390, 16:46 عصر
با سلام خدمت دوستان عزيز. آقا من ميخوام با C# برنامه اي بنويسم كه بتونم با اين دستگاه كار كنم. اما متاسفانه DLL هاي ارائه شده براي زبان C++ بوده و جوابگو براي C# نيس. كسي هست بتونه كمك كنه ؟

romixery
پنج شنبه 04 اسفند 1390, 09:19 صبح
سلام.
چون خودم خيلي عذاب كشيدم تا اين دستگاه و دستگاه 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
یک شنبه 28 اسفند 1390, 01:07 صبح
من نیاز شدید به درایور این دستگاه در و
یندوز سون 64 بیت دارم هرچی گشتم پیدانکردم...لطفا کمک کنید

عارف پردازشگران
شنبه 27 خرداد 1391, 21:50 عصر
سلام بر اساتید بنده هم می خوام با rft230 کار کنم منتها رو سیستمم (win7)نصب نمیشه چیکار کنم؟

mamoor
جمعه 10 شهریور 1391, 10:39 صبح
سلام منم این مشکل رو داشتم . چه طوری می تونم از کلاس (http://barnamenevis.org/member.php?56028-romixery)romixery استفاده کنم؟ لطفا جواب دهید. (http://barnamenevis.org/member.php?56028-romixery)

amirjigili
یک شنبه 16 مهر 1391, 09:57 صبح
دوست عزیز من این مشکله با نرم افزار Driver Esay (http://www.drivereasy.com) حل کردم اون خودش یه دیوار بهم داد اگه میخوای یه میل بهم بده تا برات دیوارشو بفرستم

amirjigili
یک شنبه 16 مهر 1391, 11:23 صبح
من يه مثال دمو برات آپلود كردم ، موفق باشي ...

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

حسین خانی
دوشنبه 06 آذر 1391, 16:55 عصر
با سلام

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

تشکر

حسین خانی
سه شنبه 07 آذر 1391, 19:18 عصر
دوستانی که تجربه کار با این دستگاه را دارید‏، لطفا جواب دهید !!! :ناراحت:

تشکر

romixery
چهارشنبه 15 آذر 1391, 10:44 صبح
سلام
اولاً اين دستگاه براي ويندوز 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 كرده باشين.
موفق باشين

حسین خانی
چهارشنبه 15 آذر 1391, 17:59 عصر
سلام
اولاً اين دستگاه براي ويندوز 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 كرده باشين.
موفق باشين

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

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

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

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

meysam_abbasinia
پنج شنبه 16 آذر 1391, 10:57 صبح
سلام
دوستان کسی می دونه چطور باید کد های key a و یا key b رو تغییر داد برای بالاتر رفتن امنیت اطلاعات

romixery
پنج شنبه 16 آذر 1391, 11:55 صبح
سلام
ببينين تمام توابعي كه از 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 بدين. همه چيز كاملاً روشنه ديگه.
موفق باشين.

حسین خانی
جمعه 17 آذر 1391, 12:39 عصر
سلام

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

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;

حسین خانی
جمعه 17 آذر 1391, 16:24 عصر
سلام مجدد
انگار که اصلا دستگاه رو نمیشناسه !!! :ناراحت:

چون موقع تریس کردن تابع 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;

حسین خانی
جمعه 17 آذر 1391, 20:12 عصر
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
شنبه 18 آذر 1391, 10:10 صبح
سلام
ببينيد دوست عزيز، كدهايي كه گذاشتين مشكلي نداره. و مطمعناً دستگاه رو سيستم شما نشناخته يا درست نصب نشده. براي اينكه مطمئن بشين، از MFDemo استفاده كنيد و در تب Mifire همين توابع رو به ترتيب صدا بزنيد «بر روي كليدهاي مربوطه كليك كنيد». اگر اررور نداد يعني شناخته و در غير اين صورت، مشكل نه از دلفي هست و نه از كدهاي شما. مشكل از دستگاه و سيستمتونه.
در ضمن من اين كلاسي رو كه نوشتم رو با USB تست كردم. اما مطمئناً با پورت COM‌ هم نبايد مشكلي داشته باشه.
آرگومان 2 يا 3 تابع rfControlLEd رو به 1 كنيد كه حداقل يه چراغ روشن بشه. چون وقتي همه چراغها خاموشن، دوباره خاموش كردن اونها فايده اي نداره.

حسین خانی
شنبه 18 آذر 1391, 14:36 عصر
براي اينكه مطمئن بشين، از MFDemo استفاده كنيد و در تب Mifire همين توابع رو به ترتيب صدا بزنيد «بر روي كليدهاي مربوطه كليك كنيد». اگر اررور نداد يعني شناخته و در غير اين صورت، مشكل نه از دلفي هست و نه از كدهاي شما. مشكل از دستگاه و سيستمتونه.
در ضمن من اين كلاسي رو كه نوشتم رو با USB تست كردم. اما مطمئناً با پورت COM‌ هم نبايد مشكلي داشته باشه.

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

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

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

حسین خانی
شنبه 18 آذر 1391, 15:00 عصر
if (device.rfInitComm(pnUSB, 9600) = 22) then
begin
fShowMessage('دستگاه يافت نشد', mtError);
result := false;
exit;
end;
result := true;




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

حسین خانی
یک شنبه 19 آذر 1391, 08:33 صبح
سلام مجدد

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

با تشکر

حسین خانی
یک شنبه 19 آذر 1391, 09:48 صبح
این توابع رو هم نوشتم ولی مثل تابع شما، 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;

حسین خانی
یک شنبه 19 آذر 1391, 18:05 عصر
با سلام

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

mostafa_tak2000
سه شنبه 28 آذر 1391, 00:38 صبح
سلام به همگی
دوستان میدونم تاریخ این تایپیک خیلی وقته گذشته و مطالبش عالی بود . من به تازگی از این مدل دستگاهها خریدم ولی نیاز خیلی زیادی به کامپوننت تحت دات نتش دارم . میخوام از این دستگاه در یک سایت که با زبان asp.net است استفاده کنم .
اگه امکانش هست کمکم کنید

davoodghafoory
دوشنبه 09 اردیبهشت 1392, 16:49 عصر
سلام من دستگاه RFT-200 دارم و USB هست . چطوری میتونم در Visual Basic 6.0 فراخوانی کنم ممنون میشوم اگر کمک کنید ...

davoodghafoory
دوشنبه 09 اردیبهشت 1392, 17:01 عصر
سلام کسی هست راهنمایی کنه. که از نوع USB داخل برنامه نویسی Visual Basic چطوری میشه فراخوانی کرد. ممنون

نیما عطایی
جمعه 11 مرداد 1392, 23:56 عصر
سلام دوستان
من توی ویندوز xp و با پورت usb و با زبان C# پروژم بدون هیچ مشکلی کار میکنه
اما جدیدا نیاز به کار کردن توی ویندوز 7 دارم
تو ویندوز 7 حتی درایور هم نصب نمیشه
مشه راهنمایی کنید
ایمیل من nimasoftco@gmail.com

نیما عطایی
شنبه 12 مرداد 1392, 00:02 صبح
سلام
من با ویندوز 7 و برای C# مشکل دارم
درایور که نصب نمیشه
کسی میتونه راهنمایی کنه و یه مثال برام بفرسته
متشکرم
nimasoftco@gmail.com

AmirSky
شنبه 26 مرداد 1392, 14:46 عصر
باسلام
این فایلهای EasyD12 و MF_API را ممکنه برام بفرستید
من نتونستم بدست بیارم
ممنون

mahtab2007
چهارشنبه 03 مهر 1392, 08:22 صبح
سلام. ممنون میشم اگر منا بیشتر راهنمایی کنید. مشکل من نحوه نوشتن یا خوندن از کارته. ممنونم اگه زود جواب بدید.

mehr_83
دوشنبه 02 تیر 1393, 17:22 عصر
سلام. من نیاز به درایور این دستگاه برای ویندوز xp دارم. RTF--200
از کجا میتونم دانلود کنم؟ تو سایت سازندش نتونستم پیدا کنم

SayeyeZohor
دوشنبه 02 تیر 1393, 18:58 عصر
من مشکل را حل کردم
اگر دوست داشین Email بدین تا راهنمای استفاده را برایتون ارسال کنم

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

با تشکر

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

یوسف زالی
یک شنبه 19 بهمن 1393, 18:35 عصر
یک پست، یک کار خوب!
آفرین به شما که کدت رو توزیع کردی.

surushm
دوشنبه 16 آذر 1394, 08:07 صبح
سلام به همه
من از اول این بحث نخوندم ببینم چی شده ولی منم یه زمانی سر این مسئله خیلی اذیت شدم یه نمونه سورس میذارم
یادمه مشکل در ارتباط با دی ال ال ها سر متغیر ها بود.
من دی ال ال ها رو هم گذاشتم یه موقع به مشکل نخورید البته دو تای اصلی رو ، در این نمونه سورس می تونید مقدار اعتبار کارت رو کاهش و یا افزایش بدین

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

gbg
سه شنبه 24 فروردین 1395, 09:06 صبح
من دنبال درایورش میگشتم این پست قدیمی رو دیدم
خواستم بگم بدون DLL هم میشه
من خودم مستقیم کار میکنم باهاش

khatereha7
سه شنبه 30 شهریور 1395, 01:55 صبح
سلام و وقت بخير
من تمامي مطالب مربوط به اين تالار را به دقت خوندم من مشكلي با فرخواني dll و يا توابع آن ندارم برنامه من راحت كار ميكنه و ارور هم نمي دهد فقط نمي دانم چرا به هيچ وجه نمي توانم با دستگاه ارتباط برقرار كنم دستگاه من با پورت Usb وصل شده و درايور دستگاه درست نصب شده و دستگاه را روي كام 8 شناخته مشكلي از اين بابت ندارم ولي باز هم هيچ يك از توابع كار نمي كنند اگر كسي اطلاعاتي در اين ضمينه دارد لطفا به من كمك كند

Valadi
شنبه 03 مهر 1395, 21:01 عصر
با سلامر
من كار كردم مشكلي نداشتم كد تون يا نمونه برنامه قرار بديد تا ببينم

mostafa5
چهارشنبه 14 مهر 1395, 07:27 صبح
دوست عزیز
خیلی متشکر از اینکه تجربه خودتان را با دیگران به اشتراک گذاشتید.
اما من برنامه شما را با اشکال کامپوننت های .....s باز میکنم.
این کامپوننت از چه مجموعه ای است.

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

a.sazgar
شنبه 17 مهر 1395, 20:21 عصر
سلام کسی RFT-200 با سی شارپ زده ?

mmbguide
یک شنبه 19 دی 1395, 20:52 عصر
سلام

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

144087