[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) {}
}
}