Hallo zusammen Wir haben hier ein kleines Projekt und möchten gerne ein Programm vom PC aus starten. Das Programm soll in Delphi geschrieben sein. Wenn man den Start Button drückt soll das Programm auf dem uP anfangen zu laufen. Ich habe im Moment noch keine wirklich gute Idee wie ds gehen soll,da ich noch nie wirklich Delphi programmiert habe. Für gute Ideen dnake ich euch Gruss Matthias
Möglichkeiten gäbe es da mehrer... - Ihr könntet den Start über die serielle-Schnittstelle veranlassen - Ihr könntet einen Pin der Parallel-Schnittstelle verändern der wiederum an einem Eingang des uC's hängt - Ihr könntet - sofern die angeschlossene Hardware dies von der Stromaufnahme (also wenige mA) zuläßt - über die Parallel-Schnittstelle die Schaltung mit Strom versorgen
Hmmmm, das kommt mir irgendwie Spanisch vor ? Soll ein Delphi Programm vom PC aus einen µC starten ? Oder soll ein Delphi Programm auf dem µC laufen ? Bei ersterem hat schon Manos einige Möglichkeiten genannt. Jeder Output des PCs ist dazu geeignet mit entsprechender Gluelogic einen µC "anzustoßen" ;) Am aller einfachsten wäre es, die Stromversorgung des µC Boards via PC ein-/auszuschalten ;) Wenn das zu viel des Guten ist, läßt sich via IRQ Wakeup ein µC aus dem Tiefschlaf holen. Wenn in Delphi Programm auf dem C laufen soll, müßte dieser schon ein OS wie Windows/Linux unterstützen, denn Delphi braucht ein OS für seine Laufzeitumgebung ;) Wäre sinnvoll mal GENAU zu spezifizieren, WAS eigentlich gesucht wird ;) Bye, Markus
Hallo Entschuldigung für die Verwirrung. Ich habe glaube ich etwas ungenau geschrieben. Das Programm auf dem uP ist in Assembler geschrieben und auf dem PC läuft ein Programm das in Delphi geschrieben ist. Nun soll mit dem Start Button im Programm auf dem PC eigentlich ein Timer gestartet werden auf dem uP. Gruss Matthias
Ist natürlich auch eine Frage wie zeitkritisch das "starten" der Anwendung ist. Da Windows keine Echtzeitbetriebssystem ist kann die Reaktionszeit auf das drücken des Buttons unterschiedlich lange dauern. Soll allerdings sowohl "start" also auch "stop" von Hand ausgelöst werden spielt die Reaktionszeit des OS nur noch eine untergeordnete Rolle da der Mensch ein vielfaches ungenauer ist. Am besten schaut man, ob man vom Druckerport irgendeine Leitung (Daten, Steuerleitung) aus Delphi raus ändern kann und gibt diese dann (am sichersten über einen Schutzwiderstand) auf einen IO-Port des uC der über eine Änderung an diesem Port einen Interrupt auslösen kann...
@matthias ich würde einen pin der seriellen schnittstelle am pc nehmen um den uC zu starten. (egal ob durch einschalten der vcc oder wake-up oder pollen des pins) die serielle schnittstelle hat 2 vorteile : 1. sehr robust (nicht so anfällig wie der parallelport) 2. die 2/3 steuerleitungen die man verwenden kann (rxd/txd kann man nicht verwenden, da nur für serielle daten gedacht) lassen sich per windows-api-funktion steuern, der parallelport NUR über eine externe DLL (z.b. GiveIO.dll oder DLPortIo.dll). gruß rene
Das simpelste wird sein, wenn du deinen uC in einer Schleife entweder einen Pin oder den USART nach eingegangenen Daten abfragen läst. Trift der richtige Zustand ein wird das Unterprogramm (Timer) gestartet. Wie schon von den anderen gesagt kannst du Pins direkt mit dem Druckerport ansteuern (5V TTL Pegel). Für Delphi schau mal nach io.dll, damit kannst du dann direkt auf die Ports zugreifen (ist aber nicht ganz harmlos). TheMason hat ja eben auch noch andere DLL genannt. Besser eigentlich ist wenn du einen serielle Schnittstelle verwendest. Für USB könntest du z.B. einen FTDI Chip verwenden (das wäre mir für den Anfang aber zu aufwendig). FTDI hat eine DLL und Beispiele in Delphi auf Ihrer Seite. Ich würde dir aber RS-232 (MAX 232 IC) empfehlen. Um die einfach unter Delphi ansprechen zu können (wenn es den Delphi sein muss) würde ich dir empfehlen dir eine geeignete Komponente zu suchen und zu Installieren (geht sicher leichter als der Zugriff über die API). Ich verwende TSeriel aus dem Toolbox Magazin, die ist allerdings keine Freeware. Die seriellen Varianten haben den Vorteil, das du das später gut ausbauen kannst. Z.B. Verschiedene Zeichen starten bestimmte Teil- oder Unterprogramme. Andere Zeichen vordern den uC dazu auf gewisse Registerinhalte zurückzugeben etc. und schon hast du eine brauchbares kleines Werkzeug zum Debuggen deiner uC Programme. Hat mir schon viel geholfen zum Testen kann man auch meist ein Terminalprogramm verwenden. Es gibt sicher auch noch tausend andere mögliche Varianten das umzusetzen. Viel Spaß noch.
Bei der parallelen musst du auch aufpassen, weil Windows beim Hochfahren da irgendeinen Mambo-Zambo damit aufführt. Die Pins sind definitiv nicht einfach nur ruhig. Ich würde daher auch zur seriellen tendieren, dort aber ein richtiges Protokoll dafür aufsetzen (bestimmtes zeichen zum starten senden, bestimmtes zeichen für stoppen). Ansonsten wär mir das zu heiss, dass da irgendwer reinpfuscht.
Hiermit kannst Du wunderbar die seriellen Schnittstellen bedienen. http://sourceforge.net/projects/comport/ Wenn Du nur USB zur Verfügung hast kannst Du diese Komponente in Delphi auch verwenden, da Dir der USB-Seriell Adapter eine serielle Schnittstelle im Betriebssystem vorgaukelt..... Dann auf bestimmte Zeichen auf der seriellen (UART) am µC warten und dann reagieren.... Gruß Sven
@matthias das ansteuern der seriellen schnittstelle ist eigentlich mit einigen wenigen befehlen erledigt : CreateFile // öffnen der seriellen CloseHandle // schließen BuildCommDCB // konfiguration der schnittstelle SetCommDCB // setzen der konfiguration (hier können auch die "anderen" pins rts/cts/dtr usw) gesetzt/gelöscht werden GetCommDCB // holen der konfiguration (zurücklesen der pins) WriteFile // ausgabe über txd ReadFile // eingabe über rxd Die serielle zu bedienen ist recht simpel (wenn man es mal verstanden hat, und mit ein bischen experimentieren kommt man da recht schnell hinter) Du kannst natürlich auch Komponenten verwenden. Aber ich habe mit Komponenten eher schlechte erfahrung gemacht, weswegen ich bei sowas eigentlich nur die WinApi verwende (und mir dann selber eine komponente baue :-))) hoffe ich konnte dir helfen gruß rene
Hallo Danke euch allen für die Tipps. Ich werde sie mal testen und dann hoffentlich erfolg haben. Gruss und Danke Matthias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.