IP, Submaske, Gateway und Port in Memory schreiben und lesen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Pluto25 schrieb:

      Subnetbask = -256?
      Gateway = -1062686207?
      Subnetbask = 255.255.255.0 = -256 wird schon stimmen sonst würde es bei der ohne DHCP auch nicht funktionieren
      Gateway = 192.168.178.77 = = -1062686207? wird auch stimmen, sonst könnte ich keine Verbindung aufbauen und am Ende bekomme ich ja auch den Print "SETTCP OK" geliefert.

      Pluto25 schrieb:

      wie verstehe ich ohne DHCP?
      Dhcp_ok() ruft die Funktion auf - kommplett auskommentiert?
      der Schalter ist nicht betätigt. am

      '-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Config für den DHCP SCHALTER ----------------
      Config Pina.1 = Input
      Porta.1 = 1
      Ip_from_dhcp Alias Pina.1
    • was mir noch einfällt,
      könnte es sein, das es am Router liegt und ich dann mit der IP was der Router mir zuweist in dem Falle die 192.168.178.42 , da ich so oft den DHCP abgerufen habe und der Router einfach nicht mitmachen möchte ?
      Aber ich sollte trotzdem allen, die Print "SETTCP OK" bekommen, oder etwa nicht?



      Naja, gut jetzt habe ich das mal auch ohne dhcp und mit ausgestecktem Netzkael gestestet und da bekomme ich trozdem den SETTCP = OK geliefert.
      Also, wird es am router auch nicht liegen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von katipefendi ()

    • Wie gesagt bau ruhig mal noch vor der If-Abfrage ein Wait ein

      BASCOM-Quellcode

      1. Waitms 500 'oder größer wählen und testen
      2. If Ip_from_dhcp = 0 Then
      3. If Dhcp_ok() = 1 Then
      4. Print "DHCP OK"
      5. Print Ip_
      6. Print Subnetmask_
      7. Print Gateway_
      8. Print Port_
      9. Else
      10. Print "DHCP Error"
      11. End If
      12. Else
      13. Gosub Set_eth_values
      14. End If
      Alles anzeigen
      Vielleicht braucht dein W5500 etwas mehr Zeit nach dem einschalten.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Noch ein Versuch

      der IF wird verlassen siehe Ausgabe hier

      BASCOM-Quellcode

      1. If Ip_from_dhcp = 0 Then
      2. If Dhcp_ok() = 1 Then
      3. Print "DHCP OK"
      4. Print Ip_
      5. Print Subnetmask_
      6. Print Gateway_
      7. Print Port_
      8. Else
      9. Print "DHCP Error"
      10. End If
      11. Else
      12. Gosub Set_eth_values
      13. End If
      14. Print Ip_
      15. Print Subnetmask_
      16. Print Gateway_
      17. Print Port_
      18. Local_port = Port_
      19. Print "If wurde verlassen"
      20. Waitms 300
      21. Settcp 0.8.220.77.05.15 , Ip_ , Subnetmask_ , Gateway_
      22. Waitms 300
      23. Print "SETTCP OK"
      Alles anzeigen
      Print "If wurde verlassen" wird ausgegeben
      dann hängt es wirklich am Settcp 0.8.220.77.05.15 , Ip_ , Subnetmask_ , Gateway_ aber warum????
    • djmsc schrieb:

      Hast du schon mal eine andere Mac-Adresse probiert?
      ja, gleiches verhalten


      Es liegt definitiv am SETTCP, denn

      BASCOM-Quellcode

      1. If Ip_from_dhcp = 0 Then
      2. If Dhcp_ok() = 1 Then
      3. Print "DHCP OK"
      4. Print Ip_
      5. Print Subnetmask_
      6. Print Gateway_
      7. Print Port_
      8. Settcp 0.8.220.77.05.15 , Ip_ , Subnetmask_ , Gateway_
      9. Else
      10. Toggle Error_led
      11. Print "DHCP Error"
      12. End If
      13. Else
      14. Gosub Set_eth_values
      15. End If
      16. Local_port = Port_
      17. Print "If wurde verlassen"
      18. If Ip_from_dhcp = 1 Then
      19. Settcp 0.8.220.77.05.15 , Ip_ , Subnetmask_ , Gateway_
      20. End If
      21. Print "SETTCP OK"
      Alles anzeigen
      hier kommt er nicht mehr aus dem IF raus bleibt bei SETTCP hängen

      Das ist mir ein Rätsel, das ist ein BASCOM fehler da muss ein Experte ran :)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von katipefendi ()

    • Was mir gerade noch aufgefallen ist, du hast

      BASCOM-Quellcode

      1. Config Tcpip = Noint , Mac = 0.8.220.77.05.15 , Ip = Ip_ , Submask = Subnetmask_ , Gateway = Gateway_ , Localport = 2005 , Chip = W5500 , Spi = 1 , Cs = Portb.4
      stehen, aber die Variablen Ip_, Subnetmask_ und Gateway_ sind zu diesem Zeitpunkt noch leer also NULL. Könnte es vielleicht noch damit zusammen hängen?
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Und wenn ich den SETTCP am Ende der Funktion habe, bleibt es ebenfalls hier drin Hängen und Dhcp_OK wird nicht ausgegeben.

      BASCOM-Quellcode

      1. If Tt(1) = 2 Then 'DHCP pack reply?
      2. If Xidcookie_ok() = 1 Then 'same XactionID?
      3. If Tt(241) = 53 Then 'Dhcpmessagetype DHCPACK
      4. If Tt(242) = 1 Then
      5. If Tt(243) = 5 Then ' Dhcp_ack
      6. Pa(1) = Tt(20) 'Get IP in buffer
      7. Pa(2) = Tt(19)
      8. Pa(3) = Tt(18)
      9. Pa(4) = Tt(17)
      10. Btmp = Memcopy(pa(1) , Dhcp_ip(1) , 4 , 3)
      11. Eth_ip(1) = Pa(4) : Eth_ip(2) = Pa(3) : Eth_ip(3) = Pa(2) : Eth_ip(4) = Pa(1)
      12. Print "My IP: ";
      13. Print_parse
      14. If Parse_dhcp_msg(1) = 1 Then 'subnet mask
      15. Print "Sub Net Mask: ";
      16. Print_parse
      17. Btmp = Memcopy(pa(1) , Dhcp_submask(1) , 4 , 3)
      18. Eth_mask(1) = Pa(4) : Eth_mask(2) = Pa(3) : Eth_mask(3) = Pa(2) : Eth_mask(4) = Pa(1)
      19. End If
      20. If Parse_dhcp_msg(3) = 1 Then 'router
      21. Print "Default Gateway: ";
      22. Print_parse
      23. Btmp = Memcopy(pa(1) , Dhcp_gateway(1) , 4 , 3)
      24. Eth_gateway(1) = Pa(4) : Eth_gateway(2) = Pa(3) : Eth_gateway(3) = Pa(2) : Eth_gateway(4) = Pa(1)
      25. End If
      26. If Parse_dhcp_msg(54) = 1 Then 'dhcpserveridentifier
      27. Print "DHCP Server: ";
      28. Print_parse
      29. End If
      30. If Parse_dhcp_msg(6) = 1 Then 'DNS
      31. Print "DNS Server: ";
      32. Print_parse
      33. End If
      34. Print "Reconfig..."
      35. 'Settcp Mac_add(1) , Dhcp_ip(1) , Dhcp_submask(1) , Dhcp_gateway(1)
      36. Eth_port = "2005"
      37. Ip_ = Maketcp(eth_ip(1) , Eth_ip(2) , Eth_ip(3) , Eth_ip(4))
      38. Subnetmask_ = Maketcp(eth_mask(1) , Eth_mask(2) , Eth_mask(3) , Eth_mask(4) )
      39. Gateway_ = Maketcp(eth_gateway(1) , Eth_gateway(2) , Eth_gateway(3) , Eth_gateway(4))
      40. Port_ = Val(eth_port)
      41. Settcp 0.8.220.77.05.22 , Ip_ , Subnetmask_ , Gateway_
      42. Dhcp_ok = 1
      43. End If
      44. End If
      45. End If
      46. End If
      47. End If
      Alles anzeigen
      Also, wiegesagt devfinitiv SETTCP fehler, ich sehe da keinen fehler an meinem Code, auch wenn ich nicht der Beste bin. :) Ein Fall für den MARK Alberts
    • Warum arbeitest du eigentlich mit long-Variablen und hast dadurch zB bei subnet negative Zahlen? Verwende doch dword. Das dword ist ja noch nicht so lange in bascom verfügbar, inzwischen standard. Vielleicht arbeiten jetzt die libs auch nur noch mit dword ordentlich. Aber, ich kenn mich mit dem Netzwerkzeugs nicht aus, ist nur so ein Gedanke.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      Aber, ich kenn mich mit dem Netzwerkzeugs nicht aus, ist nur so ein Gedanke.
      Schade, das du dich damit nicht aus kennst, hätte gehofft, das du nach deinem Urlaub mir helfen könntest :)
      Nun, warum ich da Long Variablen nehme, in dem Beispiel ohne den DHCP Teil funktioniert alles wunderbar auch mit dem Negativen Werten.
      Denn die Werte werden dann mit MAKETCP in eine richtige IP bzw in SUBMASK umgewandelt.

      Soweit funktioniert das ja auch alles, das Problem ist nur, das es in der SETTCP dann hängen bleibt, obwohl die richtige Werte zugewiesen werden.
      Ich habe die Werte auch in Terminal ausgegeben, die sind korrekt.

      Es ist wirklich ein Rätsel, denn das Beispiel von MARK ALBERTS bzw. Atilio Mosca auf der Seite hier funktioniert auch nicht, da wird auch nicht Print "DHCP OK" ausgegeben.
      Es bleibt in der Funktion in der Zeile wo die Settcp Mac_add(1) , Ip(1) , Submask(1) , Gateway(1) steht hängen.

      Ich bin am Ende mit meinem Latein...

      Wenn du mal zurück bist vom Urlaub, kannst mich mal besuchen und ich werde dir es demonstrieren.

      VG
      Katip