www.mikrocontroller.net

Forum: PC-Programmierung Finde den fehler nicht-C#


Autor: Son of Oden (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

Ich habe folgendes Problem:
mein Programm habe ich soweit fertig aber jetzt da ich mit dem testen 
begonnen habe kommen auch schon die ersten probleme.

Das Programm ist eine C#-Oberfläche die auf das drücken des "start"- 
Knopfes soll über den timer regelmäßig ein kommando Z1 oder z.B. Z2 
senden.
Als Antwort kommt eine Zeichenfolge gesendet von einem microcontroler.

Wenn ich jetzt auf "Start" drücke wir nichts gesendet. Zumindest sehe 
ich es nicht. Ich habe es folgendermaßen getestet:
2 PC wurden per RS232-female-female-kabel verbunden und das Programm das 
ich verwende ist "Hyperterminal". Die PCs haben eine Verbindung die ich 
dadurch festellen konnte das man am ersten PC eingegebene nachrichten am 
zweiten PC sehen konnte. dann starte ich mein programm über microsoft 
visual studio 2005. wenn ich jetz auf start drücke wird beim zweiten PC 
nichts entfangen.
Ich bin ratlos denn soweit ich mir das denke müsste mein Programm 
funktionieren.

LG Son of Oden

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Zeile 42 deines Programms ist der Fehler!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, 42 ist die Lösung, nicht das Problem.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du schon mal was vom Debugger, Breakpoints, Anschauen von 
Objektdaten, ... gehört? Oder Testausgaben mit Hilfe der Klasse 
System.Diagnostics.Debug, Methoden Write, WriteLine, ...? Infos ins 
Ausgabe-Fenster der IDE schreiben? ...

Gruß
Markus

Autor: Son of Oden (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh... ich dachte es währe jemand so nett um mal kurz über das programm 
drüber zu schaun. Vielleicht wäre ja jemanden etwas essentielles 
aufgefallen das schuld daran sein könnte das nichts gesendet wird.
Solche leute sind hier wohl nicht zu finden. Entschuldigung für die 
Störung.

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, wenn du uns das Programm mal zeigen würdest...

(daher auch die Kommentare!)

Autor: Son of Oden (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oh nein, Entschuldigung!!!!
Ich hab aber einen zip vom projekt angehängt... geht das als gast nicht?
Neuer versuch.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Son of Oden schrieb:
> Ich hab aber einen zip vom projekt angehängt... geht das als gast nicht?

Doch. Wie du gerade festgestellt hast, geht es auch als 'Gast'. Du musst 
nur wissen, dass der Anhang verschwindet sobald du auf 'Vorschau' 
klickst.

Autor: Son of Oden (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will mich nochmal entschuldigen für meine reaktion vorhin...
das wars ich hab auf Vorschau geklickt.^^

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Son of Oden schrieb:
> Ich will mich nochmal entschuldigen für meine reaktion vorhin...

Passt scho ;)

> das wars ich hab auf Vorschau geklickt.^^

Das kann übrigens sogar angemeldeten Benutzern passieren :/

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und genau jetzt fällt mir ein, dass ich hier gar kein Visual Studio hier 
(zu Hause) habe :(

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...aber wie Markus schon gesagt hat, kannst du das Programm doch in der 
IDE starten und step-by-step durchlaufen. Dann kannst du evtl. schon 
erkennen, ob das Programm überhaupt alles macht, was du erwartest.

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider kann ich Dein Programm nicht kompilieren, weil ich das 
Office-Assembly nicht habe oder es nicht installiert ist:
D:\...\Fußbelastungsmessung\Fußbelastungsmessung\Main_Form.cs(10,17): Fehler CS0234: Der Typ- oder Namespacename Office ist im Namespace Microsoft nicht vorhanden. (Fehlt ein Assemblyverweis?)
D:\...\Fußbelastungsmessung\Fußbelastungsmessung\Main_Form.cs(436,45): Fehler CS0234: Der Typ- oder Namespacename Office ist im Namespace Microsoft nicht vorhanden. (Fehlt ein Assemblyverweis?)

Üblicherweise postet man den Code derart auf's Minimum reduziert, dass 
gerade noch das Fehlverhalten auftritt, aber ohne überflüssigen Kram.

Jedenfalls ist mir aufgefallen, dass für den Button btnStart kein 
Click-Ereignis eingetragen ist. Im Code existiert zwar
        private void btnStart_Click(object sender, EventArgs e)
        {
            ...
        }
aber wenn ich im Entwurfsmodus auf btnClick doppelklicke, wird eine neue 
Funktion
        private void btnStart_Click_1(object sender, EventArgs e)
        //                         ^^
        {
            ...
        }
erstellt.
Scheint also so, dass die Verknüpfung zwischen btnStart und der 
Ereignisfunktion verloren hat.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Son of Oden,

Severino R. hat durchaus Recht. Wenn Du Dir die Methode 
InitializeComponent() in der Datei MainForm.Designer.cs, speziell die 
Zeile 112 anschaust, dort wird eine Click-Ereignis-Handler für den 
Export-Button installiert. Gleichartiges fehlt sowohl für den Start- (im 
Bereich der Zeile 50) als auch für den Pause-Button (im Bereich der 
Zeile 60).

Gruß
Markus

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein anderer Fehler ist, dass in PortDataRecieved direkt auf 
Steuerelemente der Form zugegriffen wird (labelZone etc). Das 
funktioniert nicht, da nur der Hauptthread auf die Steuerelemente 
zugreifen darf.
D.h. alle Zugriffe müssen mit Invoke an den Hauptthread delegiert werden
bspw. so:
[c]
public delegate void LabelUpdater(String aString);
public LabelUpdater LabelDelegate;

void LabelDelegate(string aString) {
   ...
}

void PortDataRecieved(...) {
    ...
    labelZone[x].Invoke(LabelDelegate, aString);
}

public MainForm() {
    ...
    LabelDelegate = new LabelUpdater(LabelUpdateMethod);
}

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Das Problem mit dem Click-Ereignis ist auch beim Pause-Button!

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und besser programmiert wäre z.B.
this.pbxZone4[j].Name = "pbxHeel"+Convert.ToString(j+1);
statt
this.pbxZone4[j].Name = "pbxHeel"+(j+1);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.