Я думаю, если вы проводите карту, есть ли где-нибудь в форме wpf ввод, например, текстовое поле? Затем я был бы склонен добавить событие, возможно, обработчик события KeyUp, (сканер карты клина клавиатуры отправляет сигнал об окончании обработки, такой как ENTER, чтобы указать, что считывание прошло успешно, да?) создайте строку, используя StringBuilder, и когда сигнал об окончании обработки, такой как ENTER, перехватывается, вы можете удалить «%» и «;» из экземпляра StringBuilder и делайте с ним все, что вам нужно.
Может быть проще использовать систему состояний, когда обработчик событий KeyUp получает «%», а затем перейти в другое состояние, где конечное ожидаемое состояние будет «;»
static bool StartState = false;
StringBuilder sbInput = new StringBuilder();
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (!StartState){
if (e.KeyCode == Keys.D5) StartState = true;
sbInput.Append((char)e.KeyValue);
}else{
if (e.KeyCode == Keys.OemSemicolon){
StartState = false;
// sbInput will contain the data from the scanner,
// copy it somewhere else and reset sbInput
// sbInput.Remove(0, sbInput.Length);
}
sbInput.Append((char)e.KeyValue);
}
e.Handled = true;
}
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.