Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: pixy2.cpp
- Revision:
- 27:bee63ac9b70b
- Parent:
- 26:a56cc5d715e9
--- a/pixy2.cpp Thu Nov 28 07:39:32 2019 +0000 +++ b/pixy2.cpp Tue Jan 21 12:59:37 2020 +0000 @@ -1,6 +1,7 @@ #include "pixy2.h" extern int sommeDeControle,sommeRecue; +extern char *ptr; PIXY2::PIXY2(PinName tx, PinName rx, int debit) { @@ -634,7 +635,8 @@ T_pixy2RcvHeader *msg = (T_pixy2RcvHeader*) &Pixy2_buffer[hPointer]; T_pixy2ErrorCode cr = PIXY2_OK; T_pixy2LineFeature* lineFeature; - int fPointer; + int fPointer; // Pointeur sur une feature entière + int fdPointer; // Pointeur sur un élément à l'intérieur d'une feature if (frameContainChecksum) { // Si la trame contient un checksum if (pixy2_validateChecksum (&Pixy2_buffer[hPointer]) != 0) { // On lance la validation du checksum @@ -645,25 +647,29 @@ fPointer = dPointer; // On pointe sur la premiere feature do { lineFeature = (T_pixy2LineFeature*) &Pixy2_buffer[fPointer]; // On mappe le pointeur de structure sur le buffer de réception des features. + ptr = (char*) &Pixy2_buffer[fPointer]; if (lineFeature->fType == PIXY2_VECTOR) { // On regarde si le type est vecteur Pixy2_numVectors = lineFeature->fLength / sizeof(T_pixy2Vector); // Si oui, on compte combien il y a de vecteurs - Pixy2_vectors = (T_pixy2Vector*) &Pixy2_buffer[fPointer + 2]; // On mappe le résultat - fPointer += lineFeature->fLength; // On déplace le pointeur de données et on recommence + fdPointer = fPointer + 2; // On pointe sur le premier élément de la feature + Pixy2_vectors = (T_pixy2Vector*) &Pixy2_buffer[fdPointer]; // On mappe le résultat + fPointer += lineFeature->fLength + 2; // On déplace le pointeur de données et on recommence cr |= PIXY2_VECTOR; } if (lineFeature->fType == PIXY2_INTERSECTION) { // On regarde si le type est intersection Pixy2_numIntersections = lineFeature->fLength / sizeof(T_pixy2Intersection); // Si oui, on compte combien il y a d'intersections - Pixy2_intersections = (T_pixy2Intersection*) &Pixy2_buffer[fPointer]; + fdPointer = fPointer + 2; // On pointe sur le premier élément de la feature + Pixy2_intersections = (T_pixy2Intersection*) &Pixy2_buffer[fdPointer]; // On mappe le résultat sur l'entête de l'intersection - fPointer += lineFeature->fLength; // On déplace le pointeur de données et on recommence + fPointer += lineFeature->fLength + 2; // On déplace le pointeur de données et on recommence cr |= PIXY2_INTERSECTION; } if (lineFeature->fType == PIXY2_BARCODE) { // On regarde si le type est codebarre Pixy2_numBarcodes = lineFeature->fLength / sizeof(T_pixy2BarCode); // Si oui, on compte combien il y a de codebarre - Pixy2_barcodes = (T_pixy2BarCode*) &Pixy2_buffer[fPointer]; // On mappe le résultat - fPointer += lineFeature->fLength; // On déplace le pointeur de données et on recommence + fdPointer = fPointer + 2; // On pointe sur le premier élément de la feature + Pixy2_barcodes = (T_pixy2BarCode*) &Pixy2_buffer[fdPointer]; // On mappe le résultat + fPointer += lineFeature->fLength + 2; // On déplace le pointeur de données et on recommence cr |= PIXY2_BARCODE; } } while(fPointer < ((dataSize - 1) + dPointer)); // Tant qu'il y a des données à traiter