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

[DDL-ML] Weichendekoder



Hallo!

Ich habe den ddl client auf mehreren Rechnern mit verschiedenen Linuxen (RedHat und SuSE) installiert und jedesmal die gleiche Situation, Loks und Rückmeldung läuft, Weichen nicht. Um mögliche Adressprobleme zu umgehen habe ich im Code von J-Man unten angehängte Änderung eingebaut. Auch Extrawartezeit hab ich eingefügt, um die Weichen schalten zu lassen. Die Sache mit dem Oszilloskop werde ich auch ausprobieren, nur hab ich so ein Teil noch nie bedient und bin daher von Kenntnissen diesbezüglich eher unbelastet. Was mir prinzipiell unklar ist, warum kann ich die Loks ansprechen die Weichen aber nicht? Die Loks und die Weichen bekommen doch ihr Steuersignal über dieselbe Leitung warum geht das eine aber nicht das andere?
Bis dann!


Markus

P.S. Hier der Codeausschnitt, Klasse SolenoidController.java

//callback functions
private void cbfSet()
{
String addr = tfAddr.getText();
if (osr==null) return;

if (addr.length()==0) return;
for (int adr = 1; adr < 81; adr++)
  {
      addr = new Integer (adr).toString();
      //add prefix
      while (addr.length()<4) addr = "0" + addr;
      System.out.println ("set adr=" + addr);

      //compose SRCP String
      String cmd1 = "SET GA M " + addr + " 0 1 -1\n";
      String cmd2 = "SET GA M " + addr + " 0 0 -1\n";
      try
      {
          osr.write(cmd1.toCharArray());
          osr.flush();
          try
          {
              Thread.sleep(500);
          }
          catch (InterruptedException e) { }
          osr.write(cmd2.toCharArray());
          osr.flush();
          try
          {
              Thread.sleep(500); // Wartezeit
          }
          catch (InterruptedException e) { }

      }
      catch (IOException e) {}

      addr = new Integer (adr).toString();
      while (addr.length()<4) addr = "0" + addr;
      System.out.println ("reset adr=" + addr);

      cmd1 = "SET GA M " + addr + " 1 1 -1\n";
      cmd2 = "SET GA M " + addr + " 1 0 -1\n";

      try
      {
          osr.write(cmd1.toCharArray());
          osr.flush();
          try {
                    Thread.sleep(100);
                }
          catch (InterruptedException e) { }
          osr.write(cmd2.toCharArray());
          osr.flush();
          try {
                    Thread.sleep(500);
                }
          catch (InterruptedException e) { }
      }
      catch (IOException e) {}
        }
}