AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie Signale einer IR Fernbedienung für ComPort empfangen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Signale einer IR Fernbedienung für ComPort empfangen?

Ein Thema von Cyberaxx · begonnen am 9. Okt 2007 · letzter Beitrag vom 15. Okt 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Wie Signale einer IR Fernbedienung für ComPort empfangen?

  Alt 9. Okt 2007, 22:38
Hallo,

mal wieder ich...
Ich würde gerne eine Fernbedienung in einem meiner Programme nutzen. Die Fernbedienung sendet RC5 Signale soweit ich weiß, da ich das mit Grider oder WinLirc nutzen kann.
Der Aufbau der Steuerung ist sehr einfach gehalten.

http://www.dvbmagic.de/images/fernbe...c_receiver.gif

Wenn ich RTS auf High lege ist der Empfänger aktiv. Signale kommen über DCD, nur High und Low Signale
Nach der Beschreibung des RC5 Protokolls, sieht ein Befehl so aus

2 Startbits (immer 1)
1 Toglebit
5 Adressbits
6 Kommandobits

Insgesamt also 14 ... hmmm ... Signale

Die einfache Prozedur mit ReadFile funktioniert nicht, da ja nicht wirklich Daten übertragen werden.
Eine passende Komponente habe ich auch noch nicht gefunden.

Wenn ich das bei mir am laufen habe, habe ich ein ziemlich grosses Untergrundrauschen drin.
Jedesmal wenn sich der Status an DCD ändert, habe ich einfach mal die Zustände in einem String addiert und nach 14 Zeichen ausgegeben. Da kam ziemlich viel Müll mit an. Habe als noch eine Prüfung aus High der ersten beiden Zeichen eingebaut.
Zusätzlich soll das Signal nur ausgegeben werden, wenn es sich von dem vorherigem unterscheidet.

Delphi-Quellcode:
if CP.DCD = 1 then
  Str := Str + '1'
    else Str := Str + '0';

if ((Length(Str) = 2) and (not(Str = '11'))) then
  Str := '';

if (Length(14) and (Str <> OStr)) then begin
  Memo1.Lines.Add(Str);
  OStr := Str;
  Str := '';
  end;

if Length(Str) = 14 then
  Str := '';
Eben mal schnell getestet gehabt aber da kommt leider auch nicht wirklich was bei heraus, bei fast jedem Tastendruck die Selbe Folge. Hat hier jemand eine Ahnung wie man das Richtig anstellt und mich auf den richtigen Weg schubsen könnte?
Eigentlich müsste der Source auch wenn er nicht sauber ist doch so seinen Zweck erfüllen?!

Ich blick da echt nicht mehr weiter.

Gruß
Daniel
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 01:53
Zitat von Cyberaxx:
Hallo,

mal wieder ich...
Ich blick da echt nicht mehr weiter.

Gruß
Daniel
Hallo,

RC5 benutzt einen Träger mit 27.8 µsec Periode und eine Bitperiode von 1.78 ms - wo bitte ist in deiner Software die Zeitmessung? Und wo ist die Manchester-Dekodierung?

Eine technische Beschreibung findest du hier:
http://www.ece.umd.edu/class/enee445.S2004/rc5codec.pdf

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 17:55
Wieso eigentlich eine Zeitmessung? Ich frage über einen Timer im Intervall immer den Zustand des Pins ab. Timer = Bitperiode.
Müsste es nur anstat der Timer Kompo direkt in einen Thread setzen. das sich hier bei die Signale nach einer Zeit ein wenig verschireben ist auch klar, da sollte dennoch ein Muster zu erkennen sein...

Falls Du das mit Manchaster Code meinst...

Zitat:
11 1 11111 111100
11 1 11111 111111
11 1 11111 111110
11 1 11111 011110
11 1 11111 111111
11 1 01111 111111
11 1 11111 111111
11 1 11111 111110
11 1 11111 111111
11 1 11111 111101
11 1 11111 111111
11 1 11111 111110
11 0 11111 111111
11 1 11111 111111
11 1 11111 111110
11 1 11111 111111
11 1 11111 110011
11 1 11111 111111
11 1 11111 101111
11 1 11111 111111
11 1 11111 111011
11 1 11111 111111
11 1 11101 101111
11 1 11111 111111
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 18:53
Bei 1.78 ms nützt ein Timer nichts mehr.
Wenn die Sache überhaupt Erfolg haben soll, muss dein Programm ständig den Pin DCD abfragen.
Bei jedem Wechsel des Zustand muss der Wert eines hochauflösenden Zählers in einem Array oder Liste gespeichert werden.
Delphi-Quellcode:
type
   TDCDEvent = record
      bitvalue : boolean;
      counter : Int64;
   end;
var
   DCDevents : array[0..14] of TDCDEvent;
Nachdem man 14 Mal den High-Zustand gesehen hat, kann man raus aus der Routine und muss das Array auswerten.
Ich würde das Array erst mal als CSV-Datei speichern und manuell auswerten, um zu sehen, ob man daraus überhaupt einen RC5-Code erkennen kann.
Andreas
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 19:07
Zitat von shmia:
Bei 1.78 ms nützt ein Timer nichts mehr.
Wenn die Sache überhaupt Erfolg haben soll, muss dein Programm ständig den Pin DCD abfragen.
Bei jedem Wechsel des Zustand muss der Wert eines hochauflösenden Zählers in einem Array oder Liste gespeichert werden.
Delphi-Quellcode:
type
   TDCDEvent = record
      bitvalue : boolean;
      counter : Int64;
   end;
var
   DCDevents : array[0..14] of TDCDEvent;
Nachdem man 14 Mal den High-Zustand gesehen hat, kann man raus aus der Routine und muss das Array auswerten.
Ich würde das Array erst mal als CSV-Datei speichern und manuell auswerten, um zu sehen, ob man daraus überhaupt einen RC5-Code erkennen kann.
Hallo,

