Firmwareversion am PC einlesen

Gast #2975601
Lesenswert?

Hallo,

In meinem µC habe ich im Flash die Firmwareversion abgespeichert.
Diese möchte ich nun über die serielle Schnittstelle am PC anzeigen 
lassen.
Den Quellcode für die Datenepmfangsroutine hab ich im Anhang zur 
Verfügung gestellt. Mein Problem ist nun das ich folgende Fehlermeldung 
bekomme und die Firmwareversion nicht angezeigt wird:

Ungültiger threadübergreifender Vorgang: Der Zugriff auf das 
Steuerelement richTextBox1 erfolgte von einem anderen Thread als dem 
Thread, für den es erstellt wurde.

Viele Grüße
Anna
Angehängte Dateien:
Gast #2975642
Lesenswert?

Das mit dem Invoke hat das Problem nun im Debugmodus gelöst.
Die Firmwareversion wird mir angezeigt. Nur wenn ich das Programm im 
bin/Debug Ordner starte so stürzt das Programm ab. Das dürfte doch gar 
nicht abstürzen?

Gruß
Anna
Angehängte Dateien:
Gast #2975646
Lesenswert?

Wenn ich den relevanten Teil auskommentiere so zeigt es mir die 
Firmwareversion logischerweise nicht mehr an aber das Programm stürzt 
wenigstens nicht ab. Es muss also im auskommentierten Teil noch ein 
Fehler versteckt sein.
Angehängte Dateien:
Gast #2975693
Lesenswert?

Ich denke das dieser Befehl mein Problem ist:
if (receivedData.ToString() !=  byteSent[0].ToString())   // if received 
and already sent data are not equal (Failure!)

Wenn ich diesen Befehl auskommentiere stürzt nichts mehr ab.
Nur die Frage ist warum sollte an dem Befehl was nicht stimmen?

byte[] byteSent;

private void serialPort1_DataReceived(object sender, 
SerialDataReceivedEventArgs e)
{
  receivedData = serialPort1.ReadByte();
  if (receivedData.ToString() !=  byteSent[0].ToString())
  {
     .... Programm
  }

Gesendet wird folgendermaßen:

byte[] byteToSend =  { Convert.ToByte(128) }; // Sendedaten
serialPort1.Write(byteToSend, 0, 1);
byteSent = byteToSend;

Gruß
Anna
Gast #2975703
Lesenswert?

Wenn ich ein try catch um den Block lege und mir die Message ausgeben 
lasse bekomme ich folgendes siehe Bild.

Zeile 90 ist übrigens diese hier:

if (receivedData.ToString() !=  byteSent[0].ToString())

Hier muss also der Fehler liegen nur ich verstehe noch nicht ganz warum?

Gruß
Anna
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren