Steuerung eines Gerätes über die seriele Schnittstelle
-
flammenvogel schrieb:
Ich benutze Dev-Cpp, das Ding hat keine eigene Referenz zu C++ (IMHO).
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

flammenvogel schrieb:
Wegen der Hardware, wenn die seriele Schnittstelle einen Überspannungsschutz hat werde ich wohl die seriele nehmen.
AFAIK hat die Schnittstelle keinen Überspannungsschutz, sondern einen Schutz vor Kurzschluss.
Außerdem liefert die serielle Schnittstelle -12V/+12V, keine 0V/5V-Logik-Level. Je nachdem, was du da dranhängst, musst du evtl. eine Pegelanpassung vornehmen. Negative Spannungen mögen nicht viele ICs.
-
@cd9000:
ein Überspannungschutz ist vorhanden, jedoch nicht 240V
Die Spezifikation sieht +-30V (min. +-25V) an den Eingängen vor. Ob sich auch die Mainboardhersteller daran halten - keine Ahnung. Darauf verlassen sollte man sich nie, da hast Du schon recht.@flammenvogel:Für Dich nach Deinen (unvollständigen und widersprüchlichen) Angaben eine Schaltung nebst Programm zu entwickeln geht weit über das Anliegen des Forums hinaus. Und ich habe auch nicht die Zeit, das zu machen. Und die die Lust dazu ist auch auf ein Minimum abgesunken, da Du selber keinerlei Leistung dabei einbringst.
Hier noch ein paar Hilfen, mit denen Du weiterkommst:
Da Du keine Angaben über den Motor gemacht hast, nehme ich einfach einen an: 12V, 10mA. Dieser Motor wird mit einem Widerstand (1kOhm) in Reihe an Pin 4 und an Pin 7 einer 9pol. Sub-D-Buchse angelötet und diese in den 9pol. Sub-D-Stecker Deines PC gesteckt.
Mit folgendem Programm läuft der Motor 1s rechtsrum, stoppt für eine Sekunde und läuft anschließend 1s linksrum. Dann stoppt er wieder.#include <windows.h> int main (void) { HANDLE hCom = CreateFile ("COM1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); EscapeCommFunction(hCom, CLRDTR); // Rücksetzen DTR EscapeCommFunction(hCom, CLRRTS); // Rücksetzen RTS Sleep (1000); EscapeCommFunction(hCom, SETDTR); // Setzen DTR (Pin 4 bei 9pol., Pin 20 bei 25pol.) Sleep (1000); EscapeCommFunction(hCom, SETRTS); // Setzen RTS (Pin 7 bei 9pol., Pin 4 bei 25pol.) Sleep (1000); EscapeCommFunction(hCom, CLRDTR); // Rücksetzen DTR Sleep (1000); EscapeCommFunction(hCom, CLRRTS); // Rücksetzen RTS Sleep (100); CloseHandle (hCom); return (0); }Ist Dein Motor etwas niederohmiger, so kannst Du eine je eine Transistorbrücke zwischen Motor und Pin(s) schalten oder gleich einen fertigen IC (z.B. L293) verwenden. Alternativ kannst Du auch von jedem Pin ein Relais schalten lassen (http://www.c-plusplus.net/forum/viewtopic.php?t=76199&highlight=), deren (je ein) Umschalter den Motor an eine zusätzliche Spannungsquelle schalten(Öffnerkontakte zusammen schalten und an +Batt, Schließerkontakte zusammenschalten und an -Batt, Mittenkontakte direkt an den Motor).
Die Software ist für alle Varianten gleich.
Masseanschluß am Seriellen Port ist 5 bei 9pol. und 7 bei 25pol. Steckern/Buchsen.Mit den angegebenen Keywords solltest Du in der Lage sein, mit Google alles Nötige zu finden.
Blackbird
-
Danke Blackbird, genau das habe ich noch gebraucht
VIELEN DANK FÜR EURE MÜHE!!!!
-
Hi,
hab irgentwo mal gehört, dass man einen Treiber unter WindowsXP schreiben muss, damit ich die COM/Serielle-Schnittstelle bearbeiten/programmieren kann.
Hatte mal solch ein PRogramm und hatte es auch unter Windows XP/98 ausprobiert. Unter WindowsXP hat es nicht funktioniert und unter 98 schon.
Hab jedoch gleiche Methode verwendet!
Kann sich das einer erklähren ?
Ciao