RFID 기능을 추가하려면
const string ipaddress = "192.1.1.1"; reader = new Reader(ConnectType.Tcp); reader.ModelType = ModelType.NL_RF2200; --RFID 스캐너 모델명 입력 reader.ReaderEvent += new ReaderEventHandler(OnReaderEvent); reader.ConnectSocket(ipaddress, 5578); Application.DoEvents();
private void OnReaderEvent(object sender, ReaderEventArgs e) { if (logger.IsErrorEnabled) logger.Info(System.Reflection.MethodBase.GetCurrentMethod().Name + " Start"); try { if (this.InvokeRequired) { this.BeginInvoke(new ReaderEventHandler(OnReaderEvent), new object[] { sender, e }); return; } string payload; switch (e.Kind) { case ReaderEventKind.Connected: break; case ReaderEventKind.Disconnected: break; case ReaderEventKind.timeout: break; case ReaderEventKind.Version: break; case ReaderEventKind.AntennaState: case ReaderEventKind.Power: break; case ReaderEventKind.TagId: payload = Encoding.ASCII.GetString(e.Payload); string[] tagids = payload.Split(new string[] { "\r\n>" }, StringSplitOptions.RemoveEmptyEntries); foreach (string tagid in tagids) { string epc = tagid.Substring(2); string txt = string.Empty; string hex = string.Empty; if (reader.TagType == TagType.ISO18000_6C_GEN2) { int p = 4; if (tagid.Length > p) { hex = epc.Substring(p, epc.Length - p); txt = reader.MakeTextFromHex(hex); } } string tag_code = ""; string serial_no = ""; fncRFIDConvert(hex, ref tag_code, ref serial_no); } break; case ReaderEventKind.GetTagMemory: break; case ReaderEventKind.TagResponseCode: break; } } catch (Exception ex) { logger.Error(ex); MessageBoxError(string.Empty, ex.Message); } finally { if (logger.IsInfoEnabled) logger.Info(System.Reflection.MethodBase.GetCurrentMethod().Name + " End"); } }
private bool fncRFIDConvert(string rfid_tag_hex, ref string ref_tag_code, ref string ref_serial_no) { if (logger.IsErrorEnabled) logger.Info(System.Reflection.MethodBase.GetCurrentMethod().Name + " Start"); try { string str_value_hex = string.Empty; for (int i = 0; i < rfid_tag_hex.Length; i++) { int dec; dec = Convert.ToInt32(rfid_tag_hex.Substring(i, 1), 16); string binary_value = (Convert.ToString(dec, 2)).PadLeft(4, '0'); str_value_hex = str_value_hex + binary_value; } string binary_com_no = str_value_hex.Substring(14, 24); string binary_good_no = str_value_hex.Substring(38, 20); string binary_serial_no = str_value_hex.Substring(58, 38); Int64 int_com_no = Convert.ToInt64(binary_com_no, 2); Int64 int_good_no = Convert.ToInt64(binary_good_no, 2); Int64 int_serial_no = Convert.ToInt64(binary_serial_no, 2); string str_com_no = (int_com_no.ToString()).PadLeft(7, '0'); string str_good_no = (int_good_no.ToString()).PadLeft(6, '0'); string str_serial_no = (int_serial_no.ToString()).PadLeft(12, '0'); ref_tag_code = str_com_no + str_good_no; ref_serial_no = str_serial_no; if (string.IsNullOrEmpty(ref_tag_code) || string.IsNullOrEmpty(ref_serial_no)) { return false; } return true; } catch (Exception ex) { logger.Error(ex); MessageBoxError(string.Empty, ex.Message); return false; } finally { if (logger.IsInfoEnabled) logger.Info(System.Reflection.MethodBase.GetCurrentMethod().Name + " End"); } }
string rfid_hex = fncListToString(Barcode_Data, 0, Barcode_Data.Count - 2); string tag_code = ""; string serial_no = ""; if (fncRFIDConvert(rfid_hex, ref tag_code, ref serial_no)) { fncSearchRFID(tag_code, serial_no); }
6-1. RFID 코드는 스캔하면 303으로 시작하는데 이렇게 시작할 때 RFID 값으로 인식하고 데이터 처리를 할 수 있다.