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# » Wie kann ich zwei Computer via USB-Port verbinden?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich zwei Computer via USB-Port verbinden?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio


Banditoka ist offline

Wie kann ich zwei Computer via USB-Port verbinden?

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

Hallo Leute,

Ich bin neu im Forum und hoffe ich habe den richtigen Bereich erwischt.

Ich habe zwei Programme geschrieben die über die USB-Ports miteinander kommunizieren sollen. Im Testing habe ich 2 COM Ports simuliert und dann auch erfolgreich getestet. Das heißt mit simulierten COM Ports funktionieren die Programme.

Das Problem ist mit einem normalen USB-Kabel wird das ganze nicht funktionieren, da meines Wissens ohne Treiber gar nichts geht.

Die Frage wäre ob jemand eine geeignete Lösung kennt oder mir einen wertvollen Tipp geben könnte das ganze auch mit nicht simulierten COM Ports zum laufen zu bringen.

Vielen Dank
07.04.2020 16:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.513
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

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

Was ist das Ziel des ganzen?
Wenn zwei Rechner mit ein ander kommunizieren soll, würde ich eher eine Netzwerktechnik nutzen.
Also über UDP/TCP.
Aber ohne den Zweck des ganzen zu kennen ist nicht klar, was der sinnvollste Ansatz wäre.

T-Virus
07.04.2020 17:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JimStark
myCSharp.de-Mitglied

Dabei seit: 10.03.2020
Beiträge: 39


JimStark ist offline

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

So ist USB nicht gedacht, da bräuchtest du dazwischen einen Master oder ähnliches.
07.04.2020 17:53 Beiträge des Benutzers | zu Buddylist hinzufügen
Lenny
myCSharp.de-Mitglied

Dabei seit: 05.01.2009
Beiträge: 95
Entwicklungsumgebung: VS2012 Ultimate


Lenny ist offline

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

Du könntest zwei virtuelle Comports nehmen -> USB zu Seriell Adapter
08.04.2020 22:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Banditoka

Banditoka ist offline

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

Hallo,
erstmal vielen Dank an alle.

TCP geht nicht da ich mit der mir zur Verfügung stehenden Hardware nur ein Netzwerk aufbauen kann und dieses Netzwerk muss mit dem Internet verbunden sein.

Also habe jetzt 2 USB-UART Adapter, funktioniert auch alles. Habe die beiden einfach mit nem selbstgebauten Adapter verbunden.

Nun das Problem welches wohl in der Programmierung liegt:

Benutze ich die Verbindung und TeraTerm Konsole werden mir die Daten die ich schicke angezeigt.

Benutze ich aber mein Konsolenprogramm wird der Port erkannt nur meine Daten werden mir in der Konsole nicht angezeigt --> Benutze die ReadExisting() Methode zum auslesen des Streams.

Benutze ich VSPE mit zwei virtuellen Ports kommunizieren beide Programme wie sie sollen und die Nachrichten werden mir auf meiner Konsole angezigt.

Ich poste auch noch den Code.

Danke für die Hilfe.
09.04.2020 17:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Banditoka

Banditoka ist offline

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

Code wurde entfernt wahrscheinlich darf man den nicht posten :D
Sorry ..
09.04.2020 17:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.383
Herkunft: Leipzig


MrSparkle ist offline

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

Den Code habe ich entfernt. Du kannst hier nicht einfach seitenweise unformatierten Code posten, und dann erwarten, daß wir ihn für dich debuggen oder neuschreiben.

Bitte beachte  [Hinweis] Wie poste ich richtig?, und poste die relevanten Code-Ausschnitte und verwende Code-Tags.
09.04.2020 17:41 Beiträge des Benutzers | zu Buddylist hinzufügen
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Banditoka

Banditoka ist offline

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

Soll auch niemand neu schreiben für mich :D
Hoffe das ist jetzt besser so.


