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
- Child:
- 28:f1dd68d07aec
--- 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