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
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
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.
Tja, wenn du uns das Programm mal zeigen würdest... (daher auch die Kommentare!)
Oh nein, Entschuldigung!!!! Ich hab aber einen zip vom projekt angehängt... geht das als gast nicht? Neuer versuch.
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.
Ich will mich nochmal entschuldigen für meine reaktion vorhin... das wars ich hab auf Vorschau geklickt.^^
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 :/
Und genau jetzt fällt mir ein, dass ich hier gar kein Visual Studio hier (zu Hause) habe :(
...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.
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.
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
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); }
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.