Arduino – UdpNtpClient – Bien choisir son serveur d impression

Author: Titanfall —

Short summary: / * Udp NTP Client Obtenir l'heure à partir d'un serveur de temps NTP (Network Time Protocol) Montre comment utiliser UDP sendPacket et ReceivePacket Pour plus d'informations sur les serveurs de temps NTP et les messages nécessaires pour communiquer avec eux, voir http://en.wikipedia.org/wiki/Network_Time_Protocol créé le 4 sept. 2010 par Michael Margolis modifié le 9 avril […]

Quick overview

Site
Tutos GameServer
Canonical URL
https://tutos-gameserver.fr/2019/10/07/arduino-udpntpclient-bien-choisir-son-serveur-d-impression/
LLM HTML version
https://tutos-gameserver.fr/2019/10/07/arduino-udpntpclient-bien-choisir-son-serveur-d-impression/llm
LLM JSON version
https://tutos-gameserver.fr/2019/10/07/arduino-udpntpclient-bien-choisir-son-serveur-d-impression/llm.json
Manifest
https://tutos-gameserver.fr/llm-endpoints-manifest.json
Estimated reading time
4 minutes (186 seconds)
Word count
618

Key points

Structured content

/ * Udp NTP Client Obtenir l'heure à partir d'un serveur de temps NTP (Network Time Protocol) Montre comment utiliser UDP sendPacket et ReceivePacket Pour plus d'informations sur les serveurs de temps NTP et les messages nécessaires pour communiquer avec eux, voir http://en.wikipedia.org/wiki/Network_Time_Protocol créé le 4 sept. 2010 par Michael Margolis modifié le 9 avril 2012 par Tom Igoe modifié le 2 septembre 2015 par Arturo Guadalupi Ce code est dans le domaine public. * /

#comprendre #comprendre #comprendre // Entrez une adresse MAC pour votre contrôleur ci-dessous.// L'adresse MAC des boucliers Ethernet plus récents est indiquée sur un autocollant.octet Mac[[[[] = 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED; non signé int port local = 8888; // port local pour écouter les paquets UDP const carboniser timeServer[[[[] = "time.nist.gov"; // serveur NTP time.nist.gov const int NTP_PACKET_SIZE = 48; // l'horodatage NTP est dans les 48 premiers octets du message octet packetBuffer[[[[NTP_PACKET_SIZE]; // tampon pour contenir les paquets entrants et sortants // Une instance UDP pour nous permettre d'envoyer et de recevoir des paquets via UDPEthernetUDP Udp; vide installer() // Vous pouvez utiliser Ethernet.init (pin) pour configurer la broche CS //Ethernet.init(10); // La plupart des boucliers Arduino //Ethernet.init(5); // Bouclier ETR MKR //Ethernet.init(0); // Teensy 2.0 //Ethernet.init(20); // Teensy ++ 2.0 //Ethernet.init(15); // ESP8266 avec Adafruit Featherwing Ethernet //Ethernet.init(33); // ESP32 avec Adafruit Featherwing Ethernet // Ouvrez les communications série et attendez que le port s'ouvre: En série.commencer(9600); tandis que (!En série) ; // attend que le port série se connecte. Nécessaire pour le port USB natif uniquement // démarrer Ethernet et UDP si (Ethernet.commencer(Mac) == 0) En série.imprimer("Échec de la configuration d'Ethernet avec DHCP"); // Vérifier la présence de matériel Ethernet si (Ethernet.état du matériel() == EthernetNoHardware) En série.imprimer("Le bouclier Ethernet n'a pas été trouvé. Désolé, impossible de fonctionner sans matériel. :("); autre si (Ethernet.linkStatus() == LinkOFF) En série.imprimer("Le câble Ethernet n'est pas connecté."); // inutile de continuer, alors ne faites rien pour toujours: tandis que (vrai) retard(1); Udp.commencer(port local); vide boucle() sendNTPpacket(timeServer); // envoie un paquet NTP à un serveur de temps // attend de voir si une réponse est disponible retard(1000); si (Udp.parsePacket()) // nous avons reçu un paquet, lis les données Udp.lis(packetBuffer, NTP_PACKET_SIZE); // lit le paquet dans le tampon // l'horodatage commence à l'octet 40 du paquet reçu et compte quatre octets, // ou deux mots, long. Tout d’abord, extrayez les deux mots: non signé longue HighWord = mot(packetBuffer[[[[40], packetBuffer[[[[41]); non signé longue lowWord = mot(packetBuffer[[[[42], packetBuffer[[[[43]); // combine les quatre octets (deux mots) en un entier long // c'est l'heure NTP (secondes depuis le 1er janvier 1900): non signé longue secondesdepuis1900 = HighWord << 16 // attend dix secondes avant de demander à nouveau l'heure retard(10000); Ethernet.maintenir(); // envoie une requête NTP au serveur de temps à l'adresse indiquéevide sendNTPpacket(const carboniser * adresse) // met tous les octets du tampon à 0 memset(packetBuffer, 0, NTP_PACKET_SIZE); // Initialise les valeurs nécessaires pour former une requête NTP // (voir URL ci-dessus pour plus de détails sur les paquets) packetBuffer[[[[0] = 0b11100011; // LI, Version, Mode packetBuffer[[[[1] = 0; // strate ou type d'horloge packetBuffer[[[[2] = 6; // Intervalle d'interrogation packetBuffer[[[[3] = 0xEC; // Précision d'horloge homologue // 8 octets de zéro pour le délai et la dispersion des racines packetBuffer[[[[12] = 49; packetBuffer[[[[13] = 0x4E; packetBuffer[[[[14] = 49; packetBuffer[[[[15] = 52; // tous les champs NTP ont reçu des valeurs, maintenant // vous pouvez envoyer un paquet demandant un horodatage: Udp.beginPacket(adresse, 123); // Les requêtes NTP doivent porter le port 123 Udp.écrire(packetBuffer, NTP_PACKET_SIZE); Udp.endPacket();

Click to rate this post! [Total: 0 Average: 0]

Topics and keywords

Themes: Serveur d'impression

License & attribution

License: CC BY-ND 4.0.

Attribution required: yes.

Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json

LLM Endpoints plugin version 1.1.2.