Beiträge von wastl

    gzilly


    ein bild sagt mehr als 1000 worte, darum ein bild als anhang


    /wastl



    ergaenzung:


    das mit z-diode auf plus ist in ordnung: eine zener-diode verhaelt sich wie eine normale diode, ausser dass sie in sperrrichtung ab einem bestimmten wert ('zenerspannung') 'durchlaessig' wird und genau diesen spannungswert durchlaesst.


    beispielreferenz: http://www.elektronik-kompendium.de/sites/bau/0201211.htm (einer der ersten google-hits)

    sieht irgendwie nach meiner spielwiese (serdisplib) aus ;)
    (mobilephone displays)


    wuesste aber niemanden, der so ein geraet auseinandergenommen hat bzw. waere mir in meinen unzaehligen recherchen eine seite darueber im netz untergekommen.


    die herstellermarke + genaue modellbezeichnung waere interessant, vielleicht gibt es tech-docs dafuer.
    du wirst jedenfalls etwas glueck brauchen, da fast jedes mobilephone ein eigenes display hat ... und der pager wird da keine ausnahme machen.


    display scheint, wenn das foto nicht allzusehr taeuscht bzw. ein 'symbolfoto' ist, ein gfx-display mit einer iconleiste zu sein (im gegensatz zu alphanumerischen displays).


    dh. controller muss neben gfx auch eigene befehle fuer icons haben. wenn du glueck hast, sogar ein i2c-display (fuer die i2c-displaycontroller gibt es i.d.R. brauchbare datasheets).


    wenn du eines zuviel hast, kannst du mir ja eins schicken ;)
    vielleicht habe ich ja glueck, finde etwas und bringe es zum laufen.


    /wastl

    gzilly


    d1 und d2 sind ok (passt so wie im schaltplan und in der bauteiletabelle beschrieben, ausserdem ist auch das auf der montageanleitung abgebildete foto als hilfestellung brauchbar (d1 und d2 unterscheiden sich in der bauart, die eine ist 'durchsichtig', die andere schwarz und etwas dicker).


    bei mir war ein problem, dass bei einem bausatz (habe 2 gekauft) 2 kondensatoren falsch geliefert wurden (C1 und C2 wenn ich mich richtig erinnere, und zwar um faktor 10 zu gross. habe zum glueck passende noch herumliegen gehabt)


    -> unbedingt die aufgedruckten werte mit den werten in der 'montageanleitung' vergleichen!


    hast du genau nachgesehen, ob du das display ohne fehler angeloetet hast (keinen 'kurzen', keine offenen kontakte)? vorsicht mit der folie des displays: auf keinen fall knicken!


    wie im foto meines postings (ein beitrag vor deinem) zu sehen ist, funktioniert mein display einwandfrei.


    /wastl



    EDIT: wie ueblich: tippfehler

    oder es schenkt mir jemand eine fertig geaetzte sed1335-platine ;)


    (sed1335 haett ich schon (sed1335 foa - nicht quadratische version), display 640x200 haette ich auch herumliegen. braeuchte mich nur noch aufzuraffen, endlich eine platine zu designen/erstellen und aetzen....


    ein programm, das alles moegliche ueber meine library ausgibt, haette ich auch schon (wird in der naechsten lib-release dabei sein), treiber fuer sed1335 sollte kein so grosses problem sein.


    /wastl


    EDITs: deutsche sprech, schwere sprech

    @hulk


    ad root: muss es eh nicht. lasse xxvd schon seit (wenn ich mich richtig erinnere) 0.0.3 als benutzer laufen. man muss ab und zu div. fehlerhafte dateirechte und div. anderes zeugs richtigstellen (die xpix im .tgz 'verbrochen' hat ;) und LOGFILE und ERRFILE auf dateien/verzeichnisse zeigen lassen, in denen der benutzer schreib/leserechte hat, aber dann gehts ohne probleme.


    /wastl


    ergaenzung: ein rm -rf / will ich auch als benutzer nicht unbedingt haben ;) habe einstweilen diesen abschnitt auskommentiert ... besser zuviel als zuwenig.

    AnK


    schon probiert, hdd-connector zu loesen und wieder anzustecken (sowohl mainboard- als auch hdd-seitig?).


    auch alle 4pol-stromstecker ueberpruefen (ob immer alle 4 pins korrekt kontaktieren (ab und zu 'rutscht' ein pin durch und kontaktiert nicht mehr richtig)).


    hatte vor ein paar wochen aehnliches problem: 'erster gedanke: damn, alles hinueber'. oben genanntes durchgefuehrt: alles wieder ok (platte wurde zuvor auch von bios erkannt und dergleichen, aber beim mounten: njet ..)


    ich kenne shdiag nicht, aber von samsung gibt es eine repair-diskette HUTIL:


    http://www.samsung.com/Product…Drive/utilities/hutil.htm


    soweit ich mich erinnere, testet hutil die hdd nicht nur ein paar sekunden ;)


    /wastl

    xpix


    v 0.0.8 funktioniert relativ gut bei mir, eins ist mir aber aufgefallen (neben dem bereits erwaehntem recordings-problem):
    ab und zu stuerzt jetzt xxv beim betaetigen der remote-control ab:


    Code
    #strace -f xxvd.pl
    ...
    write(17, "HTTP/1.0 200 OK\nContent-type:ima"..., 41) = 41
    write(17, "\377\330\377\340\0\20JFIF\0\1\1\0\0\1\0\1\0\0\377\333\0"..., 4096) = -1 EPIPE (Broken pipe)
    --- SIGPIPE (Broken pipe) @ 0 (0) ---


    (annahme: grab und remotecontrol-action kommen einander in die quere)


    anregung:
    fuer die menuepunkte 'running now' und 'program guide' waere ein button/link 'update epg now' oder so zu empfehlen.


    werde auch mal - wie versprochen - eine anleitung erstellen, wie xxvd zusammen mit embedded mysql zu verwenden ist. in welcher form soll ich dir das dann schicken?


    /wastl

    xpix


    erst einmal lob: habe gerade 0.07b installiert (vorher 0.05 wgn osdtelext 0.4x und patch v. andreas)
    laeuft - was ich bis jetzt ausprobiert habe - ok, teletext ok, atv+ laesst sich auswaehlen und auch so einige schnitzer weg und schoene features dazu gekommen.


    ganz ohne bug-meldung komme ich aber nicht aus:
    (vielleicht nur mir aufgefallen, da ich xxvd bei mir - schon seit 0.0.3 oder so - nur als user laufen lasse: die verzeichnisse haben alle kein x-flag gesetzt. dh auch wenn dem user alles unter XXV gehoert: er kann in die verz. nicht hineinwechseln -> xxvd kann nicht starten)


    /wastl

    MarkusE: Date::Format
    bei redhat/fedora zu finden im rpm 'perl-TimeDate' ('up2date perl-TimeDate')
    debian-based distribs (oder wenn apt fuer rh/fedora installiert):
    apt-cache search Date::Format und das gefundene paket nachinstallieren
    (zb: 'apt-get install perl-TimeDate')


    oder ueber CPAN-shell:


    perl -MCPAN -e shell


    und dort install Date::Format



    xpix:
    nachtrag: kleiner bug: bei falschen urls stuerzt xxv.


    zb: http://vdr:8080/blabla


    => Can't locate object method "usage" via package "XXV::MODULES::HTTPD" at /opt/VDR/apps/XXV-0.0.5/bin/../lib/XXV/MODULES/HTTPD.pm line 270, <GEN17> line 10.

    xpix


    ein paar anregungen/fehler, die mir aufgefallen sind:


    * neue timer, die direkt im osd erstellt werden, erscheinen erst sehr verzoegert (wenn datenbestand aktualisiert wird)


    vorschlag fuer abhilfe: wenn auf <timer> gedrueckt wird, modify time v. timers.conf ueberpruefen, im bedarfsfall datenbestand auffrischen (ev. das selbe in gruen auch bei <channels> und channels.conf, ...)


    * sender mit + im namen koennen im program guide nicht angewaehlt werden
    (beispiel ATV+, ein oesterr. privatsender: <option value="ATV+" >ATV+</option>) => '+' durch html-code ersetzen! ('+' steht im query string fuer space)


    * im menue timers kann manuell kein neuer timer angelegt werden (nehme aber an, dass das ohnedies in der todo-list steht)


    /wastl

    hallo


    * 0.0.5 funktioniert bei mir (nachwievor aber gepatchtes Event::Lib in verwendung)
    * @andreas: osdteletextversion = 0.4


    habe aber festgestellt, dass einige browser massive probleme mit dem von xxv generierten html-stream haben wie es scheint:


    * konqueror version 3.1 uralt (installiert auf einem anderen rechner): An error occured while loading http://<ip-addr>:8080
    * links (sowohl text- als auch gfx-mode): http://localhost:8080 -> Error reading from socket
    * nc localhost 8080 mit GET / HTTP/1.0\n\n -> keine reaktion (detto bei HTTP/1.1)


    es funktionieren:
    * konq v. 3.1.15 (installiert lokal auf vdr-rechner)
    * firefox (installiert auf einem anderen rechner)
    * netscape 4.7 (detto)
    * lynx


    /wastl


    EDIT: lynx vergessen in der aufzaehlung

    xpix


    so, xxv laeuft jetzt endlich.


    die fehlerbehebung war etwas abenteuerlich:


    Zitat

    #0 0x405acb19 in XS_Event__Event_DESTROY (my_perl=0x804c458, cv=0x816e77c) at Event.xs:552
    552 Event.xs: No such file or directory.
    ---Type <return> to continue, or q <return> to quit---
    in Event.xs


    hab mir im Event.xs (source v. perl-lib Event-1.00) die zeile 552 angesehen, da war folgender code:



    habe das warn() statement (genau darin cored naemlich xxv) auskommentiert, plugin rebuilded und installiert -> siehe da, kein fehler mehr ...
    (habe mir nicht weiter angesehen, was den SIGSEGV genau ausloest, wenn mir mal gaaaanz langweilig ist, vielleicht ...)


    embedded mysql scheint auch einwandfrei mit zu spielen!


    >eine anregung fuer das vtx-plugin:
    >osdtelext-vtx modul legt bei mir zb eindeutige verzeichnisse mit dem
    >zusammengesetzten channelnamen an (zb: C-1-1079-28006), das vtx-plugin v. XXV
    >will aber andere form: directory "/tmp/vtx/1" not found.


    EDIT: $obj->{CHANNEL} ist immer leer bei mir ?!


    eine weitere anregung:
    da du ja sowieso port 8080 verwendest, kann XXV genausogut (und sicherer) als user laufen (die log-files muss man im .cfg eventuell anders angeben, da im /var/log und /var/run ueblicherweise keine rechte fuer 'normale' user sind).


    bei mir:

    Code
    # Path to logfile.
    LOGFILE = /etc/vdr/XXV/xxvd.log
    
    
    # Path to pidfile.
    PIDFILE = /etc/vdr/XXV/xxvd.pid



    EDIT: anmerkung:
    xxv benoetigt beim start laengere zeit sehr viel cpu (nehme an dass das bei mir datenschauflerei in embedded mysql ist, nehme an, dass das dasselbe problem ist wie das von nibbana berichtete), nach ein paar minuten ist aber dann alles ok.


    EDIT2: nibannas 2xINDEX-vorschlag hat auch bei mir die performance sehr verbessert.


    /wastl

    habe XXV jetzt getestet, leider stuerzt es permanent wegen einer Event-geschichte ab:



    Reading symbols from /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/Socket/Socket.so...done.
    Loaded symbols for /usr/lib/perl5/5.8.0/i386-linux-thread-multi/auto/Socket/Socket.so
    #0 0x405acb19 in XS_Event__Event_DESTROY (my_perl=0x804c458, cv=0x816e77c) at Event.xs:552
    552 Event.xs: No such file or directory.
    ---Type <return> to continue, or q <return> to quit---
    in Event.xs
    (gdb) bt
    #0 0x405acb19 in XS_Event__Event_DESTROY (my_perl=0x804c458, cv=0x816e77c) at Event.xs:552
    #1 0x400a3235 in Perl_pp_entersub (my_perl=0x804c458) at pp_hot.c:2781
    #2 0x4003b78c in S_call_body (my_perl=0x804c458, myop=0xbffff890, is_eval=0) at perl.c:2066
    #3 0x4003b3e3 in Perl_call_sv (my_perl=0x804c458, sv=0x804c458, flags=150) at perl.c:1987
    #4 0x400ad336 in Perl_sv_clear (my_perl=0x804c458, sv=0x8384194) at sv.c:4995
    #5 0x400ad764 in Perl_sv_free (my_perl=0x804c458, sv=0x8384194) at sv.c:5226
    #6 0x400acd93 in Perl_sv_clear (my_perl=0x804c458, sv=0x8384104) at sv.c:5080
    #7 0x400ad764 in Perl_sv_free (my_perl=0x804c458, sv=0x8384104) at sv.c:5226
    #8 0x400c9201 in Perl_free_tmps (my_perl=0x8384104) at scope.c:181
    #9 0x405abf7e in XS_Event__loop (my_perl=0x804c458, cv=0x816e6f8) at Event.xs:503
    #10 0x400a3235 in Perl_pp_entersub (my_perl=0x804c458) at pp_hot.c:2781
    #11 0x40086a0a in Perl_runops_debug (my_perl=0x804c458) at dump.c:1414
    #12 0x4003a9bb in S_run_body (my_perl=0x804c458, oldscope=0) at perl.c:1705
    #13 0x4003a645 in perl_run (my_perl=0x804c458) at perl.c:1624
    #14 0x080493a3 in main ()
    #15 0x401f3a67 in __libc_start_main () from /lib/i686/libc.so.6


    nicht immer an der selben stelle, ab und zu kann ich ein wenig herumprobieren, dann wieder stuerzt es sofort ab. muss noch mit ein paar sachen herumprobieren. habe aber derzeit noch keine idee woran das liegt.


    embedded mysql scheint grundsaetzlich zu funktionieren.


    /wastl

    xpix


    bei meiner herumspielerei mit sqlite bin ich auf etwas anderes gestossen, das sofort meine aufmerksamkeit erregt hat: embedded mysql.


    hab jetzt am abend damit herumgespielt und - nach viel flucherei - auch zum laufen bekommen.


    fein. kein eigener server mit user-verwaltung mehr (die installation des DBD::mysqlEmb moduls ist leider noch ein bissl umstaendlich).


    und auch sehr fein: es muss, ausser beim dsn, nix geaendert werden!


    beispiel:
    DBI->connect("DBI:mysqlEmb:test;mysql_embedded_options=--datadir=./test/mysql,--skip-innodb,--skip-bdb", "", "");
    -> legt im bedarfsfall auch gleich die datenbank an. es muss nur das datadir vorhanden sein und darin ein verzeichnis mit dem namen der datenbank (steht natuerlich in keiner anleitung => trial'n'error und mitgelieferte test-scripts debuggen).


    installiert muessen unter rpm-basierten distribs nur 2 pakete werden: MySQL-embedded und MySQL-devel und aus dem paket MySQL-server das verzeichnis /usr/share/mysql (habe ich mit 'mc' herausextrahiert). und natuerlich das perl-modul (welches anscheinend dzt nur ueber cvs geladen werden kann).



    wegen sqlite keine sorge: das werde ich mir trotzdem auch ansehen. aber zuerst moechte ich XXV mit embedded mysql hinbekommen.


    /wastl

    xpix


    ich sehe bis jetzt eigentl. nur bei einer sache probleme, und das ist autotimer.InField.
    dies kann ich nicht umsetzen (im CREATE).


    alle anderen unterschiede lassen sich durch falschunterscheidungen oder besser (wie du es nennst) 'Statement-Set' ausmerzen. du kannst ohne probleme bei mysql-CREATE ENUMs verwenden. kein problem. beim sqlite-CREATE verwende ich CHAR dafuer, in einer spaeteren WHERE-bedingung ist keine unterscheidung notwendig (WHERE enumfield = 'y' funktioniert in beiden faellen!)


    auch beim INDEX brauchst du nix aendern. beim sqlite-CREATE folgt halt einfach ein eigener CREATE INDEX nach.


    aja, eines noch: CREATE IF NOT EXISTS gibt es bei sqlite nicht. ev. koenntest du hier ein if ( ! foo_table_exists('SOMETABLE')) { create_table_stuff(...); } vorschalten. ist aber auch ned unbedingt notwendig.



    zu den pipes: schaut schoen aus ;) und stimmt so.


    erklaerung zum beispiel: in sqlite date/time-funktionien kannst du berechnungen ausfuehren (sogar mehrere aufgefaedelt).


    zb: Date(sometimefield, '+9 days') -> datum in sometimefield + 9 tage
    oder Strftime('%s', 'now', 'localtime', '+4711 seconds); -> jetzt (localtime, da sonst UTC) in unix-sekunden ('%s') + 4711 sekunden


    Strftime('%H%M', Datetime(starttime, '+'||duration||' seconds') ist daher:


    Datetime(starttime, '+'||duration||' seconds') -> inhalt von feld 'duration' (meine annahme: zeiteinheit == sekunden) konkatieren zb. zu '+47 seconds', zu starttime hinzuzaehlen, daraus einen zeitstring der form '%H%M' bilden ( %M/sqlite == %i/mysql)


    ist ja eigentlich ganz einfach ;)


    zu muggle: muggle ist leider vom programmierstil her eine katastrophe . 0 modularisierung der datenbankanbindung (und das, obwohl muggle in C++ erstellt ist!!). wenn dies zuvor jemand 1/2-wegs bereinigt, bin ich gerne bereits, fuer muggle die sqlite-anbindung zu machen. im jetzigen stadium aber sicher nicht.


    /wastl

    xpix


    so.
    habe mir die tabellen in hinblick auf anbindung an sqlite angesehen
    (fuer alle, die nicht wissen, wovon ich rede: http://www.vdr-portal.de/board/thread.php?threadid=22490&sid=)


    folgende fragen/anmerkungen:


    tabelle AUTOTIMER:


    -- InFields set('title', 'subtitle', 'description' ) NOT NULL,


    kann ich nicht aufloesen in SQLite (jedenfalls habe ich keine entsprechung gefunden).
    koenntest du das eventuell anders loesen bzw wofuer wird das genau benoetigt? (lt. schnell ueber den code drueberschauen missbrauchst du das SET als eine art 'inline table' oder so wenn ich mich nicht irre?)



    tabelle EPG:
    FULLTEXT KEY epgidx (title,subtitle,description)


    wird zu: ==>


    CREATE INDEX epgidx
    ON EPG (
    title,subtitle,description
    );



    wofuer setzt du das genau ein? unique muss/darf der ja nicht sein oder? (wenn ich die mysql-doku dazu richtig verstanden habe, ist FULLTEXT nur fuer beschleunigung der textsuche da)



    alle ENUM('y', 'n') DEFAULT 'y' wuerde ich in meinem SQLite-port aufloesen in
    fieldname CHAR DEFAULT 'y'
    und CHECK fieldname IN ('y', 'n') (wird zwar dzt. von sqlite ignoriert, aber sauberes design und ev. wirds ja mal ausgewertet ...)




    fuer unix_timestamp gibts eine (zugegeben grausame) entsprechung:
    SELECT strftime('%s', 'now', 'localtime') ...

    also als beispiel aus deinem sourcecode:


    DELETE FROM EPG WHERE (UNIX_TIMESTAMP(EPG.starttime) + EPG.duration) < UNIX_TIMESTAMP();


    wuerde zu


    DELETE FROM EPG WHERE (strftime('%s',EPG.starttime) + EPG.duration) < Strftime('%s', 'now', 'localtime');



    DATE_FORMAT(starttime, '%H%i') as Start,
    DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP(starttime) + duration), '%H%i') as Stop


    wuerde zu
    Strftime('%H%M', starttime) AS Start, Strftime('%H%M', Datetime(starttime, '+'||duration||' seconds')) AS Stop



    auch fuer das eine auto_increment in AUTOTIMER gibt es eine (etwas kranke) entsprechung: Id Int(11) auto_increment NOT NULL wird zu Id INTEGER PRIMARY KEY. wo ist da jetzt der auto_increment? tja, diese kombination macht das. habs ausprobiert und es stimmt tatsaechlich.
    (es ist zwar sowieso generell von auto_increments abzuraten (wofuer gibts SEQUENCEs), aber da sqlite keine sequences unterstuetzt, lasse ich das grade nochmal durchgehen ;-)))


    wenn das problem mit AUTOTIMER.InFields geloest ist werde ich die CREATEs anpassen und dann mit den DML-statements fortfahren.


    /wastl


    EDIT: korrektur v. defektem url