Ich nutze diesen Ringbuffer hier:
https://github.com/rlogiacco/CircularBuffer
Nun möchte ich diesen Ringbuffer direkt an eine Funktion übergeben,
sodass der Wert dort verarbeitet werden kann. Er kann in der Praxis wie
ein Array verwendet werden, jedoch stimmt natürlich der Datentyp nicht
überein.
1 | #include "CircularBuffer.h"
|
2 | #define buffSize 10
|
3 | CircularBuffer <int, buffSize> ringBuffer; //Buffer1
|
4 |
|
5 | void setup() {
|
6 |
|
7 | fooBar(ringBuffer);
|
8 | }
|
9 |
|
10 | void loop() {
|
11 |
|
12 | }
|
13 |
|
14 | void fooBar (int* workingArray){
|
15 | for (int i=0; i< 5; i++){
|
16 | workingArray[i]++;
|
17 | }
|
18 | }
|
Als Fehler erhalte ich (logischerweise):
1 | cannot convert 'CircularBuffer<int, 10u>' to 'int*' for argument '1' to 'void fooBar(int*)'
|
Wie handled man so etwas normalerweise? Oder wie realisiert man einen
Ringbuffer sonst?
Als Workaround hatte ich erst daran gedacht den Ringbuffer in ein
temporäres Array zu schreiben und dieses dann der Funktion zu übergeben.
Nach dem Funktionsaufruf muss dann natürlich das Array wieder in den
Ringbuffer kopiert werden....
Danke!