1. Buat Kelas Controller dengan nama
Controller_RFID
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.IO.Ports;
6: using System.Windows.Forms;
7: using System.Collections;
8: using Newtonsoft.Json.Linq;
9: namespace AplikasiPendukung
10: {
11: class Controller_RFID
12: {
13: private static SerialPort SerialPort_RFID = null;
14: public SerialPort SerialPort
15: {
16: get { return SerialPort_RFID; }
17: set { SerialPort_RFID = value; }
18: }
19: public static string ComPortName = "COM8";
20: public static string valueString = "";
21: public string ValueString
22: {
23: get { return valueString; }
24: set { valueString = value; }
25: }
26: public void Initialize()
27: {
28: GetComportName();
29: SerialPort = new SerialPort(ComPortName);
30: SerialPort.BaudRate = 9600;
31: SerialPort.Parity = Parity.None;
32: SerialPort.StopBits = StopBits.One;
33: SerialPort.DataBits = 8;
34: SerialPort.Handshake = Handshake.None;
35: SerialPort.RtsEnable = false;
36: SerialPort.ReadTimeout = 1000;
37: }
38: public void start()
39: {
40: try
41: {
42: SerialPort.Open();
43: }
44: catch (Exception ex)
45: {
46: MessageBox.Show(ex.Message);
47: }
48: }
49: public void stop()
50: {
51: try
52: {
53: if (SerialPort.IsOpen) SerialPort.Close();
54: SerialPort.Dispose();
55: }
56: catch (Exception ex)
57: {
58: MessageBox.Show(ex.Message);
59: }
60: }
61: private void GetComportName()
62: {
63: Dispanser.bacaSetting _bcSetting = new Dispanser.bacaSetting();
64: if (_bcSetting.parameterExist())
65: {
66: // Inisialisasi
67: ArrayList arrayData = new ArrayList();
68: arrayData = _bcSetting.getParameter();
69: ComPortName = arrayData[0].ToString();
70: }
71: else
72: {
73: MessageBox.Show("Lakukan Konfigurasi Sistem Terlebih Dahulu", "Informasi");
74: }
75: }
76: }
77: }
2. Panggil fungsi diatas ke kelas yang membutuhkan fungsi tersebut seperti ini dan jangan lupa untuk menambahkan namespace "using System.IO.Ports;"
1: public Form1()
2: {
3: InitializeComponent();
4: _controllerRFID.Initialize();
5: _controllerRFID.start();
6: _controllerRFID.SerialPort.DataReceived += new SerialDataReceivedEventHandler(RFIDReceivedHandler);
7: this.RFID_DataPassing = new PassingDataDelegate(PassingDataMethod);
8: }
3. Buat fungsi dengan nama RFIDReceivedHandler
1: private void RFIDReceivedHandler(object sender, SerialDataReceivedEventArgs e)
2: {
3: try
4: {
5: string indata = _controllerRFID.SerialPort.ReadLine();
6: Invoke(this.RFID_DataPassing, new Object[] { indata });
7: }
8: catch (Exception)
9: {
10: }
11: }
4. Buat Fungsi dengan nama PassingDataMethod
1: public void PassingDataMethod(String myString)
2: {
3: lblCN.Text = myString; // myString berisi Card Number, disimpan disebuah label bernama lblCN
4: if (!lblCN.Text.Equals(""))
5: {
6: //Do Something
7: }
8: }
5. Jangan lupa untuk memanggil fungsi stop yang berfungsi untuk close serialportnya. Kalo aku panggil fungsi stopnya pada saat form di close. Jika tidak akan terjadi masalah.
1: private void Form1_FormClosing(object sender, FormClosingEventArgs e)
2: {
3: _controllerRFID.stop();
4: }