Hardware-Wakeup: Mit Perl einen String konvertieren?

  • Hallo,


    ich habe begonnen mir eine kleine einfache Wakeup-Hardware für den VDR zu bauen. Herzstück davon ist ein PIC16F877 (derzeit im Testaufbau, weil ich noch so einen hatte).


    Ich habe es soweit laufen, dass ich in Software eine Uhr laufen habe (leider noch etwas ungenau).


    Ich kann per RS232 Daten an den PIC senden.


    Mit T19001 z.B. stellt der PIC seine Uhr auf Mon, 19:00 (Tag 1 ist Montag, Tag 7 ist Sonntag).


    Ähnlich sieht es aus mit dem Wakeup, W20001 z.B. stellt den Wakeup auf Mon, 20:00.


    Ich mache es ohne Datum, nur mit den Tagen. Das reicht für mich - Datum wäre rein in Software zu komplex (Schaltjahre usw berücksichtigen).


    Das funktioniert soweit alles wunderbar, nun habe ich aber ein ganz anderes Problem.


    Ich kann leider kein Perl oder ähnliches, daher habe ich keine Idee wie ich die Daten in dieser Form generieren soll.


    Die Uhrzeit müsste man irgendwie aus "date" in die Form bringen und das wakeup aus der ausgabe von svdrpsend.pl NEXT.


    Kann mir da jemand helfen?

  • Hai,


    vielleicht kannst Du Dein Vorhaben noch ein wenig mehr präzisieren?? Wann und wie willst Du diese Daten zum PIC schicken?


    Hilft Dir das weiter???:


    #!/bin/bash


    wd=`date +%w`
    time=`date +%H%M$S`


    if [ $wd -eq 0 ];then
    day=7
    else
    day=$wd
    fi


    echo "Now it is: T$time$day"

    MSI Speedster-FA4; Pentium-M 1,6GHz; 1GB DDR2; Samsung (HA250JC) 250GB; TechnoTrend TT-budget S2-3200; ZOTAC GT220 Synergy Edition 512MB
    yavdr 0.3; CoolerMaster CM 260 + IMON; 128x64 GLCD;

  • Es soll beim Shutdown des VDRs ausgeführt werden.


    Dein Script ist schonmal super, das kann ich ja einfach an /dev/ttyS0 schicken.


    Dann würde mein PIC seine Uhr stellen.


    Jetzt müsste er nur noch den nächsten Timer übertragen können, in der selben Form, nur eben mit W statt T.

  • Den Timer willst Du doch bestimmt einstellen können (Programmabhängig). Mir ist nicht ganz klar wodurch der wakeup erzeugt werden soll. Möchtest Du damit Programme aufzeichnen?

    MSI Speedster-FA4; Pentium-M 1,6GHz; 1GB DDR2; Samsung (HA250JC) 250GB; TechnoTrend TT-budget S2-3200; ZOTAC GT220 Synergy Edition 512MB
    yavdr 0.3; CoolerMaster CM 260 + IMON; 128x64 GLCD;

    Einmal editiert, zuletzt von zeus-cu ()

  • Ich will dich jetzt nicht kritisieren oder deine Arbeit schlecht machen, aber...


    Wärs nicht einfacher die Differenz (zB. in Minuten) zum Aufwachzeitpunkt zu berechnen und an den PIC zu schicken.


    Dann Brauchst du dich auch nicht um Schaltjahre zu kümmern, und der PIC muß "nur" runterzählen und bei 0 den Rechner starten.


    Das spart die Uhr im PIC und läst mehr Platz für andere Spielereien...





    Lars

  • Zeus-Cu, nein - der soll ausgelesen werden.
    Beispiel:


    dev0 local # svdrpsend.pl -d localhost NEXT
    220 dev0 SVDRP VideoDiskRecorder 1.3.33; Sun May 7 23:45:19 2006
    250 1 Mon May 8 17:28:00 2006
    221 dev0 closing connection


    Da ist der nächste Timer im VDR geplant.


    Nun wäre es super, wenn ein Script das umwandeln würde in folgendes Format


    W17281


    17:28 am Tag 1 (Montag) - oder besser noch 5 Minuten früher, damit der VDR auch an ist beim Zeitpunkt der Aufnahme.


    Verstehste meine Absicht nun?


    irrer-iwan: mmh das wäre ein ganz anderer Ansatz - werde es erstmal so probieren. Die PIC-Seite ist soweit fertig, und das mit Assembler, dann darfs am PC nicht scheitern :)

  • Als Bastelgrundlage, starte mal hier mit:

    Code
    #!/bin/perl
    
    
    print scalar localtime($ARGV[0]),"\n";
    
    
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($ARGV[0]);
    $wday=($wday+6)%7+1;
    printf("W%02d%02d%d\n",$hour,$min,$wday);


    Code
    ./time.pl 1147102080
    Mon May  8 17:28:00 2006
    W17281


    Die Zeitangabe 1147102080 entspricht der SVDRP NEXT ABS Ausgabe, und ist eine kontinuierliche Sekundenzählung. Wenn du 5 Minuten extra haben willst, kannst du einfach 300 abziehen.


    Gruß,


    Udo

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!