printf macht probleme
-
Guten Tag,
habe ein programm geschrieben, das mir Azahl der Impulse eines analoges Signals bestimmt.
Das signal wird mit 10 Msample abgetastet und die werte in einem zyklischen Puffer gespeichert.( die Adresse des Puffers ist der Zeiger PData und die länge beträgt 1000 ).die Methode sieht so aus :
#define LINELEN 500 typedef unsigned short UINT16; void Process_Data(int fd2) { int Mittelwert; UINT16 Impuls_puffer[Buf_size]; UINT16 *pt2 = Mean_puffer; UINT16 *ptx; UINT16 i; UINT16 k = 0; UINT16 Impulszahl = 0; memset(Impuls_puffer,0,sizeof(Impuls_puffer)); memcpy( Mean_puffer,pData,pDataSize ); Mittelwert = Mean_Data( Mean_puffer, LINELEN, NUMLINES ); printf("Mittelwert = %d\n", Mittelwert); sleep(3); while (1) { ptx=pData; for ( i = 0; i < 2*LINELEN; i++,ptx++ ) { // Schwelle ueberschritten ? if ( *ptx > (UINT16) Mittelwert + Rauschpegel ) { //printf( "Schwelle ueberschritten \n" ); k = k+1; } // Schwelle unterschritten ? if ( *ptx < (UINT16) Mittelwert + Rauschpegel && k > 4 ) { //printf( "Schwelle unterschritten\n" ); Impulszahl = Impulszahl + 1; k = 0; //printf( "irgend etwas\n"); } } printf("Zahl der Impulse pro 0.1ms =%d\n",Impulszahl); Impulszahl = 0; sleep(3); } }
Das Programm funktioniert richtig aber so bald ich die Zeile 38 in den Code hinzufüge wird die Anzahl der Impulse falsch berechnet.
Es gibt sicherlich eine Erklärung dafür, die ich noch nicht rausfinden haben können ( habe eine Vermutung). Ich hoffe ihr könnt mir weiter helfen .MFG Youness
-
myouness27 schrieb:
Es gibt sicherlich eine Erklärung dafür, die ich noch nicht rausfinden haben können ( habe eine Vermutung).
Gibt es einen Grund warum du uns diese Vermutung vorenthältst?
-
ich bin mir einfach nicht sicher ich denke die Ausführungsdauer von printf ist zu lange so dass inzwischenzeit neu Impulse reinkommen .
vielleicht liege ich total falsch .MFG
-
myouness27 schrieb:
ich bin mir einfach nicht sicher ich denke die Ausführungsdauer von printf ist zu lange so dass inzwischenzeit neu Impulse reinkommen .
vielleicht liege ich total falsch .wenn du die impulserzeugung vor eintritt in die funktion mal ausschaltest, dann weisst du ja, ob deine vermutung stimmt...