Hallo!
Ich verwende ein W5500-Netzwerkshield (diesen hier.....) und einen ATMega32 (aktuell auf 'nem Steckbrett, später wird er uC kleiner, Mega??). Die beiden Kommunizieren via SPI.
Geht alles, ist ja dank einer Libary und Beispielcodes nicht sonderlich schwer.
Alles anzeigen
Wie gesagt, läuft gut, stabil und macht genau das, was es soll!
(Aktuell sendet er das, was er empfangen hat, zurück)
Das Problem:
Nehmen wir an, dass der Switch o.ä. mit dem der W5500 verbunden ist, kurz ausfällt. Der Link als verloren geht. Meint wegen, weil jemand was umpatcht oder der Strom ausfällt oder, oder, oder....
Wie erkenne ich dies? Die Kommunikation kommt nämlich nicht mehr zustande.
Gleiches gilt, wenn der Link nicht bereits beim "einschalten" steht. Auch hier kommt keine Kommunikation zustande.
Die Frage ist also
1. Wie erkenne ich einen aktiven Link zu einem Switch oder ähnlichem
2. Was genau muss bei oder nach dem linken initialisiert oder aktiviert werden?
Vielen Dank, schönen Sonntag
p.s.:
Ja, ich habe die Suche benutzt und ja, ich habe google benutzt Hat mich aber nicht weiter gebracht.
Evt weil ich nicht weiß, wonach ich suchen soll....
Ich verwende ein W5500-Netzwerkshield (diesen hier.....) und einen ATMega32 (aktuell auf 'nem Steckbrett, später wird er uC kleiner, Mega??). Die beiden Kommunizieren via SPI.
Geht alles, ist ja dank einer Libary und Beispielcodes nicht sonderlich schwer.
BASCOM-Quellcode
- $regfile = "m32def.dat"
- $crystal = 12000000
- $hwstack = 200
- $swstack = 220
- $framesize = 250
- Config Portb.4 = Output
- Wiz5500_cs Alias Portb.4
- Wiz5500_cs = 1
- Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0
- Spiinit
- Config Tcpip = Noint, Mac = 0.8.220.65.31.44, Ip = 192.168.0.253, Submask = 255.255.255.0, Gateway = 192.168.0.1, Localport = 5000, Chip = W5500, Spi = 1, Cs = Wiz5500_cs
- Const SocketID = 1
- Dim Result As Word
- Dim SocketStatus As Word
- Dim Befehl As String * 100
- Do
- SocketStatus = Socketstat(SocketID , 0)
- Select Case SocketStatus
- Case Sock_established
- Result = Tcpread(SocketID , Befehl)
- if Result = 0 then PRINT "FRAGE" ; Befehl ; "ENDE" ; Result
- Result = Tcpwritestr(SocketID , Befehl , 255)
- Case Sock_close_wait
- Closesocket SocketID
- Case Sock_closed
- Result = Getsocket(SocketID , Sock_stream , 5000 , 0) ' get socket for server mode, specify port 5000
- Socketlisten SocketID
- End Select
- Loop
Wie gesagt, läuft gut, stabil und macht genau das, was es soll!
(Aktuell sendet er das, was er empfangen hat, zurück)
Das Problem:
Nehmen wir an, dass der Switch o.ä. mit dem der W5500 verbunden ist, kurz ausfällt. Der Link als verloren geht. Meint wegen, weil jemand was umpatcht oder der Strom ausfällt oder, oder, oder....
Wie erkenne ich dies? Die Kommunikation kommt nämlich nicht mehr zustande.
Gleiches gilt, wenn der Link nicht bereits beim "einschalten" steht. Auch hier kommt keine Kommunikation zustande.
Die Frage ist also
1. Wie erkenne ich einen aktiven Link zu einem Switch oder ähnlichem
2. Was genau muss bei oder nach dem linken initialisiert oder aktiviert werden?
Vielen Dank, schönen Sonntag
p.s.:
Ja, ich habe die Suche benutzt und ja, ich habe google benutzt Hat mich aber nicht weiter gebracht.
Evt weil ich nicht weiß, wonach ich suchen soll....