mein Problem ist: ich habe ein Programm in Delphi geschrieben, dass die eingänge des Druckerports überwachst. Nun habe ich versucht, eine Alte Fernbedienung (Infrarot) zu encoden, dazu habe ich einen Infrarotempfänger an den Eingang angeschlossen. Das Problem ist, dass Delphi zu langsam ist, um den COde zu entschlüsseln, es kommt eigentlich immer nur Müll raus.
Der Infrarotempfänger ist auf jeden Fall schnell genug.
- Liegt das an Delphie, oder ist der Druckerport vielleicht zu langsam??
- Gibt es eine Andere Sprache, die schneller ist??
- Gibt es einen Chip, der beim Entschlüsseln hilft??
- Hat jemand vielleicht ein Programm zum encoden???
Bei einem Multitasking-Betriebsystem wie Windows (das gilt genauso für Linux und etliche andere) wäre es ein Wunder, wenn das so einfach funktionieren würde, was du vor hast. Das Betriebssystem unterbricht ja immer wieder die Abarbeitung deines Anwenderprogrammes um sich zwischendurch um andere Tasks zu kümmern. ("Multitasking"). Für zeitkritischen Anwendungen wie das Abtasten von schnellen Impulsfolgen bräuchtest du eigentlich ein Echtzeit-Betriebssystem. Mit der guten alten MS-DOSe hättest du ganz gute Chancen gehabt, das es geklappt hätte.
Ich würde an deiner Stelle den Sensor an einen Mikrocontroller anschließen, der die Codes empfängt und zwischenspeichert. Die Übertragung von µC zum PC würde ich lieber über die COM-Schnittstelle machen. Da hast du üblicherweise schon ein FIFO drin, das einige Bytes puffern kann. Wenn das nicht reicht, hast du zusätzlich noch die Möglichkeit, über die Modemsteuerleitungen den Datenfluss zwischen µC und PC zu bremsen.
Wenn du den µC lieber an die Centronics anschließen willst, dann solltest du am besten mit einem Quittungsbetrieb zwischen µC und PC arbeiten, z.B. jedes gesendete Bit vom PC quittieren lassen bevor das nächste gesendet wird
Mein µC (Cc1) ist leider auch zu langsam dafür, deshalb kommen immer andere Bytes raus, auch wenn ich per Fernbedienung die selbe Taste drücke. Deshalb verscuhe ich den CC1 zu übertakten, von 4 Mhz auf 16.
bei 8 hat es schon funktioniert, ohne Probleme, aber war immer noch zu langsam.
EIn anderes Problem ist, dass CC1 zu wenig Speicherplätze hat, um alles zwischenzuspeichern.
Aber die Serielle Schnisstelle sollte das bei 38000 baud doch hinbekommmen.
Wie kann ich den die Werte von der Seriellen schnittstelle auslesen??
Bis jetzt mach ich das mit dem Hyperterminal, aber das bringt ja nix, denn dannmuss ich ja selber gucken was das jetzt für ne Taste war.
Vielleicht solltest du es mal mit einem anderen Sensor probieren. Dieser hier hat bereits einen Bandpass und einen Demodulator integriert. Dadurch werden nur noch die "Nutzdaten" als TTL-Pegel ausgegeben und nicht die Trägerfrequenz selbst. Du musst nur denjenigen Baustein auswählen, der die gleiche Trägerfrequenz wie deine Fernbedienung hat oder zumindest am nächsten dran ist. Herstelle: Vishay/Temic.
Noch kurz zur PC-Schnittstelle
Im einfachsten Fall (je nach Sprache, Compiler und Betriebssystem) kannst du die COM-Schnittstelle evtl. wie eine Datei öffnen. Mit Delfi kenn ich mich leider nicht aus
@djdune:
das ist mir etwas zu hoch alles, wenn ich das versuche, kommt sowiso nichts raus. Danke Trotzdem
@avatar:
Den, den ich verwende kann das auch ist so ähnlich nur was älter.
Raus kommen auch nur vernünftige Daten
Lesezeichen