Sensor Aktor Modul - Drehzahlberechnung bei versch. Spannungen
-
Rück mal vernünftig ein. Du überschreibst erst die vorherigen Antworten und wertest dann nur die letzte Antwort aus.
-
SeppJ schrieb:
Rück mal vernünftig ein. Du überschreibst erst die vorherigen Antworten und wertest dann nur die letzte Antwort aus.
Habs jetzt hoffentlich richtig eingerückt.
In welcher Zeile ist denn der Fehler? Kann mit der Antwort irgendwie nicht wirklich was anfangen
-
Bei näherer Betrachtung sieht es nur falsch aus, erklärt aber deinen Fehler nicht. Um deinen Fehler zu klären, müsste man den relevanten Code kennen. Hierzu empfehle ich den dritten Link in meiner Signatur.
-
Naja,
hab den Fehler jetzt selber gefunden...Weiß nicht, bin von anderen Foren irgendwie mit mehr Hilfsbereitschaft verwöhnt.
Ich helfe nebenbei auch gerne und oft wo ich kann, mein Wissen bezieht sich halt mehr auf die Elektronik.In dem Fall finde ich sollte man halt doch die Aufgabenstellung und meine Implementierung komplett kennen, soviel Text isses ja nicht und da das Anfängeraufgaben sind sollten sie ja in so einem Forum ohne Probleme verstanden werden...
Grade bei solchen Fehlern hilft es oft wenns ein anderer mal überfliegt, wenn man selber stundenlang auf den Code gesehen hat..Dafür ist es doch da, dass man Hilfe von Leuten bekommt die auf dem Gebiet grade besser sind und Hilfe gibt wenn man selbst mehr Ahnung hat.
Naja, trotzdem Danke..
void main (void) { IsPCI6503Available(); msve=0.01; status==false; //Eigenes Programm while (msve!=0.0) { //Motorspannung schreiben Lesen(); Schreiben(); // Schleife verlassen, Motordrehzahl runterfahren WriteCommand(0); //status false status=ReadStatus(); // Statusbit abfragen while (status==false) { WriteCommand(3); //Kommando Motor Spannung schreiben status=ReadStatus(); // Statusbit abfragen } msva=(msve/5)*255; int daten= (int) msva; //Gleitkommazahlwert in integer wert umformen WritePortB(daten); // schreibt die Daten an Port B } // Diese Klammer war falsch gesetzt hat den Block nicht mit eingeschlossen }
-
da_miez schrieb:
Weiß nicht, bin von anderen Foren irgendwie mit mehr Hilfsbereitschaft verwöhnt.
Ich helfe nebenbei auch gerne und oft wo ich kann, mein Wissen bezieht sich halt mehr auf die Elektronik.Lol, wut?
Du liest die mit wichtig markierten Threads nicht, du schreibst im komplett falschen Forum, du zeigst den relevanten Code nicht, du stellst keine klare Frage. Du hast echt Glück, dass ich geantwortet habe und nicht eines der Forenmitglieder mit noch direkterer Sprache und findest das schon unhöflich?
Wenn dir jemand einen Berg Elektroschrott vor die Füße schmeißt und sagt "Mach mal!", wie reagierst du dann?
-
Entschuldig, aber diese Klammer war immer da.
Ich hab da aber noch eine Frage zu Zeile 32:da_miez schrieb:
} // Diese Klammer war falsch gesetzt hat den Block nicht mit eingeschlossen } // Zeile 32: Und Wozu gehört diese Klammer :confused:
-
Ja, seh ich ein. War wohl etwas genervt, weil ich den ganzen Tag an so nem dämlichen Tippfehler dransaß
huch
-
Darum ist eine saubere Einrückung wichtig.
Und die (meisten) IDEs und Editoren zeigen dir auch die Klammerpaare an.
-
Ich nehme an der Beitragsersteller programmiert mit Visual C++ von M$.
Wenn das so ist, ich hab z.Z. kein M$ - C oder C++ Compiler am Start, wird das als C-Quelltext von Microsoft akzeptiert? Oder muss das, ich bin mir nicht ganz sicher wie viel C99 Microsoft zufällig beherrscht, unter Microsoft als C++ compiliert werden?
Andere Compiler dürften Probleme mit Besonderheiten von Microsoft-C in dem Quelltext haben.Das ist halt die Frage im realen C oder C++. Nur pur theoretisch den Standard oder auch die Besonderheiten grosser Compiler-Anbieter?
Eh jetzt jemand hektisch noch mal verschiebt. Wenn ihr das konsequent machen wollt, müsst ihr mehrere 100 Beiträge dann hier im Forum verschieben
Es gab Tage hier im Forum, an denen fast die Hälfte der Beiträge in C oder C++ falsch gelandet sind und das manchmal trotz mehrfacher Verschiebe-Aktionen.Wie schon angedeutet, wie perfekt wollt ihr das durchziehen
Nehmt es leicht
MfG f.-th.
-
f.-th. schrieb:
Wenn das so ist, ich hab z.Z. kein M$ - C oder C++ Compiler am Start,
Wen interessiert das?
-
Auch wenn die Deadline des Threadstarters schon verstrichen ist - hier mal meine aufgeräumte Lösung seines Problems:
#define _SIMULATION #include "SensorAktor.h" #include <stdio.h> #include <windows.h> unsigned char Lesen(unsigned char kommando){ WriteCommand(0); while (ReadStatus()==true); WriteCommand(kommando); while (ReadStatus()==false); return ReadPortA(); } void Schreiben(unsigned char kommando, unsigned char daten){ WriteCommand(0); while (ReadStatus()==true); WritePortB(daten); WriteCommand(kommando); while (ReadStatus()==false); } void main (void){ double x,drehzahl,spannung; IsPCI6503Available(); do{ do{ printf("Geben Sie eine Motorspannung zwischen 0 und 5 Volt ein: "); scanf("%lf",&x); if (x<0 || x>5)printf("\n Bitte geben Sie einen gueltigen Wert ein!\n"); } while (x<0 || x>5); if (x==0){Schreiben(3,0);break;} Schreiben(3,x*51); //Spannung setzen *255/5 Lesen(7); //Reset Sleep(1000); printf ("Drehzahl: %.2f U/min \n",drehzahl=(Lesen(8)+(Lesen(9)<<8))*15); //(Low+High[LeftShift8])*60Sek/4 Schlitze printf ("Motorspannung: %.2f V\n",spannung=(double)Lesen(4)/51); //Spannung lesen /255*5 }while(x!=0.0); }
Läuft so - und ist auch näher an der Aufgabenstellung was die Verwendung von Lesen() und Schreiben() anbelangt.
-
aGe schrieb:
Läuft so -
Typischer naiver Anfängerglaube.
- true/false ist C++, nicht C; wennschon, dann TRUE/FALSE aus windows.h
- unsinnige Definition von x als double
- unsinnige Gleichheitsvergleiche von double Variablen
- sinnfreies break bei if()
- void main() Anfängerschrott
- oberhässliche Einrückung (ist das überhaupt eine Einrückung?)
-
true - false
siehe: stdbool.hQuelle: Committee Draft N1570
-
Wutz schrieb:
aGe schrieb:
Läuft so -
Typischer naiver Anfängerglaube.
- true/false ist C++, nicht C; wennschon, dann TRUE/FALSE aus windows.h
- unsinnige Definition von x als double
- unsinnige Gleichheitsvergleiche von double Variablen
- sinnfreies break bei if()
- void main() Anfängerschrott
- oberhässliche Einrückung (ist das überhaupt eine Einrückung?)Läuft != beste Lösung der Welt...
Läuft == es funktioniert im Rahmen der Aufgabenstellung.- Über die Einordnung von C/C++ wurde hier im Thread schon diskutiert. Der Threadstarter betonte dabei, dass der Vorlesungsstoff und das Fach bei ihm eigentlich C++ Programmierung heißt. Es war deshalb auch ursprünglich im passenden Forenteil...
- X ist laut Aufgabenstellung ein beliebiger Wert zwischen 0 und 5, wobei Kommawerte eindeutig zugelassen sind.
- Die Gleichheitsvergleiche entstehen auch aus der Aufgabenstellung - so soll die Abfrage wiederholt werden wenn ein ungültiger Wert (außerhalb von 0 bis 5V) eingegeben wird.
- Break ebenfalls laut Aufgabenstellung, da das Programm enden soll, sobald eine Spannung von 0 eingegeben wird.
- void main () mag Anfängerschrott sein - sollte wohl aber bei einer Anfängervorlesung zu dem Thema nicht gänzlich unangebracht sein...
- oberhässlich? hm... Ästhetik war nicht Teil der Aufgabenstellung und liegt sicher im Auge des Betrachters... dass der Threadstarter in seiner Lösung 2x mehr Zeilen gebraucht hat, würde ich persönlich auch nicht "oberschön" finden.