Исключение несанкционированного последовательный порт
Я пытаюсь прочитать RFID-метки и отобразить их в своем инвентарном приложении c#. Я получил доступ к нему через приложение Arduino, которое дает мне правильный вывод на контрольный монитор, когда я передаю RFID-брелок. Но когда я попытался получить доступ к нему через visual studio, он работает только один раз, а затем дает мне доступ запрещен!а также перестал работать на Arduino IDE, говоря, что порт занят!
Что я уже пробовал:
public products() { InitializeComponent(); initializeRFIDPort(); }
//Function to initialize the serial port SerialPort RFIDPort public SerialPort initializeRFIDPort() { try { RFIDPort = new SerialPort("COM4",9600,Parity.None,8, StopBits.One); if (RFIDPort.IsOpen) RFIDPort.Close(); if(!RFIDPort.IsOpen) RFIDPort.Open(); } catch (UnauthorizedAccessException ex) {MessageBox.Show( ex.Message); } catch (Exception) { RFIDPort = null; } return RFIDPort; }
У меня в классе есть две кнопки сканирования:
private void ScanButton_Click(object sender, EventArgs e) { try { scanButtonIsClicked = true; if (RFIDPort.IsOpen) { RFIDPort.DataReceived += serialPort1_DataReceived; textBox1.Text = ""; } else MessageBox.Show("RFID Reader is not connected!"); } catch (IOException) { MessageBox.Show("Please reconnect your device "); } catch (System.Exception) { MessageBox.Show("Please Try Again"); } } private void Searchbutton_Click(object sender, EventArgs e) { scansearchbtn = true; scanButtonIsClicked = false; try { if (RFIDPort.IsOpen) { RFIDPort.DataReceived += serialPort1_DataReceived; textBox2.Text = ""; } else { MessageBox.Show("RFID Reader is not connected!"); } } catch (IOException) { MessageBox.Show("Please reconnect your device ");} } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { string line = RFIDPort.ReadLine(); if (scanButtonIsClicked == true) this.BeginInvoke(new LineReceivedEvent(LineReceived), line); else this.BeginInvoke(new LineReceivedEvent(Line2Received), line); } catch (Exception){ MessageBox.Show("Can't Read from RFID Device.Please try again"); } } private delegate void LineReceivedEvent(string line); private void LineReceived(string line) { textBox2.Text = line; } private void Line2Received(string line) { textBox1.Text = line; }
а потом я закрыл последовательный порт на форуме-закрытие. когда я закрываю программу, содержащую RFIDPort.Close (), также возникает исключение, что ввод-вывод прерывается.
пожалуйста, если кто-нибудь может привести меня на правильный путь. Я пробовал много раз!!
Richard MacCutchan
Убедитесь, что Arduino IDE не работает, иначе он будет держать порт открытым.