dass es sich dabei um eine mit NEC Protokoll handelt.
02eb14001200
Das 02 am Anfang steht für NEC.
dass es sich dabei um eine mit NEC Protokoll handelt.
02eb14001200
Das 02 am Anfang steht für NEC.
Ich habe mein Test System jetzt mal frisch aufgesetzt. Nicht das ich mir da was verschleppe und wundere, dass es nicht funktioniert. Ich verstehe noch nicht, wo du die 252ms bzw 216ms her hast.... und deinem Rechenbeispiel kann ich ebenfalls noch nicht soooo richtig folgen .
Ich habe irmplircd aus dem Git aktiv. Die Option -s ist nun auch verfügbar. Ich habe mal mit ein paar Werten gespielt aber es wird weder besser noch schlechter.... Ich habe nochmal bei yaVDR geschaut. Dort wird irmplircd ohne -r und ohne -s betrieben. In der setup.conf sind dort RcRepeatDelay = 300 und RcRepeatDelta = 100 gesetzt.
Im VDR statt in irmplircd zu filtern geht natürlich auch.
Es sollte nur nicht beides sein.
Aber was machst du dann mit Kodi?
Ich vergleiche nur die Standardeinstellungen zwischen zwei Distributionen. easyVDR funktioniert nicht, yaVDR funktioniert.
Ich verstehe einfach nicht, wieso es unter easyVDR nicht funktioniert. Auch wenn ich die Ausgabe von dem gepatchten irw nicht verstehe und nicht ersehe wo du die Zeiten her hast, sooo schwer ist irmplircd grundsätzlich ja nicht. Und vom Gefühl her ist es egal welche Parameter ich einstelle, der VDR reagier gleich schlecht. In Kodi funktioniert es selbst mit den Standardeinstellungen die in easyVDR gesetzt sind recht gut. Des Öfteren wird ein Tastendruck doppelt ausgeführt.
Ich bin der Meinung, es liegt nicht an irmplircd da irw (beide Versionen) ja funktioniert. Oder liege ich da falsch?
Auch wenn ich die Ausgabe von dem gepatchten irw nicht verstehe und nicht ersehe wo du die Zeiten her hast
irw gibt den Zeitpunkt des Tastendrucks aus.
Wenn man zwei aufeinander folgende Zeiten der selben Taste subtrahiert, bekommt man die zeitlichen Abstände zwischen den Tastenwiederholungen.
Der jeweilige Filter lässt nur Tastendrücke mit einem Mindestabstand durch, und daher habe ich in meinem Beispiel die Abstände so addiert, wie der Filter sie durchlässt.
Der Code ist eigentlich nicht schwer (Zeile 208 bis 218).
Um heraus zu bekommen, was da bei deinem easyVDR schief geht, sind einfach mehr Informationen nötig. Da ist Detektiv spielen angesagt .
Zeitstempeldifferenzen vergleichen bei geht und bei geht nicht, wäre ein erster Schritt.
Man sollte mal eine Differenzausgabe in irw einbauen ...
Noch eine Möglichkeit wäre, zum Beispiel in der Senderliste des VDR mal zu zählen, wieviel Sender der Cursor runter geht bei "Pfeil runter" im Vergleich zur irw Ausgabe und das entsprechend auch in Kodi.
Man sollte mal eine Differenzausgabe in irw einbauen ...
--- irw.cpp.b 2018-01-12 01:17:02.397960784 +0100
+++ irw.cpp 2018-02-13 11:37:11.000000000 +0100
@@ -22,6 +22,7 @@
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/time.h>
#include <sys/un.h>
#include <errno.h>
#include <getopt.h>
@@ -48,10 +49,12 @@ int main(int argc, char* argv[])
int fd, i;
char buf[128];
struct sockaddr_un addr;
+ struct timeval currentTime;
+ struct timeval previousTime;
int c;
const char* progname;
- progname = "irw " VERSION;
+ progname = "irw with timestamp and difference " VERSION;
act.sa_handler = sigusr1;
sigfillset(&act.sa_mask);
@@ -105,6 +108,10 @@ int main(int argc, char* argv[])
}
if (!i)
exit(0);
- chk_write(STDOUT_FILENO, buf, i);
+ gettimeofday(¤tTime, NULL);
+ printf("%ld.%06ld: %ld %s", currentTime.tv_sec, currentTime.tv_usec, ((currentTime.tv_sec - previousTime.tv_sec) * 1000000 + currentTime.tv_usec - previousTime.tv_usec) / 1000, buf);
+ gettimeofday(&previousTime, NULL);
+ memset(&buf[0], 0, sizeof(buf));
+ //chk_write(STDOUT_FILENO, buf, i);
}
}
Alles anzeigen
DiffAlles anzeigen--- irw.cpp.b 2018-01-12 01:17:02.397960784 +0100 +++ irw.cpp 2018-02-13 11:37:11.000000000 +0100 @@ -22,6 +22,7 @@ #include <sys/socket.h> #include <sys/types.h> #include <sys/stat.h> +#include <sys/time.h> #include <sys/un.h> #include <errno.h> #include <getopt.h> @@ -48,10 +49,12 @@ int main(int argc, char* argv[]) int fd, i; char buf[128]; struct sockaddr_un addr; + struct timeval currentTime; + struct timeval previousTime; int c; const char* progname; - progname = "irw " VERSION; + progname = "irw with timestamp and difference " VERSION; act.sa_handler = sigusr1; sigfillset(&act.sa_mask); @@ -105,6 +108,10 @@ int main(int argc, char* argv[]) } if (!i) exit(0); - chk_write(STDOUT_FILENO, buf, i); + gettimeofday(¤tTime, NULL); + printf("%ld.%06ld: %ld %s", currentTime.tv_sec, currentTime.tv_usec, ((currentTime.tv_sec - previousTime.tv_sec) * 1000000 + currentTime.tv_usec - previousTime.tv_usec) / 1000, buf); + gettimeofday(&previousTime, NULL); + memset(&buf[0], 0, sizeof(buf)); + //chk_write(STDOUT_FILENO, buf, i); } }
Wollte den Patch gerade mal anwenden:
patching file irw.c
Reversed (or previously applied) patch detected! Assume -R? [n] y
Hunk #1 succeeded at 23 (offset 1 line).
Hunk #2 FAILED at 48.
Hunk #3 FAILED at 107.
2 out of 3 hunks FAILED -- saving rejects to file irw.c.rej
Hier die irw.c.rej:
--- irw.cpp 2018-02-13 11:37:11.000000000 +0100
+++ irw.cpp.b 2018-01-12 01:17:02.397960784 +0100
@@ -48,12 +47,10 @@
int fd, i;
char buf[128];
struct sockaddr_un addr;
- struct timeval currentTime;
- struct timeval previousTime;
int c;
const char* progname;
- progname = "irw with timestamp and difference " VERSION;
+ progname = "irw " VERSION;
act.sa_handler = sigusr1;
sigfillset(&act.sa_mask);
@@ -107,10 +104,6 @@
}
if (!i)
exit(0);
- gettimeofday(¤tTime, NULL);
- printf("%ld.%06ld: %ld %s", currentTime.tv_sec, currentTime.tv_usec, ((currentTime.tv_sec - previousTime.tv_sec) * 1000000 + currentTime.tv_usec - previousTime.tv_usec) / 1000, buf);
- gettimeofday(&previousTime, NULL);
- memset(&buf[0], 0, sizeof(buf));
- //chk_write(STDOUT_FILENO, buf, i);
+ chk_write(STDOUT_FILENO, buf, i);
}
}
Alles anzeigen
Habe eine frisch entpackte irw.zip genommen.
Ich habe den Patch mal händisch eingepflegt. Ergebnis:
1518558003.198947: 6841717109103471 02eb14001200 38 KEY_OK IRMP
�1518558003.559989: 360 02eb14001200 39 KEY_OK IRMP
1518558003.883945: 323 02eb14001200 3a KEY_OK IRMP
1518558004.207925: 323 02eb14001200 3b KEY_OK IRMP
1518558004.531950: 324 02eb14001200 3c KEY_OK IRMP
1518558006.075965: 1543 02eb14001400 3d KEY_DOWN IRMP
1518558006.435904: 359 02eb14001400 3e KEY_DOWN IRMP
1518558006.759956: 324 02eb14001400 3f KEY_DOWN IRMP
1518558007.083896: 323 02eb14001400 40 KEY_DOWN IRMP
1518558007.678989: 595 02eb14001100 41 KEY_LEFT IRMP
1518558008.038984: 359 02eb14001100 42 KEY_LEFT IRMP
1518558008.362956: 323 02eb14001100 43 KEY_LEFT IRMP
1518558008.686990: 324 02eb14001100 44 KEY_LEFT IRMP
1518558009.769919: 1082 02eb14001300 45 KEY_RIGHT IRMP
1518558010.129941: 360 02eb14001300 46 KEY_RIGHT IRMP
1518558010.453912: 323 02eb14001300 47 KEY_RIGHT IRMP
1518558011.047900: 593 02eb14001400 48 KEY_DOWN IRMP
1518558011.408974: 361 02eb14001400 49 KEY_DOWN IRMP
1518558011.732954: 323 02eb14001400 4a KEY_DOWN IRMP
1518558012.056896: 323 02eb14001400 4b KEY_DOWN IRMP
1518558024.303848: 12246 02eb14000600 4c KEY_5 IRMP
1518558024.663792: 359 02eb14000600 4d KEY_5 IRMP
1518558024.987833: 324 02eb14000600 4e KEY_5 IRMP
1518558025.481895: 494 02eb14000700 4f KEY_6 IRMP
1518558025.842780: 360 02eb14000700 50 KEY_6 IRMP
1518558026.166780: 323 02eb14000700 51 KEY_6 IRMP
1518558028.134815: 1968 02eb14000900 52 KEY_8 IRMP
1518558028.495761: 360 02eb14000900 53 KEY_8 IRMP
1518558028.819806: 324 02eb14000900 54 KEY_8 IRMP
1518558029.143805: 323 02eb14000900 55 KEY_8 IRMP
1518558029.467802: 323 02eb14000900 56 KEY_8 IRMP
1518558029.791750: 323 02eb14000900 57 KEY_8 IRMP
1518558030.581825: 790 02eb14000800 58 KEY_7 IRMP
1518558030.942765: 360 02eb14000800 59 KEY_7 IRMP
1518558031.266751: 323 02eb14000800 5a KEY_7 IRMP
1518558031.590762: 323 02eb14000800 5b KEY_7 IRMP
1518558031.914812: 324 02eb14000800 5c KEY_7 IRMP
1518558032.238756: 323 02eb14000800 5d KEY_7 IRMP
Alles anzeigen
und hier mal das Patchfile zu dem irw.zip was du verlinkt hast:
--- irw.c 2018-01-11 15:30:30.000000000 +0100
+++ irw.c_neu 2018-02-13 22:42:33.853857759 +0100
@@ -37,12 +37,13 @@
int main(int argc,char *argv[])
{
- int fd,i;
- char buf[256];
+ int fd, i;
+ char buf[128];
struct sockaddr_un addr;
struct timeval currentTime;
+ struct timeval previousTime;
int c;
- char *progname;
+ const char *progname;
progname="irw with timestamp";
@@ -99,9 +100,10 @@
};
if(!i) exit(0);
gettimeofday(¤tTime, NULL);
- printf("%ld.%ld: %s", currentTime.tv_sec, currentTime.tv_usec, buf);
+ printf("%ld.%06ld: %ld %s", currentTime.tv_sec, currentTime.tv_usec, ((currentTime.tv_sec - previousTime.tv_sec) * 1000000 + currentTime.tv_usec - previousTime.tv_usec) / 1000, buf);
+ gettimeofday(&previousTime, NULL);
memset(&buf[0], 0, sizeof(buf));
- //write(STDOUT_FILENO,buf,i);
+ //chk_write(STDOUT_FILENO, buf, i);
};
}
Alles anzeigen
Folgende beiden Codezeilen erzeugen einen Fehler:
Und wenn ich bei irmplircd die Parameter -r 150 -s 0 ändere, dann sieht es so aus:
1518559514.578411: 6849998877396507 02eb14001200 a KEY_OK IRMP
+�1518559514.722402: 143 02eb14001200 b KEY_OK IRMP
1518559514.830441: 108 02eb14001200 c KEY_OK IRMP
1518559514.939437: 108 02eb14001200 d KEY_OK IRMP
1518559515.047378: 107 02eb14001200 e KEY_OK IRMP
1518559515.155367: 107 02eb14001200 f KEY_OK IRMP
1518559515.263444: 108 02eb14001200 10 KEY_OK IRMP
1518559515.705413: 441 02eb14001400 11 KEY_DOWN IRMP
1518559515.849413: 143 02eb14001400 12 KEY_DOWN IRMP
1518559515.957397: 107 02eb14001400 13 KEY_DOWN IRMP
1518559516.065382: 107 02eb14001400 14 KEY_DOWN IRMP
1518559516.173397: 108 02eb14001400 15 KEY_DOWN IRMP
1518559516.281443: 108 02eb14001400 16 KEY_DOWN IRMP
1518559516.389433: 107 02eb14001400 17 KEY_DOWN IRMP
1518559516.497417: 107 02eb14001400 18 KEY_DOWN IRMP
1518559516.605394: 107 02eb14001400 19 KEY_DOWN IRMP
1518559516.713401: 107 02eb14001400 1a KEY_DOWN IRMP
1518559517.896432: 1183 02eb14001000 1b KEY_UP IRMP
1518559518.040426: 143 02eb14001000 1c KEY_UP IRMP
1518559518.149381: 108 02eb14001000 1d KEY_UP IRMP
1518559518.257383: 107 02eb14001000 1e KEY_UP IRMP
1518559518.365383: 107 02eb14001000 1f KEY_UP IRMP
1518559518.473407: 108 02eb14001000 20 KEY_UP IRMP
1518559518.581423: 108 02eb14001000 21 KEY_UP IRMP
1518559518.689424: 107 02eb14001000 22 KEY_UP IRMP
1518559518.797378: 107 02eb14001000 23 KEY_UP IRMP
1518559518.905392: 107 02eb14001000 24 KEY_UP IRMP
1518559519.013418: 108 02eb14001000 25 KEY_UP IRMP
1518559520.179370: 1165 02eb14001400 26 KEY_DOWN IRMP
1518559520.323365: 143 02eb14001400 27 KEY_DOWN IRMP
1518559520.432367: 108 02eb14001400 28 KEY_DOWN IRMP
1518559520.540353: 107 02eb14001400 29 KEY_DOWN IRMP
1518559520.648415: 108 02eb14001400 2a KEY_DOWN IRMP
1518559520.756399: 107 02eb14001400 2b KEY_DOWN IRMP
1518559520.864335: 107 02eb14001400 2c KEY_DOWN IRMP
1518559520.972340: 107 02eb14001400 2d KEY_DOWN IRMP
1518559521.080449: 108 02eb14001400 2e KEY_DOWN IRMP
1518559521.188438: 107 02eb14001400 2f KEY_DOWN IRMP
1518559521.296440: 107 02eb14001400 30 KEY_DOWN IRMP
1518559525.016405: 3719 02eb14001000 31 KEY_UP IRMP
Alles anzeigen
Aber an der Bedienung vom VDR ändert sich nichts, was die nicht funktionierenden Tasten angeht.
Ich brauche mehr Infos darüber, wenn es nicht funktioniert.
Welche Tasten, was zeigt bei welcher Taste irw, wie genau reagiert der VDR bei welcher Taste …
Und die remote.conf.
Eine Möglichkeit, nur um sicher zu gehen, wäre, dass du deine remote.conf umbenennst und sie neu anlernst.
Ich brauche mehr Infos darüber, wenn es nicht funktioniert.
Welche Tasten, was zeigt bei welcher Taste irw, wie genau reagiert der VDR bei welcher Taste …
Und die remote.conf.
Eine Möglichkeit, nur um sicher zu gehen, wäre, dass du deine remote.conf umbenennst und sie neu anlernst.
Das mit der remote.conf hatte ich bereits gemacht. Kein Erfolg. Ich mache mal den Test mit MLD.
Also beim Anlernen werden die Tastendrücke erkannt, aber hinterher funktionieren sie nicht?!
Puuuh, wie beschreibe ich das Verhalten während des Anlernen? Kurz gesagt: Zweimal hat der VDR während dieser Phase aufgehört darauf zu reagieren. Beim dritten Mal hat es dann geklappt aber danach haben nur die weiter oben genannten Tasten im VDR funktioniert.
Ganz ehrlich.... wenn ich das hier nicht selbst erleben würde, ich hätte auch Schwierigkeiten das nachzuvollziehen.
Achja, wegen dem Patch den du veröffentlicht hast. Ich finde deine Erweiterung sehr hilfreich. Danke dafür aber hast du meine Frage gelesen? Irgendwie habe ich den Patch nicht auf die von dir gelinkte irw.zip anwenden können. Oder ist der Patch fürs Git?
Ja.
Ja.
Ooook macht dann meine Anpassung die ich gemacht habe und mit der irw.zip die du verlinkt hast überhaupt sinn?
Es hat offensichtlich funktioniert. Die gewünschten Ausgaben kommen.
Für dein Problem brauche ich mehr Infos. Bei anderen mit easyVDR funktioniert der Empfänger ja, und bei dir auf anderen Systemen auch.
Da muss ein ganz merkwürdiger Wurm drin sein in deinem easyVDR.
Aber ich befürchte, meine Fernhilfemöglichkeiten sind am Ende.
Es hat offensichtlich funktioniert. Die gewünschten Ausgaben kommen.
Für dein Problem brauche ich mehr Infos. Bei anderen mit easyVDR funktioniert der Empfänger ja, und bei dir auf anderen Systemen auch.
Da muss ein ganz merkwürdiger Wurm drin sein in deinem easyVDR.
Aber ich befürchte, meine Fernhilfemöglichkeiten sind am Ende.
Ich denke das Thema hat sich erledigt. Denn ich habe folgenden Test mit deiner irw Version gemacht. Bleifuss2 im easyVDR Forum hatte gefragt, ob die Repeats nach einer Pause bei 0 anfangen. Dem ist nicht so und ich habe da einen weiteren Test gemacht.
irw mit yaVDR in der VirtualBox:
1518798559.642510: 106437 160 0 KEY_OK devinput
1518798559.786607: 144 160 1 KEY_OK devinput
1518798559.894700: 108 160 2 KEY_OK devinput
1518798560.002919: 108 160 3 KEY_OK devinput
1518798560.110530: 107 160 4 KEY_OK devinput
1518798560.218672: 108 160 5 KEY_OK devinput
1518798560.326776: 108 160 6 KEY_OK devinput
1518798560.434779: 107 160 7 KEY_OK devinput
1518798560.542778: 107 160 8 KEY_OK devinput
1518798560.650319: 107 160 9 KEY_OK devinput
1518798560.758680: 108 160 a KEY_OK devinput
1518798560.866690: 107 160 b KEY_OK devinput
1518798560.975853: 109 160 c KEY_OK devinput
1518798561.083658: 107 160 d KEY_OK devinput
1518798561.191503: 107 160 e KEY_OK devinput
1518798561.299700: 108 160 f KEY_OK devinput
1518798561.407895: 108 160 10 KEY_OK devinput
1518798573.285659: 11877 160 0 KEY_OK devinput
1518798573.429483: 143 160 1 KEY_OK devinput
1518798573.537693: 108 160 2 KEY_OK devinput
1518798573.645271: 107 160 3 KEY_OK devinput
1518798573.753905: 108 160 4 KEY_OK devinput
1518798573.861361: 107 160 5 KEY_OK devinput
1518798573.969941: 108 160 6 KEY_OK devinput
1518798574.077488: 107 160 7 KEY_OK devinput
1518798574.185851: 108 160 8 KEY_OK devinput
1518798574.313251: 127 160 9 KEY_OK devinput
1518798574.401309: 88 160 a KEY_OK devinput
1518798574.510594: 109 160 b KEY_OK devinput
1518798574.618038: 107 160 c KEY_OK devinput
1518798574.726448: 108 160 d KEY_OK devinput
Alles anzeigen
irw mit easyVDR auf Blech:
1518798560.124436: 106545 02eb14001200 f KEY_OK IRMP
1518798560.376440: 251 02eb14001200 10 KEY_OK IRMP
1518798560.592438: 215 02eb14001200 11 KEY_OK IRMP
1518798560.808415: 215 02eb14001200 12 KEY_OK IRMP
1518798561.024492: 216 02eb14001200 13 KEY_OK IRMP
1518798561.241439: 216 02eb14001200 14 KEY_OK IRMP
1518798561.457488: 216 02eb14001200 15 KEY_OK IRMP
1518798561.673440: 215 02eb14001200 16 KEY_OK IRMP
1518798561.889451: 215 02eb14001200 17 KEY_OK IRMP
1518798573.768359: 11878 02eb14001200 18 KEY_OK IRMP
1518798574.020384: 252 02eb14001200 19 KEY_OK IRMP
1518798574.236324: 215 02eb14001200 1a KEY_OK IRMP
1518798574.453391: 217 02eb14001200 1b KEY_OK IRMP
1518798574.669348: 215 02eb14001200 1c KEY_OK IRMP
1518798574.885359: 215 02eb14001200 1d KEY_OK IRMP
1518798575.101364: 215 02eb14001200 1e KEY_OK IRMP
Alles anzeigen
Beide irw's sind zur gleichen Zeit gelaufen. Die Leerzeilen habe ich zur bessern Übersicht eingefügt. Dort habe ich pausiert. Die Ausgabe unter yaVDR zeigt ja eine Spalte mehr an. Könnte das an eventlircd liegen? Diesen gibt es in easyVDR nicht und würde zumindest erklären warum es mit yaVDR und MLD funktioniert.
Gruß
Obelix
Dass er nach der Pause weiterzählt, statt mit Null neu anzufangen ist ganz klar falsch.
Also eine heiße Spur .
Da hätte ich gerne mal die Sourcen von irmplircd in easyVDR, um nachzuschauen, wo der Wurm drin ist.
Edit: Aber du hattest auch ein neues selbst kompiliertes irmplircd ausprobiert, oder? Dann funkt da vielleicht noch etwas anderes dazwischen.
Dass er nach der Pause weiterzählt, statt mit Null neu anzufangen ist ganz klar falsch.
Also eine heiße Spur .
Da hätte ich gerne mal die Sourcen von irmplircd in easyVDR, um nachzuschauen, wo der Wurm drin ist.
Anbei die Sourcen
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!