while (PortStatus == true)
{

MessageIn = serialPort1.ReadExisting();
DataIn = MessageIn.Split(' ')[0];
try
{
SollTemp = MessageIn.Split(' ')[1];
}
catch (Exception noTemp)
{
goto Verbindung;
}
Verbindung:
switch (DataIn)
{

case "Start":
Console.WriteLine("Message erhalten Start " + SollTemp);
break;
09.04.2020 17:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.513
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

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

@Banditoka
Die Aussage mit dem Netzwerk erschließt sich mir nicht.
Du sollst doch nur die beiden Rechner per IP verbinden.
Da spielt es keine direkte Rolle ob die am Internet hängen oder nicht.
Wenn der Port, den du zur Kommunikation definieren musst, nicht in der Firewall freigegeben ist, spielt es keine Rolle ob die am Internet hängen oder nicht.
Mein Netzwerk hängt auch am Internet, trotzdem laufen in meinen LAN einige Dienste zwischen den Rechnern, die ich aber nicht über die Firewall freigebe.
Entsprechend ist deine Aussage weder schlüssig noch nachvollziehbar.
Und was du da bastelst ist nichts anderes als eine Netzwerklösung über COM, was dafür nicht ausgelegt ist.
Dafür gibt es UDP/TCP mit IP.
Wenn du dann am anderen Rechner mit COM arbeiten musst, ist das kein Problem.
Die Befehle kannst du dann als Command Objekte z.B. über einen Self Hosted WCF Service senden.
Auch andere Service Lösungen wären möglich, hängen aber von der Architektur ab, z.B. Client + Server Architektur.

Auch sieht dein Code, den du immer noch nicht in die Code Tags gepackt hast, nicht sauber aus.
goto hat in C# sogut wie nie etwas verloren und zeigt meistens ein Code Design Problem auf, was man mit ordentlicher Strukturierung lösen kann und muss!
Es mag ein paar Einsatzzwecke geben, in den letzten 13 Jahren habe ich hier aber nur eine Handvoll Fälle gesehen wo solche Lösungen genutzt wurden.
Und teilweise wäre dies nicht nötig gewesen!
Und hier ist es sogar überflüssig, da du nach dem catch Block auch direkt zu Verbindung kommst ohne goto!

Dein DataIn und SollTemp wäre sinnvoller als Command Pattern umzusetzen.
Dazu braucht es dann keine Sonderlocke.

Nachtrag:
Du kannst übrigens deiner Netzwerkkarte mehrere IPs zuweisen und so ein Netz aufziehen ohne Internetzugang und sogar wie in diesem Fall direkt per P2P zwischen den beiden Rechnern kommunizieren.
Damit wäre dann die Kommunikation nur zwischen diesen beiden Rechnern möglich.

T-Virus

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am 09.04.2020 18:32.

09.04.2020 18:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Banditoka

Banditoka ist offline

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

Erstmal Danke dir T-Virus und auch für die konstruktive Kritik!

Beschäftige mich mit C# erst seit nem Monat und dachte mir schon, dass meine Architektur grottig ist.

Zum Problem der Computer ist vollgepackt mit Restriktionen die ich nicht ändern kann. Dazu gehören auch die Netzwerkeinstellungen.
Das heißt sobald ich ein Ethernet Kabel anstecke, kappt er mir das WLAN welches nötig ist.
Daher muss ich diesen umständlichen Umweg nehmen..
Der PC schickt die Daten dann an ein Board mit Windows der wiederum die Daten verwertet und über IP/TCP an die zu steuernde Maschine weiterleitet.


Das Problem ist, das dass Array je nach Befehl OutofRange sein kann und um dann einen Fehler und somit Programmabbruch zu entgehen habe ich diesen Weg gewählt.

Naja jetzt funktioniert das ganze mittlerweile aber nicht zuverlässig ab und zu wird mir die Nachricht auf meiner Konsole angezeigt und öfter geschieht wiederum nichts nach Senden der Daten.
09.04.2020 18:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.383
Herkunft: Leipzig


MrSparkle ist offline

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

Zitat von Banditoka:
Das Problem ist, das dass Array je nach Befehl OutofRange sein kann und um dann einen Fehler und somit Programmabbruch zu entgehen habe ich diesen Weg gewählt.

Das kannst du doch vorher überprüfen, in der Doku findest du alles Wissenswerte dazu:
 Arrays (C#-Programmierhandbuch)
 [Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

Hier gibt es auch Tips für den Einstieg:  [FAQ] Wie finde ich den Einstieg in C#?

Und formatiere doch bitte deinen Code, du bist jetzt schon zwei Mal darauf hingewiesen worden.  [Hinweis] Wie poste ich richtig?, Punkt 6
09.04.2020 18:48 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.513
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

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

@Banditoka
Ob du Daten dann per LAN oder WLAN reinlaufen ist doch Wurst.
Aber ich würde an deiner Stelle die Umsetzung per COM als Netzwerk Ersatz verwerfen.
Wenn du eine Konsolen Anwendung mit Self Hosted WCF Services verwendest, Anleitungen gibt es im Netz zu Hauf, oder andere Lösungen nimmst, dann musst du nicht mal die Kommunikation bauen.
Die Services liefern dir dann alles bereits mit, du musst nur den Service und die nötigen Objekte bauen.

Das würde dir zur aktuellen COM Lösung viel Arbeit sparen und vor allem nicht so Fehler anfällig sein.
Wenn du schon jetzt Probleme hast, die Daten zu übertragen, dann kannst du dir vorstellen, was da noch an Arbeit auf dich zu kommt um hier eine Fehlertoleranz zu erzeugen.
Bei fertigen Service Lösungen hast du bereits den fertigen Unterbau und musst dich nur noch um die Implementierung kümmern.

T-Virus
09.04.2020 19:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Banditoka

Banditoka ist offline

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

@T-Virus

Danke nochmal für den Vorschlag aber wie gesagt sobald der Lan Stecker eingesteckt wird werden andere Netzwerkverbindungen deaktiviert.

Habe nun die COM Lösung erfolgreich abgeschlossen und die Daten werden zuverlässig übermittelt.
Die Goto Anweisungen habe ich aus dem Code entfernt und durch while schleifen ersetzt. Danke nochmal für den Tipp.
20.04.2020 05:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.513
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

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

@Banditoka
Ich habe nicht geschrieben, dass du jetzt per LAN an der Kiste arbeiten sollst.
Du kannst auch, wenn eh schon vorhanden, auch das WLAN verwenden.
Wenn die im gleichen Netz sind, macht es doch Sinn damit zu arbeiten.

Falls nicht, würde ich vorher noch mit dem entsprechenden Admin der Kiste sprechen ob man da nichts umstellen kann bzw. ein zweites WLAN für dein Netz umsetzen kann und dann beide Kisten per WLAN verbinden sofern die machbar ist.
Falls nicht, kann ich dir ehrlich gesagt mit deiner Umsetzung nicht weiterhelfen.
Dann müsste man auch klar sagen, dass die Umsetzung so nicht sauber machbar ist.
Aber hier müsstest du dich mit dem Auftragsgeber dieser Umsetzung unterhalten.

T-Virus
20.04.2020 08:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Banditoka Banditoka ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.04.2020
Beiträge: 7
Entwicklungsumgebung: Visual Studio

Themenstarter Thema begonnen von Banditoka

Banditoka ist offline

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

@T-Virus

Tut mir Leid aber ich glaube wir haben an einander vorbei geredet. Bzw ich habe mich nicht klar ausgedrückt. Diese Option wurde gewählt, da die Restriction leider nicht änderbar ist.
Falls ich die Möglichkeit gehabt hätte, hätte ich die Kiste die es zu steuern gibt auch direkt an das Firmennetz schließen können und über einen Webserver steuern können.
Wie gesagt leider von der IT nicht erwünscht.

Aber nun klappt alles perfekt.

Danke nochmal !

mfg
26.04.2020 20:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.513
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

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

@Banditoka
Hatte ich mir fast schon gedacht.
Wenn das Problem erst einmal gelöst ist, dann muss diese Brückenlösung eben erst einmal taugen.
Falls sich an der Situation mal was ändern sollte, solltest du das Programm aber auf eine saubere Netzwerk Verbindung umstellen.

T-Virus
27.04.2020 09:04 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 05.06.2020 04:16