realisticer Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Nun, 1.) eine Quelltextdatei ist nicht ausfuehrbar 2.) das programm tut ja auch nichts, als das device oeffnen. Du hast null Funktionalitaet implementiert 3.) Ich sehe das jetzt nur noch als "Hoppla, da will mir jemand einen Baeren aufbinden" an mfg realisticer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 18. Mai 2005 Autor Teilen Geschrieben 18. Mai 2005 ... 3.) Ich sehe das jetzt nur noch als "Hoppla, da will mir jemand einen Baeren aufbinden" ... :confused: Verstehe ich gerade nicht.... :confused: Das heißt also, wenn ich nun noch ein, zwei Variablen einbaue, die den Port z.B. liest, würde das Funktionieren?!! _________________________________________________________________ Ich weiß, dass man einen Port wie eine Datei ansprechen, öffnen, schreiben, lesen und schliessen kann. Das tue ich aber doch schon in der open_port Variablen, oder ??? ... fd = open("/dev/ttyS0", O_RDRW | O_NOCTTY | O_NDELAY); ... [/PHP] Aber wie sage ich ihm das in der main ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Maulwurf_der_Schlaue Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 also damit es eine funktionalität hat, kann er ja einfach den return ausgeben ob es funktioniert hat den port zu öffnen oder nicht... ich glaub aber kaum das der Fehler daher kommt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 18. Mai 2005 Autor Teilen Geschrieben 18. Mai 2005 also damit es eine funktionalität hat, kann er ja einfach den return ausgeben ob es funktioniert hat den port zu öffnen ...QUOTE] Ähm jetzt nur noch, welchen return denn ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 :confused: Verstehe ich gerade nicht.... :confused: Vermutlich meint realisticer, dass deine Aufgabe und deine Fähigkeiten so weit auseinanderliegen, dass er nicht glaubt, dass jemand das ernsthaft versuchen würde. Das heißt also, wenn ich nun noch ein, zwei Variablen einbaue, die den Port z.B. liest, würde das Funktionieren?!! Eine Variable "liest" nicht den Port. Ich weiß, dass man einen Port wie eine Datei ansprechen, öffnen, schreiben, lesen und schliessen kann. Das tue ich aber doch schon in der open_port Variablen, oder ???open_port ist keine Variable, sondern eine Funktion. Diese Begriffe sind aber absolute Grundlagen. In der Funktion open_port öffnest du die serielle Schnittstelle, aber du liest nichts aus. Aber wie sage ich ihm das in der main ?Was willst du "ihm" denn "sagen"? Ähm jetzt nur noch, welchen return denn ??Maulwurf_der_Schlaue meint den Rückgabewert von fopen. Du weißt, was fopen zurückgibt, wenn der Aufruf fehlschlägt? Ohne dir zu nahe treten zu wollen, ich fürchte, diese Aufgabe ist für dich mehrere Nummern zu groß. Du hast noch viel zu große Probleme mit den Grundlagen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 18. Mai 2005 Autor Teilen Geschrieben 18. Mai 2005 Vermutlich meint realisticer, dass deine Aufgabe und deine Fähigkeiten so weit auseinanderliegen, dass er nicht glaubt, dass jemand das ernsthaft versuchen würde. Hmmm,.... das ist mir leider auch klar. Nur will ersten mein Betrieb, das ich die Aufgabe hinbekomme und zweitens möchte ich das auch. Eine Variable "liest" nicht den Port. open_port ist keine Variable, sondern eine Funktion. Diese Begriffe sind aber absolute Grundlagen. In der Funktion open_port öffnest du die serielle Schnittstelle, aber du liest nichts aus. Ja, da muss ich gestehen, das ich die Begrifflichkeiten und somit auch die Grundlagen nicht so recht drauf habe. ich hoffe ja mal, das ich die irgendwann mal drauf haben werde..... Was willst du "ihm" denn "sagen"? Wie er mir den returnwert ausgibt. Maulwurf_der_Schlaue meint den Rückgabewert von fopen. Du weißt, was fopen zurückgibt, wenn der Aufruf fehlschlägt? (Jetzt haue ich wieder in die vollen) ich denke doch : perror("open_port: Unable to open /dev/ttyS0 - "); Oder :confused: (Ich muss zugeben, das ich jetzt doch etwas verwirrt bin ! Ohne dir zu nahe treten zu wollen, ich fürchte, diese Aufgabe ist für dich mehrere Nummern zu groß. Du hast noch viel zu große Probleme mit den Grundlagen. Wie schon oben erwähnt, das ist mir schon bekannt, nur schaffe ich es icht, mich irgendwie auf einen Stand zu bringen. Kann mir selbst nicht erklären wie das kommt. Ich will mich jetzt hier auch nicht rausreden, aber ich hoffe, das ich hier durch eure Hilfe halt etwas lerne, was ich dann behalten kann..... Thanx, Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Hmmm,.... das ist mir leider auch klar. Nur will ersten mein Betrieb, das ich die Aufgabe hinbekomme und zweitens möchte ich das auch.Ich will dich nicht entmutigen, aber wenn Wille allein reichen würde, um Probleme zu lösen... Wie er mir den returnwert ausgibt.Warum willst du das in main machen? Kennst du printf? (Jetzt haue ich wieder in die vollen) ich denke doch : perror("open_port: Unable to open /dev/ttyS0 - "); Die Frage war eigentlich nicht mit Quellcode zu beantworten Wie schon oben erwähnt, das ist mir schon bekannt, nur schaffe ich es icht, mich irgendwie auf einen Stand zu bringen. Kann mir selbst nicht erklären wie das kommt. Ich will mich jetzt hier auch nicht rausreden, aber ich hoffe, das ich hier durch eure Hilfe halt etwas lerne, was ich dann behalten kann.....Das Problem ist, dass dir eine sehr steile Lernkurve bevorsteht, wenn du gleich mit so etwas komplexen anfängst. Was dir fehlt, müsstest du dir in mehreren Wochen, wenn nicht Monaten aneignen. Das ist nichts, was wir dir hier mal eben erklären könnten. Ich rate dir, mit einfacheren Aufgaben Erfahrung zu sammeln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
realisticer Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Schau dir diese Tutorials an: http://tutorial.schornboeck.net/inhalt.htm Schon was aelter, ist aber in Ueberarbeitung: http://www.volkard.de/vcppkold/inhalt.html Ansonsten: http://www.c-plusplus.de/cms/modules.php?op=modload&name=Downloads&file=index mfg v R Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 18. Mai 2005 Autor Teilen Geschrieben 18. Mai 2005 Ich will dich nicht entmutigen, aber wenn Wille allein reichen würde, um Probleme zu lösen... Ja, stimmt... Warum willst du das in main machen? Kennst du printf? Klar kenne ich printf, nur habe ich eben gedacht, das ich das am besten in der mian Funktion (???) ausgeben lasse. Die Frage war eigentlich nicht mit Quellcode zu beantworten War sie denn richtig beantwortet ??? (wenigstens halbwegs???) Das Problem ist, dass dir eine sehr steile Lernkurve bevorsteht, wenn du gleich mit so etwas komplexen anfängst. Was dir fehlt, müsstest du dir in mehreren Wochen, wenn nicht Monaten aneignen. Das ist nichts, was wir dir hier mal eben erklären könnten. Ich rate dir, mit einfacheren Aufgaben Erfahrung zu sammeln. Hmmm, na dann machen wir es eben so. Da der Port ja wie eine Datei angesprochen ....usw. werden kann, möchte ich das, was der Thermostat sendet ausgeben. Das Programm soll einmal gucken was da am COM1 ankommt und das dann per printf ausgeben. Das ist doch eigentlich einfach und zu realisieren oder ??? @realisticer, danke für die Links, zwei kenne ich schon, trotzdem nochmals danke und sorry fürs nerven... Thanx, P.S.: Ich hoffe nur, das ich euch nicht zu sehr nerve mit diesem Thema... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Klar kenne ich printf, nur habe ich eben gedacht, das ich das am besten in der mian Funktion (???) ausgeben lasse.Funktion ist richtig Aber warum in main? Ich will damit nicht sagen, dass es falsch ist. Aber man sollte schon begründen können, welcher Code wo steht. Sonst erweckt man den Eindruck, dass der Code eher ein Ergebnis spontaner Launen als von ordentlicher Planung ist. War sie denn richtig beantwortet ??? (wenigstens halbwegs???)Nein, eigentlich nicht. fopen gibt einen Nullzeiger zurück, wenn es fehlschlägt. Das Programm soll einmal gucken was da am COM1 ankommt und das dann per printf ausgeben. Das ist doch eigentlich einfach und zu realisieren oder ???Ja. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 18. Mai 2005 Autor Teilen Geschrieben 18. Mai 2005 Funktion ist richtig Aber warum in main? Ich will damit nicht sagen, dass es falsch ist. Aber man sollte schon begründen können, welcher Code wo steht. Sonst erweckt man den Eindruck, dass der Code eher ein Ergebnis spontaner Launen als von ordentlicher Planung ist. Erschien mir für richtig dies in der main-Funktion ausgeben zu lassen. Ich habe in einem C++-Buch folgendes gefunden: FILE *fopen(const char *filname, const char *mode); Also würde ich das jetzt so schreiben: FILE *fp; fp = fopen("/dev/ttyS0", "r"); Richtig??? Ja. Tolle knappe antwort. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aquano Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Wenn der Betrieb, möchte das Du diese Aufgabe als erstes programmierst, dann möchte ich gerne mal die zweite sehen... Mein Rat ist auch: lerne erstmal Grundlagen. Z.B. wenn das ganze wie mit Dateien funktioniert, solltest Du das auch erstmal gemacht haben. Dann stellen sich Fragen wie z.B. des Rückgabetyps auch nicht mehr. Gerade wenn dir nur (undokumentierte) Fragmente übergeben werden, wird das sehr schnell schwer. Ich empfehle dir mal folgendes Machwerk als Ergänzung/Fortführung zu den Links: Helmut Herold/ Jörg Arndt C Programmierung unter Linux Unix, Windows ISBN: 3-89990-123-1 (Nein ich bekomme dafür kein Geld...) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
realisticer Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 @realisticer, danke für die Links, zwei kenne ich schon, trotzdem nochmals danke und sorry fürs nerven... Es geht gar nicht darum dass du nervst. Das tust du nicht. Es ist nur offentsichtlich so, dass du mit der Aufgabe nicht zurecht kommst und nicht zurecht kommen wirst. Nicht bedingt dadurch, dass du zu bloed dazu waerst, sondern schlicht weg aus dem Grund, dass dir die noetigen Grundlagen dazu fehlen. Du kannst natuerlich Fragen stellen, nur wirst du viele Antworten nicht verstehen, da dir die eben angesprochenen Grundlagen fehlen. Das ist wie eine Art Teufelskreislauf. Du Fragst, wir erklaeren. Du verstehst es nicht und fragst und wir versuchen wieder etwas einfacher zu erklaeren. Nur: So kommen wir natuerlich nicht weiter. Die Funktion open_port ist ja jetzt soweit fertig. Du musst sie und die anderen Funktionen nun in der main-Funktion zusammenfuehren, so dass ein entsprechendes Programm herauskommt, welches eine spezifische Aufgabe erledigt. Es kommt so vieles auf einmal zusammen und es duerfte schwer fuer dich sein, den roten Faden im Auge zu behalten. Es ist nichts hier boese gemeint. mfg realisticer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 18. Mai 2005 Autor Teilen Geschrieben 18. Mai 2005 Mein Rat ist auch: lerne erstmal Grundlagen. Z.B. wenn das ganze wie mit Dateien funktioniert, solltest Du das auch erstmal gemacht haben. Dann stellen sich Fragen wie z.B. des Rückgabetyps auch nicht mehr. Gerade wenn dir nur (undokumentierte) Fragmente übergeben werden, wird das sehr schnell schwer. Also, das mit den Dateien haben wir in der Schule durchgenommen. Leider hat es da bei mir etwas gehakt.... :floet: Ich empfehle dir mal folgendes Machwerk als Ergänzung/Fortführung zu den Links: Helmut Herold/ Jörg Arndt C Programmierung unter Linux Unix, Windows ISBN: 3-89990-123-1 Was soll denn das "Machwerk" kosten ??? (Nein ich bekomme dafür kein Geld...) :confused: :confused: Wie jetzt ??? :confused: :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Maulwurf_der_Schlaue Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 was hat der betrieb gesagt? dass du es einfach machen sollst? oder bis nächste woche ist das fertig? vielleicht woll die sehn was du so kannst und ob du die Fähigkeit besitzt deine Wissenslücken zu füllen falls das erforderlich ist.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
realisticer Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Was soll denn das "Machwerk" kosten ??? http://www.amazon.de/exec/obidos/ASIN/3899901231/qid%3D1116423990/302-3982950-8836063 Es ist leider gar nicht so billig. Aber das ist ein generelles Problem bei Fachliteratur. mfg realisticer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aquano Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 gute (billige) Bücher suche ich auch noch, meistens leider vergebens zu der Datei if ( ( filezeiger = fopen ("dateiname", "r")) == NULL) { /* Hier könnte Ihr Code stehen */ /* z.B. exit(-1) */ } bzw. die Negetation davon. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
realisticer Geschrieben 18. Mai 2005 Teilen Geschrieben 18. Mai 2005 Nun, ab und zu gibt es hier: http://www.buecherguenstig.de/ gute Schnaepchen. mfg realisticer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 19. Mai 2005 Autor Teilen Geschrieben 19. Mai 2005 Also, mein Betrieb hat sich mit mir zusammengetzt und eine Aufgabe gesucht. Wir haben uns dann halt auf diese Aufgabe geeinigt. Ich habe aber auch angemerkt, dass meine C/C++ Kenntnisse nicht ausreichend sind, das wir in der Schule auch noch ganz woanders sind... Der Betrieb hat dann nur gesagt, mach die Aufgabe, bis sie fertig ist.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Maulwurf_der_Schlaue Geschrieben 19. Mai 2005 Teilen Geschrieben 19. Mai 2005 nadann schau dir mal die links an die sind auch gut, wenn du noch kein buch zur hand hast: http://tutorial.schornboeck.net/inhalt.htm Schon was aelter, ist aber in Ueberarbeitung: http://www.volkard.de/vcppkold/inhalt.html Ansonsten: http://www.c-plusplus.de/cms/modules.php?op=modload&name=Downloads&file=index Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aquano Geschrieben 19. Mai 2005 Teilen Geschrieben 19. Mai 2005 Wir haben uns dann halt auf diese Aufgabe geeinigt. Ich habe aber auch angemerkt, dass meine C/C++ Kenntnisse nicht ausreichend sind, das wir in der Schule auch noch ganz woanders sind... Der Betrieb hat dann nur gesagt, mach die Aufgabe, bis sie fertig ist.... Wo seid ihr den in C? Ich kenne ja noch die Qualität meines Unterrichtes in der Schule Spreche mit dem Betrieb ab, dass Du Hilfe benötigst, sei es durch die Hilfe eines C-Programmieres, einer Schulung oder zumindest erstmal durch Literatur. Durch Zeit alleine füllt sich Deine Wissenslücke auch nicht. Gerade Programmiertechniken in C zu erlernen sollte das Ziel sein und nicht nur das Erlernen des Sprachumfanges. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 19. Mai 2005 Autor Teilen Geschrieben 19. Mai 2005 Wo seid ihr den in C? Ich kenne ja noch die Qualität meines Unterrichtes in der Schule Wir sind nun bei der Objektorientierten Programmierung....und auch mein Lehrer bringt nicht wirklich viel rüber....Ist aber ein anderes Thema.... Spreche mit dem Betrieb ab, dass Du Hilfe benötigst, sei es durch die Hilfe eines C-Programmieres, einer Schulung oder zumindest erstmal durch Literatur. Durch Zeit alleine füllt sich Deine Wissenslücke auch nicht. Gerade Programmiertechniken in C zu erlernen sollte das Ziel sein und nicht nur das Erlernen des Sprachumfanges. Hmm, also wenn ich fragen habe, kann ich meinen "Ausbilder" fragen, nur hat der halt auch nicht die Ahnung von C. Und leider haben wir keine Programmierer in unserem Betrieb. Ich könnte höchstens mal fragen ob der Betrieb mir nicht dieses C-Buch "spendiert ", welches oben angesprochen wurde. Ich habe da bei meiner Internetsuche folgendes gefunden: ... #define CDROM "/dev/cdrom" ... static int open_cdrom (void) { int fd = open (CDROM, O_RDONLY | O_NONBLOCK); if (fd == -1) { if (errno == ENOMEDIUM) printf ("Keine CD im Laufwerk!\n"); else perror ("Fehler bei open()"); exit (EXIT_FAILURE); } return fd; }[/PHP] Jetzt meine Frage, wie kann ich [PHP]if (errno == ENOMEDIUM) printf ("Keine CD im Laufwerk!\n"); else perror ("Fehler bei open()"); exit (EXIT_FAILURE); so ummodeln, das das auf meinen Port passt. (Also auf den am Server natürlich!!!! ) Ich habe schon begonnen meinen Code wie Folgt umzuschreiben: #include <stdio.h> // Standard input/output definitions #include <string.h> // String function definitions #include <unistd.h> // UNIX standard functiondefinations #include <fcntl.h> // File controll definations #include <errno.h> // Error number definations #include <termios.h> // POSIX terminal controll definations #include <iostream.h> /* * 'open_port()' - Open serial port 1. * * Returns the file descriptor on success or -1 on error. */ #define port "/dev/ttyS0" static int open_port(void) { int fd = open (port, O_RDWR | O_NOCTTY | O_NDELAY); // File discriptor for the Port if (fd == -1) { if perror("open_port: Unable to open /dev/ttyS0 - "); } return fd; } int main(int argc, char* argv[]) { int fd = open_port(); if (( fd = fopen ("/dev/ttyS0", O_RDRW)) <0) { ;//Hier fehlt noch was, ist bekannt } return fd; }[/PHP] Thanx, Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Maulwurf_der_Schlaue Geschrieben 19. Mai 2005 Teilen Geschrieben 19. Mai 2005 #define port "/dev/ttyS0" static int open_port(void) { int fd = open (port, O_RDWR | O_NOCTTY | O_NDELAY); // File discriptor for the Port // weißt du wofür open (port, O_RDWR | O_NOCTTY | O_NDELAY); // steht, denn wenn nicht kann es auch sein das dein prog nicht funktioniert.... if (fd == -1) { if // hier wirst du einen compiler-fehler bekommen, // weil dein if nicht komplett ist... perror("open_port: Unable to open /dev/ttyS0 - "); } return fd; } int main(int argc, char* argv[]) { int fd = open_port(); // ok hier schaust du ob du den port öffnen kannst if (( fd = fopen ("/dev/ttyS0", O_RDRW)) <0) { ;//Hier fehlt noch was, ist bekannt } // warum nachst du hier nochmal die portprüfung?? Ausgerdem kannst du // deiner funktion keine parameter übergeben weil keine angegeben sind in // deiner funktion... return fd; }[/PHP] ich hoff ernsthaft das ich jetzt nichts falsch gemacht hab (was für ein code ) <edit> nimm nicht perror zur ausgabe her sonder printf weil du bestimmt nicht weiß was perror genau macht... </edit> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Phade Geschrieben 19. Mai 2005 Autor Teilen Geschrieben 19. Mai 2005 Das mit dem ersten if, ist mir auch gerade erst aufgefallen. Ich meine es so verstanden zu haben, O_RDWR bedeutet soviel wie: darf lesen und schreiben O_NOTTY hängt mit der Baudrate zusammen und O_NDELAY bedeutet nicht warten. Ok, wenn ich in der main-Funktion nicht gucken muss ob der Port auf ist, lass ich es weg. Aber wie bekomme ich es hin das main mir die Daten ausgibt, die am Port ankommen??? <edit> Ich könnte zur not nachschauen war perror so macht.... :mod: </edit> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
realisticer Geschrieben 19. Mai 2005 Teilen Geschrieben 19. Mai 2005 Zu den Flags und moeglichen Fehlerkonstanten solltest du einmal in die Manpage schauen (man 2 open). mfg realisticer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.