theschaaf Geschrieben 6. März 2007 Geschrieben 6. März 2007 Hallo Für die Facharbeit zum Abschluss meiner 2 jährigen BFS Technischer Assistent für Informatik habe ich als Thema bekommen, einen Temperatursensor zusammenzubasteln, diesen per parallele schnittstelle an Rechner anzuschließen und mit einem c++ programm die daten auszulesen. eine anleitung habe ich hier gefunden LM75 Temperatursensor an der parallelen Schnittstelle nur steht hier was von Für die ersten Versuche sollte der PC mit reinem DOS laufen, um Einflüsse von Windows auszuschließen. Wenn Windows 9x läuft, klicken wir Start - Beenden... - Im MS-DOS-Modus neu starten. Dann starten wir LM75-I2C.EXE. Erst wenn alles fehlerfrei läuft, können wir es im DOS-Fenster probieren. Mit WinNT, Win2000, WinXP und Linux geht es garnicht, weil keine Portzugriffe zugelassen werden. Hier hilft eine DOS-Bootdisk joa ich hab keine ahnung was die "LM75-I2C.EXE" fürne Datei sein soll, und läuft das dinge jetzt allgemein nicht über winxp? oder betrifft es nur dieses Programmm? Ist es überhaupt möglich das so zusammenzubasteln und dann Daten mit c++ auszulesen? :confused: also nochma kurz, ist es "einfach" möglich mit der hardware sachen auzulesen?! ich hoffe ich habe mich hier verständlich genug ausgedrückt, grüße, theschaaf Zitieren
Guybrush Threepwood Geschrieben 6. März 2007 Geschrieben 6. März 2007 Na ich würde mal sagen das diese Exe bei dem beschriebenen Sensor mitgeliefert wird. Da du das aber selber programmieren willst ist die doch eh uninteressant für dich (außer vielleicht zu testzwecken). Die Sache mit DOS ist die das du da direkt auf den Port (oder auf jedwede andere Hardware) zugreifen kannst. Unter einem modernem Betriebssystem geht das nicht mehr sondern das Betriebssystem stellt dir dazu Funktionen zur Verfügung über die du das machen musst. Interessant für dich wären dazu unter anderem CreateFile, ReadFile, WriteFile, SetCommMask, SetCommTimeouts und WaitCommEvent. Zitieren
theschaaf Geschrieben 6. März 2007 Autor Geschrieben 6. März 2007 heisst also ich kann mir die komponenten bestellen, zusammenlöten, und dann unter winxp anfangen mit c++ zu programmieren? achja nochne kleine frage, ich mag diesen hardwareteil ganz und garnicht, ich hoffe ich kann die meiste zeit mit dem schreiben eines programms verbringen? kann ja eigentlich nich so schwer sein das zusammenzulöten oda? auf dem gebiet hab ich leider keine ahnung. grüße, theschaaf Zitieren
Guybrush Threepwood Geschrieben 6. März 2007 Geschrieben 6. März 2007 Ich denke du solltest dich mal hier umschauen News - www.mikrocontroller.net, auch wenn ich mich frage warum du so eine Aufgabe bekommst wenn du keine Ahnung davon hast... Zitieren
theschaaf Geschrieben 6. März 2007 Autor Geschrieben 6. März 2007 ich hatte ursprünglich was anderes vor, diese müsste ich allerdings bei nem anderen fachlehrer machen, mit dem ich gar nich dicke bin. deshalb hat mein programmierlehrer gefragt ob ich das bei ihm machen möchte, klar wollte ich das, das ging dann umne homepage http://forum.fachinformatiker.de/referate/102116-facharbeit-log-bereich-anmeldeforumlar.html da nachzulesen, allerdings hatte er dann am ende doch nich genug ahnung davon und nu sitz ich damit, naja. also programmieren kann ich wohl, nur der hardware teil liegt mir nicht so, und ich möchte erstmal nur wissen ob diese hardware jetzt mit winxp und c++ harmoniert?! :hells: dann kann ich ja auch anfangen aber was nützt mir es wenn da am ende eh nichts geht?! Zitieren
Klotzkopp Geschrieben 7. März 2007 Geschrieben 7. März 2007 ich möchte erstmal nur wissen ob diese hardware jetzt mit winxp und c++ harmoniert?! :hells: :confused: Das steht doch da: Mit WinNT, Win2000, WinXP und Linux geht es garnicht, weil keine Portzugriffe zugelassen werden. Hier hilft eine DOS-Bootdisk Was diese .Exe-Datei angeht, das ist eine kompilierte Version des dort häufiger erwähnten QuickBasic-Quellcodes. Deine Aufgabe wäre dann wohl, die Logik dieses Quellcodes in C++ umzusetzen. Übrigens: In der Zip-Datei, die du auf dieser Seite runterladen kannst, ist die Exe mit drin . Zitieren
Guybrush Threepwood Geschrieben 7. März 2007 Geschrieben 7. März 2007 @Klotzkopp Naja ich würde aber sagen das nur die Exe nicht unter Windows läuft. Den Portzugriff bekommst du ja schon hin, halt eben über die API. Zitieren
theschaaf Geschrieben 8. März 2007 Autor Geschrieben 8. März 2007 also die komponenten sind bestellt, mal sehen wies dann läuft ich meld mich ma wenn ich weiter bin Zitieren
theschaaf Geschrieben 6. April 2007 Autor Geschrieben 6. April 2007 halloa also ich stecke grade etwas inner klemme, ich hab getrödelt, hatte dann noch nen studio termin mit meiner band in der letzten woche und steh jetzt da und hab nur noch eine woche zeit. jetzt ists passiert, die ein pin meines controllers ist abgebrochen, ich hatte einen auf reserve damit wollte ich heute anfangen aber wieder ist ein pin abgebrochen, ich habe gestern schon zwei neue zur sicherheit bestellt, allerdings sind die wohl erst dienstag da und abgabetermin ist freitag. ich hab auch keine ahnung wie ich jetzt anfangen soll, kann ich schon anfangen zu programmieren? auch ohne einem angeschlossenen gerät? kann mir vll jemand nen tipp geben, also sozusagen der ersten schritt den ich machen muss? wäre wirklich nett, und für die die es mir gleich eh sagen werden, ich weis das ich ein trottel bin und schon viel früher hätte anfangen sollen. grüße, jens Zitieren
steinadler Geschrieben 10. April 2007 Geschrieben 10. April 2007 halloa also ich stecke grade etwas inner klemme, ich hab getrödelt, hatte dann noch nen studio termin mit meiner band in der letzten woche und steh jetzt da und hab nur noch eine woche zeit. jetzt ists passiert, die ein pin meines controllers ist abgebrochen, ich hatte einen auf reserve damit wollte ich heute anfangen aber wieder ist ein pin abgebrochen, ich habe gestern schon zwei neue zur sicherheit bestellt, allerdings sind die wohl erst dienstag da und abgabetermin ist freitag. ich hab auch keine ahnung wie ich jetzt anfangen soll, kann ich schon anfangen zu programmieren? auch ohne einem angeschlossenen gerät? kann mir vll jemand nen tipp geben, also sozusagen der ersten schritt den ich machen muss? wäre wirklich nett, und für die die es mir gleich eh sagen werden, ich weis das ich ein trottel bin und schon viel früher hätte anfangen sollen. grüße, jens Ich glaub, ich hab da was überlesen. Was meinst du denn für einen "Controller"?? Micro- doch nicht, oder? Mit dem PC-Programm kannst du doch schon anfangen: Mach dir ne Klasse namens "IO_Layer", der gibst du ne Methode GetTemperaturValue(). Und darauf baust du dein Programm auf. Also die Ausgabe, Kalibrierung, Linearisierung und was du noch so brauchst. Wenn dein Controller - oder was auch immer - dann da ist, musst du nur noch in der obigen Methode die Verbindung zur Hardware herstellen. Eine Simulationsschicht OHNE Nutzung der Hardware macht sich eigentlich immer gut. In der GetTemperaturValue-Methode gibst du dann einen konstanten Wert zurück, oder noch besser generierst du mit nem Zufallsgenerator irgendeine Zahl, oder noch besser du lässt deinen Rückgabewert bei jedem Aufruf ein wenig ansteigen... Zitieren
theschaaf Geschrieben 10. April 2007 Autor Geschrieben 10. April 2007 hi thx für die antwort ich arbeite mich mal rein ich meine natürlich keinen controller sondern einen sensor, den lm75 Zitieren
steinadler Geschrieben 10. April 2007 Geschrieben 10. April 2007 Noch einen Kommentar dazu: Stell dir die Kommunikation aber bitte nicht soo einfach vor. Da ist nix, von wegen GetTemperaturFromLPTPort() ... Du musst hier rein softwaremäßig das I2C-Protokoll implementieren. Setz dich hier mal mit den Grundlagen auseinander, falls du die noch nicht weißt. Die Verpinnung müsstest du ja aus deinem Link entnehmen können. Mein Tipp zu deiner Vorgehensweise: 1. Klasse "CTemp" anlegen, mit enthaltener Methode "GetTemp()" wie oben schonmal beschrieben 2. Deine Ausgabe (GUI oder Konsole) erzeugen 3. Klasse "CI2C_Communication" anlegen, in welcher du die Basisbefehle zur I2C-Kommunikation implementierst. 4. Klasse "CLM75" anlegen, wo du auf die I2C-Klasse zugreifst, und den Kommunikationsablauf mit dem Sensor abwickelst Zitieren
theschaaf Geschrieben 10. April 2007 Autor Geschrieben 10. April 2007 es fehlt mir vorne und hinten an wissen, bin grad irgendwie kurz vor nem nervenzusammenbruch... also ich muss erstmal eben bei ich glaub unter 0 kurz anfangen. ein beispiel wie ich mir das vorstelle. #include <string> class kunde { std::string Passwort; public: inline void passwort_eingeben(void); }; diese klasse speicher ich unter kunde.h ab und in meiner projektdatei füge ich die zeile #include "kunde.h" ein. ist das so richtig? wir haben damit in der schule noch nie gearbeitet? Zitieren
steinadler Geschrieben 10. April 2007 Geschrieben 10. April 2007 ein beispiel wie ich mir das vorstelle. #include <string> class kunde { std::string Passwort; public: inline void passwort_eingeben(void); }; diese klasse speicher ich unter kunde.h ab und in meiner projektdatei füge ich die zeile #include "kunde.h" ein. ist das so richtig? wir haben damit in der schule noch nie gearbeitet? Genau, ... also in einer Headerdatei sind oder sollten ja nur Sachen fürs Klassengerüst stehen. Also irgendwelche Variablen, MethodenRÜMPFE und so weiter. Dann musst du in deinem Code noch irgendwie dem Methodenrumpf einer Methode der Headerdatei etwas zuweisen. Also nochmal: Headerdatei Kunde.h anlegen. Dortrein das Klassengerüst packen. Codedatei Kunde.cpp anlegen. Darein die Methoden der Klasse implementieren. In dein Hauptprogramm (angenommen main.cpp) schreibst du include "kunde.h". Zitieren
theschaaf Geschrieben 10. April 2007 Autor Geschrieben 10. April 2007 danke, GoBlack - Digitaltechnik und Modelle ist dieses ein programm für meine Aufgabe?? Dann könnte ich mich daran orientieren Zitieren
Schiller256 Geschrieben 10. April 2007 Geschrieben 10. April 2007 Ich denke du wirst besser kommen wenn du mal deine bisherigen Ergebnisse hier zu Diskussion stellst. Denn dein letzter Link sieht zwar schön aus hast du dir aber mal die dort verlinkte i2c.h Datei angeschaut. Ich bin zwar kein Assembler Experte (i2c.h sieht mir sehr Stark nach Assembler aus) nur schiebst du da fleißig im Speicher hin und her. Wenn du so was noch nie gemacht hast dann ist das für ein Abschlussprojekt aber sicherlich eine Nummer zu groß. Wende dich doch mal an deinen Fachlehrer und stecke dein Thema noch mal genauer ab lass dir von ihm auch mal was helfen. Denn einen Ansteuerung von einer externen Komponente fällt ja nicht einfach mal so vom Himmel. Zitieren
theschaaf Geschrieben 10. April 2007 Autor Geschrieben 10. April 2007 ja ist schon klar morgen treffe ich meinen lehrer und dann werde ich erstmal einieges mit im tun können. Zitieren
steinadler Geschrieben 11. April 2007 Geschrieben 11. April 2007 danke, GoBlack - Digitaltechnik und Modelle ist dieses ein programm für meine Aufgabe?? Dann könnte ich mich daran orientieren Hm... nee, nicht so richtig. Eher dann die eingebundene Headerdatei "i2c.h". Allerdings ist die prozessorspezifisch und in Assembler geschrieben. Weiß ja nicht, ob du das lesen kannst. Ansonsten gabs auf deinem ersten Link ganz unten einen Code, wo einer das in c# umgesetzt hat. Das hilft glaube mehr... Zitieren
theschaaf Geschrieben 11. April 2007 Autor Geschrieben 11. April 2007 mein lehrer hat mir was ganz neues erzählt, ich soll die schaltung erklären "nur" erklären, und kann auch ein beispielprogramm nutzen, soll da allerdings noch einige zusätzliche funktionen einbauen, ich kann auch ein programm in c nutzen. da nehm ich natürlich am besten das programm in c von dieser seite (KALOW.DE - LM75, Thermometer, Temperatur-Sensor) allerdings habe ich dieses mit mit dem bloodsheed compilter getestet und es kommen wohl um die 200 fehlermeldungen von denen ich keine ahnung hab. http://www.kalow.de/lm75/LM75.cs ich werde da jetzt erstmal mit rumprobieren Zitieren
steinadler Geschrieben 11. April 2007 Geschrieben 11. April 2007 mein lehrer hat mir was ganz neues erzählt, ich soll die schaltung erklären "nur" erklären, und kann auch ein beispielprogramm nutzen, soll da allerdings noch einige zusätzliche funktionen einbauen, ich kann auch ein programm in c nutzen.http://www.kalow.de/lm75/LM75.cs ich werde da jetzt erstmal mit rumprobieren Irgendwie hab ich den Eindruck, dass bei euch keiner so recht weiß, was zu machen ist? Wieso gibts denn keine konkrete Aufgabenstellung? der Quellcode in deinem Link, also der namens .cs ist aber weder c noch c++, das weißt du wohl, oder? Die Schaltung erklären, ist einfacher als alles andere. Da würde ich mir den Ärger mit dem Programm ersparen. Lies dir nen Wiki zum I2C-Bus durch. Die Schaltung besteht doch nur aus: - 4 Drähte - zwei Widerstände - Temperatursensor LM75 - Parallele Schnittstelle Zitieren
theschaaf Geschrieben 11. April 2007 Autor Geschrieben 11. April 2007 hab problem selber gelöst Zitieren
theschaaf Geschrieben 12. April 2007 Autor Geschrieben 12. April 2007 hi, also so langsam läufts einiegermaßen, ich habe die dokumentation des hardwareteils fertig. jetzt möchte ich mit diesem programm weiterarbeite GoBlack - Digitaltechnik und Modelle allerdings tauchen beim kompilieren in der headerdatei immer 3 fehler auf, und zwar: asm{ mov AH, 80h <--- [c++warning]restarting compile using assembly int 0AAh } } ---------------------------------------------------------- char i2c_receive (char slave, char far* c, char lastchar) <--- [c++error] expected ---------------------------------------------------------- asm{ mov AH, 83h mov AL, slave and AL, 0FEh <--- [++error] incorrect number format mov CX, length les BX, buffer int 0AAh ---------------------------------------------------------- oder ist dieses programm gar nich für meine schaltung geeignet? aber es müsste doch eigentlich das richtige sein oda?! grüße, jens Zitieren
steinadler Geschrieben 13. April 2007 Geschrieben 13. April 2007 Ich glaub nicht, dass das Programm für deine Schaltung geht. Zumindest ist da mit Windows nix. Dieser Quelltext ist für einen desq Microcontroller - nicht für PC. Zitieren
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.