دوست عزیز من این مشکله با نرم افزار Driver Esay حل کردم اون خودش یه دیوار بهم داد اگه میخوای یه میل بهم بده تا برات دیوارشو بفرستم
Printable View
دوست عزیز من این مشکله با نرم افزار Driver Esay حل کردم اون خودش یه دیوار بهم داد اگه میخوای یه میل بهم بده تا برات دیوارشو بفرستم
با سلام
از دوستان کسی هست یک نمونه کد برای عملیات شناسایی کارت، خواندن و نوشتن بر روی کارت با دستگاه RFT-200 برای راهنمایی بزاره؟
تشکر
دوستانی که تجربه کار با این دستگاه را دارید، لطفا جواب دهید !!! :ناراحت:
تشکر
سلام
اولاً اين دستگاه براي ويندوز 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) رو هم میشناسه !!!
ممنون جناب دانشور
سلام
دوستان کسی می دونه چطور باید کد های key a و یا key b رو تغییر داد برای بالاتر رفتن امنیت اطلاعات
سلام
ببينين تمام توابعي كه از 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;
بیشتر که بررسی کردم متوجه شدم تابع rfInitComm درست عمل نمیکنه و حتی خطا هم نمیده !!!
نمیدونم جناب دانشور آیا این تابع رو بدون مشکل اجرا میگیرید یا نه؟
اگه شما مشکلی ندارید به نظرتون مشکل کجاست؟
از پورت نیست به نظرتون؟؟؟
راستش اینطور که من متوجه شدم تابع rfInitComm وقتی که پورت رو نمیشناسه مقدار 34 رو برمیگردونه و اگر پورت موردنظر درست ست شده باشه مقدار صفر رو بر میگردونه !!!
با این کد میتونید مقدار برگشتی رو ببینید:
ولی تو سیستم من پورت Com4 رو شناخته و موندم که کجاش گیره !!!Edit1.Text := IntToStr(dev.rfInitComm(pnCOM8, 9600));
توی 3 تا سیستم چک کردم (2 تا با ویندوز 7 و 64 بیت + 1 ویندوز xp )
و اگه احتمالا از درایور باشه؟ آیا درایور مناسبی دارید تا به نتیجه برسیم؟
سلام
ببينيد دوست عزيز، كدهايي كه گذاشتين مشكلي نداره. و مطمعناً دستگاه رو سيستم شما نشناخته يا درست نصب نشده. براي اينكه مطمئن بشين، از MFDemo استفاده كنيد و در تب Mifire همين توابع رو به ترتيب صدا بزنيد «بر روي كليدهاي مربوطه كليك كنيد». اگر اررور نداد يعني شناخته و در غير اين صورت، مشكل نه از دلفي هست و نه از كدهاي شما. مشكل از دستگاه و سيستمتونه.
در ضمن من اين كلاسي رو كه نوشتم رو با USB تست كردم. اما مطمئناً با پورت COM هم نبايد مشكلي داشته باشه.
آرگومان 2 يا 3 تابع rfControlLEd رو به 1 كنيد كه حداقل يه چراغ روشن بشه. چون وقتي همه چراغها خاموشن، دوباره خاموش كردن اونها فايده اي نداره.
سلام
با MFDemo تست که میکنم درسته درسته (با پورت COM4: هم میشناسه دستگاه رو - بوق میزنه - چراغا روشن و خاموش میشن و سریال کارت رو هم میخونه)
اما با همین کدهایی که شما هم تائید میکنید خروجی نمیگیرم !!! :افسرده:
با این شرایط به نظر هم پورت درسته و هم دستگاه و کارت سالم هستند.
اگه فک میکنید از درایور هست لطفا درایوری که خودتون استفاده میکنید رو آپلود کنید
ممنون از لطفتون
یه نکته دیگه این که شما واسه کنترل تشخیص دستگاه شرط مربوطه رو 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;
با سلام
سایر دوستان اگر تجربه ای تو این زمینه دارید! لطفا تو این بحث شرکت کنید
سلام به همگی
دوستان میدونم تاریخ این تایپیک خیلی وقته گذشته و مطالبش عالی بود . من به تازگی از این مدل دستگاهها خریدم ولی نیاز خیلی زیادی به کامپوننت تحت دات نتش دارم . میخوام از این دستگاه در یک سایت که با زبان asp.net است استفاده کنم .
اگه امکانش هست کمکم کنید
سلام من دستگاه RFT-200 دارم و USB هست . چطوری میتونم در Visual Basic 6.0 فراخوانی کنم ممنون میشوم اگر کمک کنید ...
سلام کسی هست راهنمایی کنه. که از نوع USB داخل برنامه نویسی Visual Basic چطوری میشه فراخوانی کرد. ممنون
سلام دوستان
من توی ویندوز xp و با پورت usb و با زبان C# پروژم بدون هیچ مشکلی کار میکنه
اما جدیدا نیاز به کار کردن توی ویندوز 7 دارم
تو ویندوز 7 حتی درایور هم نصب نمیشه
مشه راهنمایی کنید
ایمیل من nimasoftco@gmail.com
سلام
من با ویندوز 7 و برای C# مشکل دارم
درایور که نصب نمیشه
کسی میتونه راهنمایی کنه و یه مثال برام بفرسته
متشکرم
nimasoftco@gmail.com
باسلام
این فایلهای EasyD12 و MF_API را ممکنه برام بفرستید
من نتونستم بدست بیارم
ممنون
سلام. ممنون میشم اگر منا بیشتر راهنمایی کنید. مشکل من نحوه نوشتن یا خوندن از کارته. ممنونم اگه زود جواب بدید.
سلام. من نیاز به درایور این دستگاه برای ویندوز xp دارم. RTF--200
از کجا میتونم دانلود کنم؟ تو سایت سازندش نتونستم پیدا کنم
سلام به همه
من از اول این بحث نخوندم ببینم چی شده ولی منم یه زمانی سر این مسئله خیلی اذیت شدم یه نمونه سورس میذارم
یادمه مشکل در ارتباط با دی ال ال ها سر متغیر ها بود.
من دی ال ال ها رو هم گذاشتم یه موقع به مشکل نخورید البته دو تای اصلی رو ، در این نمونه سورس می تونید مقدار اعتبار کارت رو کاهش و یا افزایش بدین
یک پست، یک کار خوب!
آفرین به شما که کدت رو توزیع کردی.
من دنبال درایورش میگشتم این پست قدیمی رو دیدم
خواستم بگم بدون DLL هم میشه
من خودم مستقیم کار میکنم باهاش
سلام و وقت بخير
من تمامي مطالب مربوط به اين تالار را به دقت خوندم من مشكلي با فرخواني dll و يا توابع آن ندارم برنامه من راحت كار ميكنه و ارور هم نمي دهد فقط نمي دانم چرا به هيچ وجه نمي توانم با دستگاه ارتباط برقرار كنم دستگاه من با پورت Usb وصل شده و درايور دستگاه درست نصب شده و دستگاه را روي كام 8 شناخته مشكلي از اين بابت ندارم ولي باز هم هيچ يك از توابع كار نمي كنند اگر كسي اطلاعاتي در اين ضمينه دارد لطفا به من كمك كند
با سلامر
من كار كردم مشكلي نداشتم كد تون يا نمونه برنامه قرار بديد تا ببينم
سلام کسی RFT-200 با سی شارپ زده ?
سلام
دوستان من هنوز موفق به نصب درایور تو ویندوز 7 x64 نشدم. آیا راه حلی داره.
درایوری که دانلود کردم فایل های زیر داخلش بود ولی بعد از نصب 64 بیتی همچنان دستگاه برای ویندوز شناخته شده نیست.
ضمیمه 144087