das ist längst nicht alles:

1.78 ms ist die Zeit für ein ganzes Bit - die Hälfte Hi, die Hälfte Lo. Und um einen Timer auf ein asynchrones Signal halbwegs sicher zu sysnchronisieren, muss man mindestens mit der achtfachen Bit-Frequenz abtasten, so wie bei einem asynchronen UART. Von selbst laufen die Time Interrupts und der IR-Sender ja nicht synchron.

Ausserdem berücksichtigst du nicht, dass für High ja kein Dauersignal, sondern eine Impulsfolge mit Impulsen im µsec-Bereich gesendet wird. Um die nach deiner Methode zu erfassen, müsste man sie erstmal (mit Hardware) integrieren.

Dann erst könnte man langsam anfangen, über Manchester Code nachzudenken. Ich fürchte, bis dahin ist noch ein so weiter Weg, dass ich mich zu dem Thema besser nicht mehr melde.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 19:37
Zitat von Reinhard Kern:
Dann erst könnte man langsam anfangen, über Manchester Code nachzudenken. Ich fürchte, bis dahin ist noch ein so weiter Weg, dass ich mich zu dem Thema besser nicht mehr melde.
Gruss Reinhard
Das ist ja mal eine nette Hilfestellung...
Sag doch gleich ich soll aufgeben...
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#7

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 19:49
Zitat von Cyberaxx:
Zitat von Reinhard Kern:
Dann erst könnte man langsam anfangen, über Manchester Code nachzudenken. Ich fürchte, bis dahin ist noch ein so weiter Weg, dass ich mich zu dem Thema besser nicht mehr melde.
Gruss Reinhard
Das ist ja mal eine nette Hilfestellung...
Sag doch gleich ich soll aufgeben...
Sagen wirs mal so: ich fürchte, mit dieser Hardware würde ich es auch nicht hinkriegen. Und dann im Fernlehrverfahren...

Aber niemand hindert dich, dein Projekt gegen alle Widrigkeiten durchzuziehen - was uns nicht tötet, macht uns nur härter. Ich lasse mich gern positiv überraschen, also melde dich unbedingt, wenn der Empfang zuverlässig läuft.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#8

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 20:06
Zitat von Reinhard Kern:
Sagen wirs mal so: ich fürchte, mit dieser Hardware würde ich es auch nicht hinkriegen. Und dann im Fernlehrverfahren...
Wenn man sich z.B. WinLirc oder Grider. Beide Programme arbeiten mit genau der Hardware.

Ich scheitere ja so schon daran nen Delay in so einem kleinen Intervall hinzubekommen. Davon mal abgesehen beschäftigt sich das Programm dann ja nur noch mit dem abtasten, das kann es ja auch nicht sein.

Wo liegt denn mein Denkfehler in dem Moment. Ich habe eine Komponente die auf die Statusänderung des Signales reagiert.
Demnach müssten einmal High / Low ein Bit sein?
Da aber auch mal 2 Low Zustände hintereinander kommen könnten, muss ich also den Status manuell abfragen.
ich lege Spannung an und genau in dem Moment starte ich auch den Timer und zwar mit halber Bitlänge also 1,78ms / 2.
da der Zustand ja eine gewisse Zeit anhällt, warum müsste ich dann mindestens die 8 fache Abtastrate haben?
Wenn ich dann in dem Array immer den übernächsten Zustand lese, müsste ich doch jeweils das Signal haben was für das Bit von Wert ist?

Als Test zum Starten der Aufzeichnung, bräuchte ich doch dann nur 4 mal abtasten. das erste und das dritte Signal müssten dabei dann High sein, das wären dann meine beiden Startbits. Ist das der Fall, Zeichne ich weiter die Signale auf, 24 Zustände, davon sind dann 12 Brauchbare Signale. Sollten die ersten beiden Signale nicht meinen Startbits entsprechen sollen sie verworfen werden und erneut beginnen. Dabei werden die ersten beiden Signale verworfen und die nächsten 2 Signale zusazu geprüft.

Das ist im Moment meine Theorie, korrigiere mich wenn ich da Falsch liege.
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#9

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 20:36
Zitat von Cyberaxx:
Zitat von Reinhard Kern:
Sagen wirs mal so: ich fürchte, mit dieser Hardware würde ich es auch nicht hinkriegen. Und dann im Fernlehrverfahren...
Wenn man sich z.B. WinLirc oder Grider. Beide Programme arbeiten mit genau der Hardware.
...
Das ist im Moment meine Theorie, korrigiere mich wenn ich da Falsch liege.
Denkfehler 1 : mit dem Einschalten machst du den Empfänger scharf, deswegen weisst du noch lange nicht, wann der Sender startet - ich denke doch, wenn man auf einen Knopf drückt, oder handelt es sich nicht um eine Fernbedienung? Aber auch sonst weisst du das nicht auf die msec genau.

Ansonsten fehlt da was: was ist vor der gezeichneten Schaltung - ein IR Empfänger, vielleicht ein Carrier Detector oder was? So lässt sich nicht sagen, was da ankommt. Mit den Nadelimpulsen, die ein RC5-Sender abgibt, kann der PC nichts anfangen.

Studiere Seite 2 des genannten Links: http://www.ece.umd.edu/class/enee445.S2004/rc5codec.pdf

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#10

Re: Wie Signale einer IR Fernbedienung für ComPort empfangen

  Alt 10. Okt 2007, 20:44
http://www.sprut.de/electronic/ir/rc5.htm

Da es hier zum Posten zu viel Text ist poste ich auch mal einen Link.

Jetzt schaue ich mir Deinen auch mal an.
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz