Hello Dear TMRh20,
Thank you very much for you're help and you're time ! ! !
The pipes has confusing me too but from the time it is working for now it is ok i will try later when i get more free time to read and play until understand well.
I see you' re library and yes you are a Genius ! ! ! You make it much better ! ! ! Well Done ! ! ! I have install it and this i will use it 
Because the array it will not fixed i should be make it to calculate automatically, so i try to make a code only for this for to test and be sure this piece of code working well before i try to add and the command for the nRF24L01 library.
So far after few hour's i do the follow:
unsigned int Raw[] = {4600,4450,650,1600,650,1600,650,1600,650,500,600,500,650,500,650,500,600,500,650,1600,650,1600,650,1600,650,500,650,450,650,500,650,500,600,500,650,500,600,1650,600,500,650,500,600,500,650,500,600,500,650,500,650,1600,650,500,600,1650,600,1650,600,1650,650,1600,650,1600,650,1600,650};
unsigned int output[31]; // For the payload of nRF24L01 array 30 + 1 for null termination
int Rawsize = sizeof(Raw)/sizeof(unsigned int); // Get the raw size of the array
void setup()
{
Serial.begin(57600);
Serial.println("Starting");
Serial.print("Size of array: ");
Serial.println(Rawsize); // Show me the size of the array
Serial.println(Rawsize/30); // Show me how many times i will do the loop
Serial.println();
}
void loop()
{
byte q = 0; // Counter for print the Raw code to compare the output
for (byte i = 0; i <= Rawsize/30; i++){ // Do a loop for send 30 byte until complete the full array
Serial.print("Count i = ");
Serial.println(i);
if (i == Rawsize/30){ // is the last number ? check if it is full
byte RemainSize = Rawsize - (Rawsize/30) * 30; // calculate the remaing array ...
memcpy(output,&Raw[i*30],RemainSize * 2); //62 fill 0 to 30 ? and 30 fill 0 to 15 ?
// debug only for check in serial monitor if i get the correct data
for (byte x = 0;x < RemainSize; x++){
Serial.print("Count x: ");
Serial.print(x);
Serial.print(" Data: ");
Serial.print(output[x]);
Serial.print(" Raw data: ");
Serial.println(Raw[q]);
q++;
}
}else{
memcpy(output,&Raw[i*30],62); //62 fill 0 to 30 ? and 30 fill 0 to 15 ?
// debug only for check in serial monitor if i get the correct data
for (byte x = 0;x < 30; x++){
Serial.print("Count x: ");
Serial.print(x);
Serial.print(" Data: ");
Serial.print(output[x]);
Serial.print(" Raw data: ");
Serial.println(Raw[q]);
q++;
}
}
// radio.write(&output,sizeof(output)); // It send 30 bytes array each time
delay(100); // it is ok this delay ? or i can make it less ?
}
}
and the result from the serial monitor i got it is :
Starting
Size of array: 67
2
Count i = 0
Count x: 0 Data: 4600 Raw data: 4600
Count x: 1 Data: 4450 Raw data: 4450
Count x: 2 Data: 650 Raw data: 650
Count x: 3 Data: 1600 Raw data: 1600
Count x: 4 Data: 650 Raw data: 650
Count x: 5 Data: 1600 Raw data: 1600
Count x: 6 Data: 650 Raw data: 650
Count x: 7 Data: 1600 Raw data: 1600
Count x: 8 Data: 650 Raw data: 650
Count x: 9 Data: 500 Raw data: 500
Count x: 10 Data: 600 Raw data: 600
Count x: 11 Data: 500 Raw data: 500
Count x: 12 Data: 650 Raw data: 650
Count x: 13 Data: 500 Raw data: 500
Count x: 14 Data: 650 Raw data: 650
Count x: 15 Data: 500 Raw data: 500
Count x: 16 Data: 600 Raw data: 600
Count x: 17 Data: 500 Raw data: 500
Count x: 18 Data: 650 Raw data: 650
Count x: 19 Data: 1600 Raw data: 1600
Count x: 20 Data: 650 Raw data: 650
Count x: 21 Data: 1600 Raw data: 1600
Count x: 22 Data: 650 Raw data: 650
Count x: 23 Data: 1600 Raw data: 1600
Count x: 24 Data: 650 Raw data: 650
Count x: 25 Data: 500 Raw data: 500
Count x: 26 Data: 650 Raw data: 650
Count x: 27 Data: 450 Raw data: 450
Count x: 28 Data: 650 Raw data: 650
Count x: 29 Data: 500 Raw data: 500
Count i = 1
Count x: 0 Data: 650 Raw data: 650
Count x: 1 Data: 500 Raw data: 500
Count x: 2 Data: 600 Raw data: 600
Count x: 3 Data: 500 Raw data: 500
Count x: 4 Data: 650 Raw data: 650
Count x: 5 Data: 500 Raw data: 500
Count x: 6 Data: 600 Raw data: 600
Count x: 7 Data: 1650 Raw data: 1650
Count x: 8 Data: 600 Raw data: 600
Count x: 9 Data: 500 Raw data: 500
Count x: 10 Data: 650 Raw data: 650
Count x: 11 Data: 500 Raw data: 500
Count x: 12 Data: 600 Raw data: 600
Count x: 13 Data: 500 Raw data: 500
Count x: 14 Data: 650 Raw data: 650
Count x: 15 Data: 500 Raw data: 500
Count x: 16 Data: 600 Raw data: 600
Count x: 17 Data: 500 Raw data: 500
Count x: 18 Data: 650 Raw data: 650
Count x: 19 Data: 500 Raw data: 500
Count x: 20 Data: 650 Raw data: 650
Count x: 21 Data: 1600 Raw data: 1600
Count x: 22 Data: 650 Raw data: 650
Count x: 23 Data: 500 Raw data: 500
Count x: 24 Data: 600 Raw data: 600
Count x: 25 Data: 1650 Raw data: 1650
Count x: 26 Data: 600 Raw data: 600
Count x: 27 Data: 1650 Raw data: 1650
Count x: 28 Data: 600 Raw data: 600
Count x: 29 Data: 1650 Raw data: 1650
Count i = 2
Count x: 0 Data: 650 Raw data: 650
Count x: 1 Data: 1600 Raw data: 1600
Count x: 2 Data: 650 Raw data: 650
Count x: 3 Data: 1600 Raw data: 1600
Count x: 4 Data: 650 Raw data: 650
Count x: 5 Data: 1600 Raw data: 1600
Count x: 6 Data: 650 Raw data: 650
It looks done what i need to do.
Really confusing me this piece of code memcpy(output,&Raw[i*30],62);
62 means, copy 62 bytes (if exist all) from the raw to output ? at the begin i use 30 but it was copy only the first 15 with the real code the other was filling with 0 when i do it 62 then i got the 30 bytes in output with correct data.
I left 2 bytes, the first one i was thinking to use as a start byte and the other as and byte, but i was thinking something like
S1 for first 32 bytes and E1 for the end of the 32 bytes
S2 for second 32 bytes and E2 for the end of 32 bytes
or for example i must send two inform from S2 and then check the sequence from E1 , E2
S2 for first 32 bytes and E1 for the end of the 32 bytes
S2 for second 32 bytes and E2 for the end of 32 bytes
If this it is fine how i can make output[0] = S2 ? Can i ?
Thank you in Advance.
Best Regards,
Tasos