Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

NTP Zeitabgleich Kategorie: Programmierung Basic (von Wolle - 7.03.2015 14:23)
Ich nutze:
CC-Pro 32 Application Board, C-Control Pro AVR32
Hallo,
ich versuche mittels NTP einen Zeitabgleich zu realisieren.
Leider kann ich hier den Quell-Port nicht setzen (bei NTP ist ja Ziel und Quelle gleich).

Absetzen der Anforderung geht, kommt aber kein Paket zurück.
Wenn ich mittels Wireshark schau, dann sehe ich die Fehlermeldung "Port unreachable".
Klar, er versucht auf dem Port 49152 zu erreichen, ist aber nicht geöffnet.
Wenn ich dies im Programm mache, den kommt eben die Fehlermeldung "Port 49153 unreachable".

Hat jemand schon erfolgreich soetwas realisiert?

So habe ich es gemacht:

'******************************************************************************
'Variable für Ethernet - NTP
Dim buf_ntp(ETH_BUF(48,0))  = {_
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,_
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00  } As Byte

Dim xy                   As Word


Sub main()

Dim buf(ETH_BUF(500, 0)) As Byte
Dim rbuf(200)            As Byte
Dim txt1(10)             As Char
Dim info(4),plen         As Word
Dim ip                   As ULong

 ETH_SetConnBuf(buf, 500, 0)

' NTP aufrufen
  buf_ntp(0) = 0x1b 'Kennung Version 3 + NTP-Client  => LI + VN + Mode
                    'LI   = 00:  keine Warnung
                    'VN   = 011: Version-Nr. 3
                    'Mode = 011: Client

 Do While True      'Endless loop

  ETH_SendUDP(IP_ADDR(192,168,1,1), 123, buf_ntp, 48) '=> fritz.box
  AbsDelay(500)
  xz = ETH_ListenUDP(123)

  ip = ETH_CheckReceiveBuf(info)
  Msg_WriteFloat(ip)
  Msg_WriteChar(13)

   If ip Then
     plen=info(3)
      If plen > 48 Then
       plen = 48
      End If
     ETH_ReceiveData(rbuf, plen)
      For i = 0 To plen - 1
       Msg_WriteChar(rbuf(i))
      Next
     Msg_WriteChar(13)
   End If
  ETH_CloseListenUDP(123)
 End While

 End Sub


    Antwort schreiben


Antworten: