[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [DDL-ML] DDL und Tams LD-W-3 (nicht DDW!)



Quoting Peer Dr. Griebel <peer.griebel@web.de>:
> 
> > Frage ist: wie erreiche ich (gerne in Python/mit rcsh) das 256 Pakete
> > anstehen??? Es scheint als wenn jeder Befehl nur 1x gesendet wird...
> > 
> > Hat da jemand einen Codeschnipsel für mich?
> 
> Ja ich :-)
> 
> Sieh' Dir mal  den uhlprogrammer.py in rcsh an. Da muss ich auch eine Zeit lang warten (_PROGMODETIME) und immer wieder die Richtung wechseln...
 
Super, das looft! Danke!

Anbei mein unfertiges Script, bisher ändert das nichts an der
Konfiguration des Decoders. Da mache ich mich gleich mal dran.

Es scheint aber einen Bug in erddcd-1.5.0alpha-srcp zu geben. Wenn ich
diesen benutze bleibt mein Rechner stehen. Mit erddcd v1.4.0; srcp 0.7.1
funktioniert es. Kann dieses Verhalten jemand nachvollziehen?

> Wenn Dein Programm läuft, nehme ich es gerne in die rcsh Distribution auf...

Super. Ich machs noch schön... :-)


fr

-- 
 .''`.  Debian GNU/Linux Anwenderhandbuch    http://debian-support.de/
: :' :  aka http://openoffice.de[/linux/]    http://leenuks.de
`. `'   GPG Key: 887EB817 2000-12-12         FD97 87F0 A948 E412 E2AF
  `-                                         F742 5F9D D632 887E B817
#!/usr/bin/env python2.2

import time, string
from rcsh import *

class TamsLDW3Programmer(loco):
    _PROGMODETIME =  4          # #sec. to enter programming mode
    _SLOWMODEDELAY = 2 # 1.5    # time to wait between slow programming steps
                                # to wait until slow blinking stops
    _FASTMODEDELAY = 0          # time to wait between fast programming steps

    def __init__(self, addr):
        """Initialize the programmer/loco
        
        To program the loco, direct speed information has to be sent.
        Therefore Vmax is initialized to 0.
        
        """
        self._addr = addr
        self._fastModeEnabled = 0
        self.verbose = 1

    def startProgMode(self):
        if self.verbose: print "Entering programming mode"
        Reset()
        time.sleep(2)
        Power()
        time.sleep(0.02)


        for i in range(self._PROGMODETIME):
            # send command "reverse direction"
            srcp.send("SET GL M4 %s 1 1 0 0 4 0 0 0 0" % self._addr)
            time.sleep(1)
        # send command "speed=0"
        srcp.send("SET GL M4 %s 1 0 0 0 4 0 0 0 0" % self._addr)
        # Loco should blink four times
        time.sleep(self._SLOWMODEDELAY)

    def endProgMode(self):
        if self.verbose: print "Leaving programming mode"
        self._sendData(80)
        time.sleep(1)
        if self.verbose: print "Performing RESET"
        Reset()
        time.sleep(2)

    def _sendData(self, data):
        if data == 0:
            print "[converting value 0 to 80]"
            data = 80
        srcp.send("SET GL M4 %s 1 1 0 0 4 0 0 0 0" % data)
        time.sleep(0.2)
        srcp.send("SET GL M4 %s 1 0 0 0 4 0 0 0 0" % data)
        time.sleep(0.2)

Connect()

t = TamsLDW3Programmer(78)
t.startProgMode()

addr_new = 5 
srcp.send("SET GL M4 %s 1 0 0 1 0 0 0 0 0" % addr_new)
srcp.send("SET GL M4 %s 1 0 0 0 0 0 0 0 0" % addr_new)
time.sleep(1)

srcp.send("SET GL M4 %s 1 0 0 1 0 0 0 0 0" % addr_new)
srcp.send("SET GL M4 %s 1 0 0 0 0 0 0 0 0" % addr_new)
time.sleep(1)

srcp.send("SET GL M4 %s 1 0 0 1 0 0 0 0 0" % addr_new)
srcp.send("SET GL M4 %s 1 0 0 0 0 0 0 0 0" % addr_new)
time.sleep(1)

srcp.send("SET GL M4 %s 1 0 0 1 0 0 0 0 0" % addr_new)
srcp.send("SET GL M4 %s 1 0 0 0 0 0 0 0 0" % addr_new)
time.sleep(1)

t.endProgMode()

Attachment: pgp00004.pgp
Description: PGP signature