I am trying to get an RFID tag number using a WinForms application. But whenever I click the Button the application stops responding. Please help regarding this.
Arduino code
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop() {
if(rfid.isCard()) {
if(rfid.readCardSerial()) {
Serial.print(rfid.serNum[0], HEX);
Serial.print(" ");
Serial.print(rfid.serNum[1], HEX);
Serial.print(" ");
Serial.print(rfid.serNum[2], HEX);
Serial.print(" ");
Serial.print(rfid.serNum[3], HEX);
Serial.print(" ");
Serial.print(rfid.serNum[4], HEX);
Serial.println("");
delay(1000);
}
}
rfid.halt();
}
C# code
private void button1_Click(object sender, EventArgs e) {
try {
serialPort1.Open();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
textBox2.Text = "connected";
serialPort1.Close();
}
catch(Exception ex) {
textBox2.Text = "Com port disconnected";
}
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) {
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
textBox1.Text = indata;
}
serialPort1.Close();
because that will close the serial port right after you open it. – Johnny Mopp May 1 '17 at 13:04textbox1.Text=indata;
exception isSystem.InvalidOperationException: 'Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on.'
– Ravi May 2 '17 at 15:00