controling einzelnen pins an einer seriellen Schnittstelle
Ich weiß, dass serielle ports funktionieren durch das senden einer einzigen Datenstrom von bits in der seriellen. Ich kann schreiben, Programme zum senden und empfangen von Daten, die eine pin.
Allerdings gibt es viel mehr andere pins am seriellen port-Verbindung, die normal nicht gebraucht, aber aus der Dokumentation alle zu haben scheinen, irgendeine Art von Funktion für die Signalisierung im Gegensatz zur Datenübertragung.
Ist es möglich, in irgendeiner Weise zu verursachen, die anderen pins, die nicht verwendet werden für die direkte Datenübertragung zum individuell gesteuert werden? Wenn ja, wie würde ich tun?
EDIT: mehr Informationen
Ich arbeite mit einer modernen CPU mit windows 7 64-bit auf einem intel core i7 870 Prozessor. Ich bin mit Seriell-zu-usb-ports, weil seine imposable für mich zu tun alles, was direkt mit einem usb-Anschluss und mein computer nicht über serielle Schnittstellen und auch für einige unerklärliche Grund habe ich ein paar von diesen usb-to-serial port Adapter rumliegen.
Mein Ziel ist es, die Kontrolle mutipul Schrittmotoren (200 Schritte pro umdrehung, 4 Phasen-Motoren). Meine einfache Schaltung akzeptiert einzelne hohe Impulse und interpretiert es als Befehl zu bewirken, dass der motor zu drehen, einen Schritt. Die Schaltung selbst behandeln Sie das Netzteil und phase switching. Ich möchte die Daten übertragen pin zum senden der rotation Signale (die wir kontrollieren können position und Geschwindigkeit durch verändern der Anzahl von high-Impulse und die Frequenz der hohen Impulse durch den pin, aber es gibt keine wirkliche pulse width modulation).
Ich habe viele Motoren zu Steuern, aber Sie müssen nicht gleichzeitig gesteuert werden. Ich hoffe, dass ich den rest des pins und führen Sie Sie durch eine einfache Kombination von Logik-Schaltung zu identifizieren, welcher motor bewegt wird und in welche Richtung er sich bewegen in. Dies ist Teil des power switching circuitry.
Die Daten übertragen pin arbeiten normal, bei einigen low-end-Frequenz. Allerdings möchte ich die Steuerung der anderen pins, mir zu erlauben, geben eine solide on-oder off-signal (Sie werden nicht spiegeln sehr schnell, wird nur verändert, wenn ich den Schalter zu Steuern, einen anderen motor).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basiert der Vorschlag von Hans Passant , ich würde gerne vorschlagen, dass du ein Arduino statt eines USB-zu-Seriell-Konverter. Die "Duemilanove" ist eine Arduino-basierte board, verfügt über 6 PWM-Ausgänge (sowie 8 andere digitale I/Os und 6 analoge). Einige speziellere boards könnte sogar billiger sein (Arduino Mini Pro, $15 in der Lautstärke, einige Löten erforderlich).
Verwendung der Handshake-pins, um Daten zu senden kann sehr gut funktionieren, wenn auch wahrscheinlich nicht auf einem multitasking-Betriebssystem, es ist nur sehr Prozessor-intensiv sind (weil der port muss abgefragt werden ständig) und erfordert einige benutzerdefinierte Kabel. In der Tat, wieder in den Tag, das ist genau wie Laplink hat solche hohen übertragungsraten über serielle verbindungen (und warum man diese Tarife, die Sie benötigt eine spezielle 'Laplink' - Kabel). Und Sie müssen beide Seiten der hte-link zu wissen, was Los ist und in der Lage, sich mit den custom-Kommunikation. Laplink wäre ein Paket senden von Daten sowohl über den normalen UART-pins, während Sie versuchen, Daten zu senden, aus dem anderen Ende des Pakets über die Handshake-pins. Wenn das richtige Kabel nicht verwendet (oder war es ein anderes problem mit dem senden über die Handshake-pins) war es kein problem - die Daten nur erhalten, senden Sie in der Regel.
Embedded Entwickler kennen vielleicht diese als "bit-banging' - oft auf kleinen embedded-Systemen gibt es keine dedizierten UART-schaltungen, um die serielle Kommunikation zu arbeiten, Sie zu wechseln, eine Allgemeine I/O-pin mit dem richtigen timing. Das gleiche kann getan werden, auf eine UARTS Handshake-pins. Aber wie ich schon sagte, es kann sich nachteilig auf das system, wenn die andere Arbeit getan werden muss.
EscapeCommFunction()
- API kann verwendet werden zum UmschaltenDTR
undRTS
. DieGetCommModemStatus()
- API kann verwendet werden, um den aktuellen Zustand derCTS
undDSR
(CD
undRI
auch).Können Sie die DTR und RTS nur, aber das ist vier möglichen Zustände. Sie müssen darauf achten, dass das Gerät am anderen Ende verwendet TTL-Pegel. Am Ende dieser Verbindung Serielle gibt es Tipps zur hardware, wenn Sie es brauchen.
Welche Art von Daten zu bewerten sind, Sie denken, wenn Sie sagen, dass eine hohe Frequenz? Was für eine Art von serial-Anschluss haben Sie? Mit den alten 9-pin-Anschlüsse auf der Rückseite des Computers, um die beste Sie tun können, ist um 115Kbps. Mit einem USB-adapter habe ich getan-test, wo ich drücken könnte in der Nähe auf 1 Mbit /s durch den Hafen.
Hier ist ein Artikel von Microsoft, der geht sehr ins detail, wie die Arbeit mit seriellen ports:
http://msdn.microsoft.com/en-us/library/ms810467.aspx
Erwähnt EscapeCommFunction für die direkte Steuerung der DTR-Leitung.
Überprüfen, bevor Sie diese Informationen, ich bin bei mit den anderen, die sagen, eine serielle Schnittstelle ist ungeeignet für deine Anwendung.
Habe ich versucht, eine Antwort zu finden auf Ihre Frage für 3 Stunden scheint, wie es gibt keinen "einfachen Weg", um eine einfache boolean-signal von einem computer...
Aber, es gibt immer einen Weg, und jet, wie einfach (vielleicht auch dumm) wie das klingt, haben Sie sich überlegt, mit der audio-jack-Stecker als Ausgang?, Es ist stereo, so würden Sie 2 Ausgänge zur Verfügung,die Programmierung ist nicht schwierig. und Sie don#t brauchen, um zu kaufen teuer, Scheiße zu machen, damit es funktioniert.
Wenn Sie auch einen Eingang, nur zerlegen, eine Maus... und die Brücke, die sensoren, die servos, die wohl die meisten Billigen und einfachste Weg, es zu tun...
Andere Möglichkeit wäre mit Hilfe der leds für Num-lock, caps-lock und die dspl-lock auf der Tastatur, diese kann aktiviert werden, mithilfe von software, und Sie brauchen nur zu nehmen, eine günstige externe Tastatur, und verwenden Sie die Anschlüsse für diese 3 leds.
das Sie beschreiben, vielleicht eine parallel-port - hier können Sie festlegen, bit-Muster, die alle auf einmal - dann schaltet die xmit-Linie, um es zu senden alle...
Läßt nehmen ein Blick aus der "bottom up" - Sicht:
Der serielle port pins
Pins am seriellen port angeschlossen werden können, um ein "controller" oder direkt mit dem Prozessor verbunden. Um für den Prozessor zugreifen (control) die pins, es muss eine elektrische Verbindung von den pins des Prozessors. Wenn nicht, wird der Prozessor noch die Programm Kontrolle über die pins.
Mit einem seriellen controller
Ein controller, wie eine USART, wäre die Verbindung zwischen der seriellen Schnittstelle und der Prozessor. Die controller-Funktion zu konvertieren 8 parallele Datenbits in den seriellen Bitstrom. Im großen Bild muss der controller Zugriff auf die port-pins, um für Sie zu gesteuert werden. Wenn es nicht, die pins können nicht zugegriffen werden. Der controller muss mit dem Prozessor verbunden ist, um zu Steuern, die pins, wenn ein controller angeschlossen ist.
Der Prozessor und die Serielle Schnittstelle
Unter der Annahme, dass die pins, die Sie Steuern möchten, sind mit dem Prozessor verbunden ist, der Prozessor muss in der Lage sein, auf Sie zuzugreifen. Manchmal sind Sie abgebildet als physikalische Adressen (wie mit einem ARM-Prozessor), oder Sie können eine Verbindung zu einem port (z.B. intel 8086). Würde ein Programm den Zugriff auf die pins über einen Zeiger oder über einen i/o-Anweisung. In einigen Prozessors, der i/o-ports müssen aktiviert und initialisiert, bevor Sie verwendet werden können.
Unterstützung aus dem OS
Hier ist ein
big ticket
Artikel: Wenn Sie Ihre Plattform, ein Betriebssystem besitzt, muss das Betriebssystem bieten services für den Zugriff auf die pins der seriellen Schnittstelle. Die Dienste kann ein Treiber oder eine API-Funktion rufen. Wenn das OS nicht bieten Dienstleistungen, können Sie nicht den Zugriff auf die serielle port-pins.Erlaubnis des OS
Vorausgesetzt, das OS hat die Unterstützung für die serielle Schnittstelle, muss Ihr Programm jetzt über die Berechtigung zum Zugriff auf den port. In einigen Betriebssystemen, die Erlaubnis darf nur erteilt werden
root
oder Treiber und nicht die Benutzer. Wenn Ihr Konto nicht über die Berechtigung zum Zugriff auf die pins, die Sie nicht gehen, um Sie zu Lesen.Unterstützung der Programmiersprache
Schließlich, die Sprache muss die Unterstützung für den port. Wenn die Sprache bietet keine Unterstützung für die Ports, die Sie haben können, um die Sprache zu ändern, oder sogar das Programm in der Montage.
Zugriff auf die "unbenutzten" pins einer seriellen Schnittstelle erfordern umfangreiche Forschung in die Plattform. Nicht alle Plattformen haben serielle ports. Serial-port-Zugriff ist plattformabhängig und kann sich über verschiedene Plattformen hinweg.
Fragen, eine weitere, detailliertere Frage und Sie erhalten ausführliche Antworten. Bitte geben Sie die Art von Plattform und Betriebssystem, das Sie verwenden.