Hallo..
Habe vor Temperaturwerte, die von einem 8051 Controller (verbunden mit
einem LM75) gesendet werden, auf dem Rechner in eine Datei zu speichern.
Das Problem was ich habe ist, das fscanf nicht auf die eingehenden Daten
vom Controller reagiert, und das C-Programm stehen bleibt.
Die eingehenden Daten werden als Ascii-Wert ständig in einer Schleife
gesendet. (z.B. "+00025.0")
Habe jetzt schon jede Menge probiert, komme aber nicht so recht weiter.
Der Temperaturwert wird im Hyperterminal korrekt angezeigt, Daten zum
Controller senden kann ich ebenfalls, somit sollte die Baudrate stimmen.
Zudem kann ich mit dem mode-Befehl die Einstellungen der
COM-Schnittstelle nicht ändern, nur anzeigen. Verwendet wird ein
Keyspan-USB-Seriell-Wandler, und Windows XP Home.
Hier mein Code:
1 | #include <stdio.h>
|
2 |
|
3 | int main (void)
|
4 | {
|
5 | int dauer, i=0, temperatur;
|
6 | FILE * logtemp;
|
7 | FILE * serialtemp;
|
8 |
|
9 | logtemp = fopen ("rs232log.txt","w");
|
10 | if (logtemp == NULL)
|
11 | {
|
12 | printf("Fehler beim Erstellen der Logdatei");
|
13 | return 1;
|
14 | }
|
15 |
|
16 | printf("Bitte Aufzeichnungszeitraum in Minuten angeben: \n");
|
17 | scanf("%i", &dauer);
|
18 |
|
19 | while (i <= dauer)
|
20 | {
|
21 | serialtemp = fopen ("com3:","r");
|
22 | if (serialtemp == NULL)
|
23 | {
|
24 | printf("Fehler beim Oeffnen der Com-Schnittstelle");
|
25 | return 1;
|
26 | }
|
27 | fscanf(serialtemp,"%i",&temperatur);
|
28 | fprintf(logtemp,"%i. Temperaturwert: %i\n",i+1, temperatur);
|
29 | sleep(1000);
|
30 | fclose (serialtemp);
|
31 | i++;
|
32 | }
|
33 | fclose(logtemp);
|
34 | return 0;
|
35 | }
|