myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Mehrere ComPorts in einem Programm verwenden
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Mehrere ComPorts in einem Programm verwenden

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Codeless
myCSharp.de-Mitglied

Dabei seit: 26.11.2018
Beiträge: 2
Entwicklungsumgebung: c#


Codeless ist offline

Mehrere ComPorts in einem Programm verwenden

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,
ich bin neu hier und nicht sonderlich geübt was das Schreiben von eigenen Beiträgen angeht. Jedoch habe ich nirends etwas gefunden das mir weiterhilft, daher wende ich mich an Euch.
Seit längeren verwende ich ein kleines Programm um mit Hilfe eines TTL/UART2USB-Converter Daten seriell zu versenden, empfangen und zu steuern. Das klappt bis jetzt alles wunderbar.

Nun versuche ich seit neustem eine zweite Schnittstelle zu implementieren. Damit möchte ich zwei Geräte gleichzeitig mit einem C#-Programm steuern und so Daten hin- und herschicken. Das sollte ja eigentlich kein Problem sein. Jedoch kappt das irgendwie nicht. Beide Converter funktionieren aber immer nur an Com A, Com B bleibt tot. Es kommt zu keiner Fehlermeldung, RX und TX geht beide nicht. Alle Funktionen der Schnittstellen ist doppelt vorhanden, aber es geht einfach nicht. Wahrscheinlich mache ich nur einen dummen Anfängerfehler…
Ich weiß aber nicht mehr weiter, kann mit jemand weiterhelfen?

Das ganze Mini-Projekt habe ich angefügt.

Vielen Dank im Vorraus

SG Codeless


Dateianhang:
unknown SerialTerm.zip (224 KB, 12 mal heruntergeladen)
26.11.2018 16:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
redux
myCSharp.de-Mitglied

Dabei seit: 03.07.2018
Beiträge: 1


redux ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Warum dein Port B nicht geht, kann ich dir nicht sagten, aber...

Zitat:
Alle Funktionen der Schnittstellen ist doppelt vorhanden, aber es geht einfach nicht.

... du hast so gut wie alle Methoden durch Copy-and-Paste dupliziert, nur um ein serialPortB ansprechen zu können. Wenn du eine serialPortC hast, kopierst du dann wieder alles?

So ist es echt schwer einen Fehler zu finden.
26.11.2018 17:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 978
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

um ehrlich zu sein - du scheinst selbst nicht mehr durchzublicken - wie soll das jemand anders jetzt noch tun? (Zumal debugging wohl eher schwierig wird, wenn man nicht zufällig 2 COM-Geräte rumliegen hat)

Noch schlimmer: "Funktioniert nicht" - hast du mal selbst debuggt was er denn genau nicht macht?

Wie von redux bereits angemerkt - würdest du dir wohl selbst einen Gefallen tust und das so umbaust, dass du keine Codeduplizierung hast, sobald ein neuer COM-Port angesprochen werden soll.

Ebenfalls hübscher gehen deine Funktionen "EnableControls_PortX" - aus:

C#-Code:
private void EnableControls_PortB(bool value)
{
    if (value == true)
    {
        cbComPortB.Enabled = true;
    }
    else
    {
        cbComPortB.Enabled = false;
    }
}

könnte z.B. problemlos so aussehen:

C#-Code:
private void EnableControls_PortB(bool value)
{
    cbComPortB.Enabled = value;
}

LG
27.11.2018 07:18 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
123thomas
myCSharp.de-Mitglied

Dabei seit: 21.12.2012
Beiträge: 110
Entwicklungsumgebung: Visual Studio 2017 Community


123thomas ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich habe gerade mal geschaut was dein Problem ist:
  1. Du hast try, catch nicht verstanden
  2. Du öffnest immer COM1
  3. Wie meine Vorredner schon sagten, fehlt dir die Objektorientierte Programmierung
zu 1:

C#-Code:
try
{
  //hier wird Code ausgeführt

//wenn hier am Ende angekommen ist, dann ist alles gut verlaufen
}
catch ( Exception ex)
{
  //kommt er in den catch, dann wurde der try Block nicht bis zu Ende ausgeführt und es wurde ein Fehler ausgelöst.
//daher sollte hier der Fehler abgefangen (ex.Message) und dem Benutzer wie auch immer angezeigt werden
}

zu 2:
Man kann zwar in der ComboBox ein Com Port auswählen, allerdings wird der COM Port nicht dem SerialPort zugewiesen

zu 3:
Erstelle eine Klasse für den SerialPort und implementiere nur die Schnittstellen, die du zu dem Serialport benötigst, damit du nicht alles kopierst.

Wenn du im try catch den Fehler abgefangen hättest wäre dir angezeigt worden, dass der COM1 bereits geöffnet ist. Obwohl nirgends der COM1 ausgewählt wurde.

Gruß
Thomas

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von 123thomas am 27.11.2018 07:30.

27.11.2018 07:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Codeless
myCSharp.de-Mitglied

Dabei seit: 26.11.2018
Beiträge: 2
Entwicklungsumgebung: c#

Themenstarter Thema begonnen von Codeless

Codeless ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ihr habt ja recht, da werde ich das zusammenkopierte Programm in die Tonne stecken und mir komplett was eigenes bauen. Hier kann ich niemanden fragen, der auch weiß was c# überhabt ist.
Daher Danke für Eure Antworten und den Schubser in die richtige Richtung!
Das objektorientiert aufzubauen ist ja absolut sinnvoll.
Da werde ich mich wohl die nächste Zeit in Anfängerforen rumtreiben.
Wie man das als Klasse aufzieht werde ich wohl nirgendwo einfach so finden.

SG Codeless

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Codeless am 27.11.2018 08:38.

27.11.2018 08:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Coffeebean Coffeebean ist männlich
myCSharp.de-Team

avatar-3295.gif


Dabei seit: 25.08.2011
Beiträge: 2.185
Entwicklungsumgebung: VS 2005-2017, VS Code
Herkunft: Deutschland/Schweiz


Coffeebean ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Codeless,

es gibt auch hier Verweise auf einen guten Einstieg

 [FAQ] Wie finde ich den Einstieg in C#?

Einfach vorne anfangen, dann wird schnell vieles klar :)

Gruss

Coffeebean
27.11.2018 09:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 11 Monate.
Der letzte Beitrag ist älter als 11 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 14.11.2019 04:07