// сбросить настройки protected void reset() { prefixIndex = 0; suffixIndex = 0; barcode = ""; status = BarcodeReadStatus.Wait; }
/// <summary> /// Посимвольный анализ /// Поиск сочетаний суффикса и префикса, передача полученного кода /// </summary> /// <param name="data">Код символа</param> protected void Read(Int32 data) { if (!connect) { reset(); return; } switch (status) { case BarcodeReadStatus.Wait: if (prefix == null) { status = BarcodeReadStatus.ReadBarcode; } else { status = BarcodeReadStatus.ReadPrefix; } Read(data); break; case BarcodeReadStatus.ReadPrefix: if (prefix == null) { status = BarcodeReadStatus.ReadBarcode; Read(data); break; } else if (prefix[prefixIndex] == data) { prefixIndex++; if (prefixIndex == prefix.Length) { status = BarcodeReadStatus.ReadBarcode; } } else { reset(); } break; case BarcodeReadStatus.ReadBarcode: if (suffix[suffixIndex] == data) { status = BarcodeReadStatus.ReadSuffix; Read(data); } else if (!ReadBarcode(data)) { reset(); } break; case BarcodeReadStatus.ReadSuffix: if (suffix[suffixIndex] == data) { if (suffixIndex == suffix.Length - 1) { SendBarcode(); reset(); } else { suffixIndex++; } } else { reset(); } break; } }