system
1
Bonjour a tous,
Je rencontre un problème dans l'envoi de packet UDP. Le checksum n'est pas valide.
Donc je cherche comment envoyer des packets UDP avec un checksum valide.
Si quelqu'un peu m'aider.
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);
unsigned int localPort = 8888;
EthernetUDP Udp;
void setup() {
Ethernet.begin(mac,ip);
Udp.begin(localPort);
}
void loop() {
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write("hello");
Udp.endPacket();
}
Merci
Manu
system
2
Bonjour a tous
Apres avoir regardé les trames UDP le probleme est que le soft avec lequel je souhaite communiquer fait un CRC en fin de champ data.
J'ai un bout de code en c mais je ne connais pas cette langue :-(.
Si quelqu'un peu me le traduire en arduino je suis preneur.
static int verify_crc(const char *lpszBuffer)
{
unsigned char crc = 0;
unsigned char lastbyte = 0;
unsigned char %%*%%ptr = (unsigned char%%*%%) lpszBuffer;
while( ! (%%*%%ptr & 0x80) && %%*%%ptr )
crc += %%*%%ptr++;
crc |= 0x80;
}
Merci de votre aide
Manu
B_tto
3
Salut,
A mon avis les %% sont en trop, retire les et le code devient parfaitement cohérent 
system
4
Bonjour
Oui merci de la réponse,il y a bien un problème de copier / coller....
static int verify_crc(const char *lpszBuffer)
{
// Verify CRC
unsigned char crc = 0;
unsigned char lastbyte = 0;
unsigned char *ptr = (unsigned char*) lpszBuffer;
while( ! (*ptr & 0x80) && *ptr )
crc += *ptr++;
crc |= 0x80;
return ((crc == *ptr) && (*(ptr+1) == '\0'));
}
Mais avec arduino comment récupérer lpszBuffer ?
Manu
lpszBuffer c'est l'argument passé à la fonction.
Il suffit de mettre le nom de ton buffer à l'appel de la fonction
manu_07:
J'ai un bout de code en c mais je ne connais pas cette langue :-(.
Le "langage arduino" c'est du C. Donc en fait tu connais le C.
system
6
Bonjour a tous
Oui il est vrai que l'arduino utilise le C mais ce n'est pas pour cela que je le maîtrise .....
Grace a vos réponses j'arrive a calculer le CRC et le PTR ....
Mais comment ajouter a la trame envoyée le deux variables CRC et PTR en hexa ?
Le schéma de la trame est:
DATA CRC PTR.
Si quelqu'un peu me donner un coup de main
Merci