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 » Netzwerktechnologien » Wie kann ich alle Mikrocontroller im Netzwerk suchen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich alle Mikrocontroller im Netzwerk suchen?

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

avatar-136.gif


Dabei seit: 13.11.2020
Beiträge: 15
Entwicklungsumgebung: MS Visual Studio C# 2019
Herkunft: Holzwickede, NRW


Lucky_001 ist offline

Wie kann ich alle Mikrocontroller im Netzwerk suchen?

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

Hallo,

ich habe mehrer mikrocontroller die via DHCP in meinem Netzwerk sind. Da ich in meiner Software am PC die IP adressen nicht alle manuell eingeben möchte, möchte ich gerne in meinem PC programm nach den mikrocontrollern suchen können. Heißt also, dass ich sie über einen bestimmten port ansteuere und damit quasi abfrage ob es ein mikrocontroller ist oder nicht. Leider ist auch genau da mein Problem. Ich habe noch nicht so viel mit Ethernet gemacht und habe daher nicht wirklich einen plan wie ich das umsetzten soll.

Ich danke im vorraus für alle Antworten!

MfG
Daniel S.
24.11.2020 11:13 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
HansFred
myCSharp.de-Mitglied

Dabei seit: 19.10.2020
Beiträge: 48


HansFred ist offline

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

das nennt sich discovery und muss das gerät unterstützen indem es zum beispiel auf ein broadcast im netzwerk hört. fertig gibt es das nicht.
24.11.2020 12:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trib trib ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.04.2008
Beiträge: 680
Entwicklungsumgebung: C#


trib ist offline

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

Aber halbfertig gibt es das.

Per UDP-Broadcast kannst Du alle Geräte in einem Netzwerk anfragen, welche in einer IP-Range liegen und auf einen Port lauschen.
.Net-Seitig z.B. der  UdpClient.

Seitens des µC (ich nehme mal an ein ESP32 oder8266) gibt es  WiFiUDP.

Dann sendest Du eine Nachricht raus und Deine Mikrocontroller antworten entsprechend darauf.


Oder man schaut sich z.B. an wie die OTA Update-Libraries das machen.
Dabei meldet sich auch jeder ESP im Netzwerk bei der Arduino-IDE und sie erscheinen in der COM-Port Liste (Mit MAC-Adresse und Namen).
24.11.2020 14:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Lucky_001 Lucky_001 ist männlich
myCSharp.de-Mitglied

avatar-136.gif


Dabei seit: 13.11.2020
Beiträge: 15
Entwicklungsumgebung: MS Visual Studio C# 2019
Herkunft: Holzwickede, NRW

Themenstarter Thema begonnen von Lucky_001

Lucky_001 ist offline

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

Ich habe mir mal das zum UdpClient durchgelesen. Nun hab ich aber noch ein paar fragen:

1. Was ist der Host? Ist das das gateway sprich der router z. b.?

2. Der port spielt doch keine Rolle, solange ich bei meinen Microcontrollern diesen port für Udp eingerichtet habe, oder?

3. Ich habe zwei UdpClients in meinem Programm, der eine zum Zuhören, der ander zum Schreiben, richtig?


Und als mikrocontroller verwende ich selbstgebaute Microcontroller der Firma wo ich arbeite. Der Prozessor ist ein ATmega328PB-AU und die Ethernet verbindung wird über einen WIZnet W5500 (wie bei dem Ethernetshield des Arduinos) realiesiert.

Bei den Microcontrollern weiß ich auch noch nicht wie ich das genau machen soll.
24.11.2020 14:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Papst Papst ist männlich
myCSharp.de-Mitglied

Dabei seit: 28.09.2014
Beiträge: 340
Entwicklungsumgebung: VS2017
Herkunft: Kassel


Papst ist offline

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

Wenn deine µC sich per DHCP eine IP holen... kannst du die Informationen evtl. von deinem DHCP Server auslesen?
Eine z.B. Fritzbox hat dazu eine passende API:  https://avm.de/service/schnittstellen/
Gibt auch hier im Forum jemanden, der eine passende Bibliothek geschrieben hat, ob die die notwendige Heimnetzgeräte API implementiert kann ich dir aber nicht sagen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Papst am 24.11.2020 16:49.

24.11.2020 16:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
trib trib ist männlich
myCSharp.de-Mitglied

Dabei seit: 22.04.2008
Beiträge: 680
Entwicklungsumgebung: C#


trib ist offline

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

Zitat:
1. Was ist der Host? Ist das das gateway sprich der router z. b.?

Nein, Du hast einen Sender und einen (oder mehrere) Empfänger.
Oder Master/Slave, Host/Client, wie auch immer man es nennen mag.

Sprich: Einer muss ja den Broadcast initiieren und jemand anderes diese Nachricht empfangen und beantworten.
In Deinem Fall wird die Software am PC der Host sein und die Mikrokontroller die Empfänger.
Der Router macht wie er heißt: Er routet den Weg zwischen den Geräten.

Zitat:
2. Der port spielt doch keine Rolle, solange ich bei meinen Microcontrollern diesen port für Udp eingerichtet habe, oder?

Wenn Du den Port angibst, spielt er doch bereits eine Rolle!
Die Broadcast-Nachricht soll ja nicht alle Geräte im Netzwerk ansprechen, sondern nur Deine. Stell es Dir als eine Art Filter vor!

Zitat:
3. Ich habe zwei UdpClients in meinem Programm, der eine zum Zuhören, der ander zum Schreiben, richtig?

Das ist etwas irreführend, da die Klasse UDPCLient heißt. Sie kann aber sowohl Sender als auch Empfänger sein.

Prinzipiell macht es das Beispiel von Microsoft ja genau so:
Nachricht an einen Port senden, optimaler weise mit einer IP ala 192.168.2.255 damit alle IP´s in der Range angesprochen werden.
Dann wartet dieser auf einen Reponse, also die Rückantwort. Diese enthält dann die IP des antwortenden Gerätes. Und was auch immer Du in die Nachricht schreibst.

Dann obliegt es Dir, nochmal eine weitere Direkt-Verbindung mit diesem einen Gerät aufzumachen oder ob Dir die Antwort schon reicht.

Du solltest dann natürlich berücksichtigen, dass Du bei mehreren Geräten im Netzwerk auch mehrere Antworten bekommen wirst.


PS: Bei den ATmega´s wird der Speicher natürlich schnell knapp.
Je nach dem was Du da überhaupt vor hast, würde ich ggf. einen anderen Weg einschlagen.
24.11.2020 17:10 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 2 Monate.
Der letzte Beitrag ist älter als 2 Monate.
Antwort erstellen


© Copyright 2003-2021 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 24.01.2021 16:41