저는 엔지니어링 학생이며 현재 최종 학년 프로젝트를 진행 중입니다. 나는 C#에서 rfid 기반 주차장 관리 시스템을 구축하려고합니다. 몇 가지 연구를 기반으로 내가 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
동일한 데이터입니까? –