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


von Son of Oden (Gast)


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

von taugenichts (Gast)


Lesenswert?

In Zeile 42 deines Programms ist der Fehler!

von Gast (Gast)


Lesenswert?

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

von Markus (Gast)


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

von Son of Oden (Gast)


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.

von taugenichts (Gast)


Lesenswert?

Tja, wenn du uns das Programm mal zeigen würdest...

(daher auch die Kommentare!)

von Son of Oden (Gast)


Angehängte Dateien:

Lesenswert?

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

von Magnus Müller (Gast)


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.

von Son of Oden (Gast)


Lesenswert?

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

von Magnus Müller (Gast)


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 :/

von taugenichts (Gast)


Lesenswert?

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

von taugenichts (Gast)


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.

von Severino R. (severino)


Lesenswert?

Leider kann ich Dein Programm nicht kompilieren, weil ich das 
Office-Assembly nicht habe oder es nicht installiert ist:
1
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?)
2
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
1
        private void btnStart_Click(object sender, EventArgs e)
2
        {
3
            ...
4
        }
aber wenn ich im Entwurfsmodus auf btnClick doppelklicke, wird eine neue 
Funktion
1
        private void btnStart_Click_1(object sender, EventArgs e)
2
        //                         ^^
3
        {
4
            ...
5
        }
erstellt.
Scheint also so, dass die Verknüpfung zwischen btnStart und der 
Ereignisfunktion verloren hat.

von Markus (Gast)


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

von Arc N. (arc)


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);
}

von Jochen (Gast)


Lesenswert?

Hallo!

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

von Jochen (Gast)


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);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.