Я студент-инженер, и я в настоящее время работаю над своим проектом в прошлом году. Я пытаюсь построить систему управления парковками на основе rfid на C#. основанный на некоторых исследованиях, я написал следующий код для чтения данных из читателя rfid, но я столкнулся с этой проблемой. обработчик события
, который я использую для считывания полученных данных, срабатывает дважды, и я не понимаю, как ... Я провел некоторое исследование в Интернете и обнаружил, что многие люди сталкиваются с аналогичной проблемой, связанной с обработкой события дважды, но большая часть они являются событиями нажатия кнопки. я мог найти только несколько потоков в пользовательском обработчике событий, но эти решения, похоже, не работают в моем проекте. любые возможные решения этой проблемы?Событие обработчик дважды стреляет
private void Parking_layout_Load(object sender, EventArgs e)
{
foreach (string port in System.IO.Ports.SerialPort.GetPortNames())
{
comboBox1.Items.Add(port);
if (comboBox1.Items.Count > 0)
comboBox1.SelectedIndex = comboBox1.Items.Count - 1;
}
RFID = new SerialPort();
RFID.PortName = comboBox1.Text;
RFID.BaudRate = 9600;
RFID.DataBits = 8;
RFID.Parity = Parity.None;
RFID.StopBits = StopBits.One;
RFID.Open();
RFID.DataReceived += new SerialDataReceivedEventHandler(RFID_DataReceived);
}
private void RFID_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
tag_id = RFID.ReadExisting().ToString();
SetLabel(tag_id);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
RFID_DataReceived выполняет дважды. если я поставлю оператор messageBox.show(), чтобы проверить его, он отображает сообщение дважды. как я могу исправить эту проблему?
Не имеет устройство отправить более чем одну часть данных? Это похоже на очень аппаратно-зависимый вопрос. –
Вы должны удалить свой блок 'catch'; все, что он делает, уничтожает информацию. – SLaks
Это одни и те же данные дважды? –