PDA

View Full Version : سوال: طرز استفاده از توابع RFID



piter11
چهارشنبه 06 دی 1396, 21:15 عصر
سلام من دستگاه کارت خوان rfid به مدل dualcard خریدم میخوام اطلاعات داخلش بریزم و بخونم با سی شارپ ولی نمیدونم طرز استفاده از توابع سی شارپش
کسی میتونه کمک کنه؟ حداقال بگید تو نت دنیال چی برگردم معرفی محصول و مشخصات و همچنین نمونه کدی که خود شرکتش گذاشته میزارم سر دانلود کنید با تشکر

https://www.rfidkala.com/product/reader-dragon-duali/#

sample code دانلود کنید

okhravi
چهارشنبه 17 اردیبهشت 1399, 04:35 صبح
سلام بله از تو این سایت راه حلش وجود داره
http://rfidhouse.ir/
RFID به فناوری گفته می‌شود، که به وسیله آن اطلاعات ذخیره شده در تگ (برچسب) توسط یک ریدر از طریق امواج ‌رادیویی خوانده می‌شود.RFID مانند بارکد است که در آن اطلاعات تگ، توسط ریدر خوانده شده و در پایگاه داده ذخیره می‌شود. اما نسبت به سیستم هایی که از بارکد استفاده می کنند ، دارای چندین مزیت است.

ShayanFiroozi
چهارشنبه 17 اردیبهشت 1399, 07:50 صبح
سلام دوست عزیز ،

دستگاه های RFID معمولا یا با پورت COM وصل میشن یا با کابل شبکه ،

اگر با کابل شبکه وصل میشن که حتما آدرس IP دارن و شما طبق به اون آدرس با یه پورت باز( پورتی که دستگاه اصطلاحا بهش Listen میکنه) وصل میشین ، وقتی اتصال برقرار شد شما دستور ارسال میکنین و اطلاعات دریافت میکنین ( که دقیقا میشه Socket Programming).

و اما اگر با پورت COM وصل میشن شما باید بهش متصل بشین پورت رو Open کنین و شروع به ارسال و دریافت اطلاعات کنین :

پروژه ای بود برای پالایشگاه بندرعباس دستگاه RFID داشتن ، میتونم قسمت کوچیکی از کدش رو که در خصوص کار با پورت COM هستش با شما به اشتراک بزارم :



public class cComPort
{




public Action<string> DataReceived;
public bool Is_Connected { get; private set; }


private SerialPort _serialPort;



public void Open_COM_Port(int _Com_Port_Number,int _BaudRate)
{


_serialPort = new SerialPort("COM" + _Com_Port_Number.ToString(), (int)_BaudRate, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;




_serialPort.DataReceived += On_DataReceived;
_serialPort.ErrorReceived += _serialPort_ErrorReceived;
_serialPort.ReadTimeout = 2000;


_serialPort.Open();





Is_Connected = true;




}


private void _serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
Is_Connected = false;
}


public void On_DataReceived(object sender, SerialDataReceivedEventArgs e)
{


try
{
if (_serialPort.IsOpen == false || Is_Connected == false) return;


string data = _serialPort.ReadLine();




if (data != null && data.Length != 0)
{
DataReceived?.Invoke(data);
}
}
catch
{
Is_Connected = false;

}


}




public void SendData(string _Data)
{
if (_serialPort.IsOpen == false || Is_Connected == false) return;


_serialPort.WriteLine(_Data);

}






public void Close_COM_Port()
{
_serialPort.Close();
Is_Connected = false;
}




}


** در خصوص BaudRate خیلی دقت کنین اگر BaudRate دستگاه شما با عددی که شما اینجا به کلاس میدین یکی نباشه اتصال برقرار نمیشه.

*** آپدیت :

استفاده از کلاس هم میتونه به این شکل باشه :


// ------> Init RFID Device


try
{



cGlobals.RFID_Device.Open_COM_Port(cGlobals.RFID_C OM_Port, (int)9600);


if(cGlobals.RFID_Device.Is_Connected == true)
{
cGlobals.RFID_Device.DataReceived += RFID_Data_Received;
}



}
catch (Exception ex)
{


MessageBox.Show("در راه اندازی دستگاه RFID خطایی رخ داده است" + Environment.NewLine + ex.Message, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}


if(cGlobals.RFID_Device.Is_Connected == false)
{
MessageBox.Show("ارتباط با دستگاه RFID برقرار نشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}


private void RFID_Data_Received(string RFIDTag)
{

//اطلاعات دریافتی از دستگاه

}



** اطلاعات تگ خونده شده توسط دستگاه در متغییر RFIDTag ذخیره میشه.