000
10.04.2006, 11:31 Uhr
EagleFox
|
Hallo Leute,
ich habe hier ein kleines Programm, was ich leicht modifizieren möchte. Nur bekomme ich das mit meinen wenigen Kenntnissen nicht mehr hin.
Hier ein Teil des Programms und was ich bezwecken möchte. Die "heissen" Stellen sind mit ACHTUNG!!!!!!!!! markiert:
C++: |
//--------------------------------------------------------------------------- #include <time.h> #include <stdlib.h> #include <stdio.h> #include <iostream> #include "PQX.h" using namespace std; //---------------------------------------------------------------------------
int main(int argc, char* argv[]) { // Zeiger auf ein PQXFile-Objekt anlegen PQXFile *pqx = new PQXFile();
// Datenstrukturen anlegen PQXFileHeader pfh; PQXBlockHeader pbh; PQXData *data;
// andere Variable FILE *f; char buffer[100]; int i; float f1,f2,f3,f4;
char datei; int sf; int ppb;
//Werte eingeben
cout << "Dateiname: "; //z.B. cu_17.dat cin >> datei; cout << "Frequenz: "; //z.B. 10000 cin >> sf; //z.B. 2000 cout << "Punkte pro Spektrum: "; cin >> ppb;
|
ACHTUNTG!!!!!!!!! Das eingeben der Daten klappt schon nicht!!! Drücke ich nach dem Dateinamen ENTER, erscheint "Frequenz: Punkte pro Spektrum: " auf dem Bildschirm. Er überspringt die Eingabe der Frequenz.
C++: |
// PQXFileHeader füllen - Werte aus Header in .dat! pfh.SampleFrequency = sf; pfh.PointsPerBlock = ppb; pfh.StartTime = 0; // keine Zeitinfo mehr...
// Neue pqx-Datei zum Schreiben öffnen pqx->WriteFile(datei".pqx", &pfh);
|
ACHTUNG!!!!!!!!! An dieser Stelle möchte ich, das der neue pqx-Dateiname aus dem vorher eingegebenen Dateinamen und der Endung .pqx besteht. Das klappt aber so nicht.
C++: |
// dat-Datei zum Lesen öffnen f = fopen(datei, "rt");
|
ACHTUNG!!!!!!!!! An dieser Stelle soll er die Datei mit dem vorher eingegebenen Dateinamen öffnen. Das klappt aber so wohl auch nicht! ;-( Ich weiss nicht, wie ich die Variable "datei" da vernünftig einbinde.
C++: |
// Speicher belegen data = new PQXData[pfh.PointsPerBlock];
// PQXBlockHeader füllen - alles auf Null pbh.TimeStamp = 0; for (i = 0; i < 8; i++) { pbh.Counter[i] = 0; pbh.DigitalIN[i] = 0; }
// Lesen: Zunächst Header ignorieren do { fgets(buffer, 100, f); printf(buffer); } while (buffer[0] == '#');
// Jetzt Datenpunkte lesen while (!feof(f)) { for (i = 0; i < pfh.PointsPerBlock; i++) { sscanf(buffer, "%f %f %f %f\n", &f1, &f2, &f3, &f4);
// Umrechnung V - A/D-Werte data[i].Ch[0] = f1 * 3276.8; data[i].Ch[1] = f2 * 3276.8; data[i].Ch[2] = f3 * 3276.8; data[i].Ch[3] = f4 * 3276.8;
// Nächste Zeile holen fgets(buffer, 100, f); }
// Zweite Leerzeilen überlesen fgets(buffer, 100, f);
// Erste neue Zeile mit Daten holen für nächsten Durchlauf fgets(buffer, 100, f);
// Daten in pqx-Datei schreiben pqx->WriteBlock(&pbh, data); }
// alles wieder schließen fclose(f); delete data;
return 0; } //-----
|
So, das ist der eine Teil des Programms. Ich hoffe Ihr könnt mir helfen!
Besten Dank im voraus!
Bearbeitung von FloSoft: |
CPP-Tags selbst nutzen!!!!
|
Dieser Post wurde am 10.04.2006 um 11:33 Uhr von FloSoft editiert. |