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

[DDL-ML] Programmiergleis



Wie ich lese, gibt es Teilnehmer, denen dieser Ratschlag weitergeholfen hat.
Meine Lok aber lässt sich dadurch nicht beeinflussen. Vielleicht habe ich
aber noch nicht alles richtig gemacht, deshalb hier eine Auflistung:
- File erddcd.c geändert
//   cfsetospeed(&nmra_dev_termios,B19200);      /* baud rate: 19200 */
   cfsetospeed(&nmra_dev_termios,B38400);      /* PfH 13.02.2001   */
					                 /* baud rate: 38400
*/

- Make laufen lassen ==> neues erddcd und dieses auf erddcdnmra umbenannt
- Folgende Eingabe: setserial /dev/cua0 spd_cust divisor 7
- Daemon starten: ./erddcdnmra -p 12345 -d /dev/cua0 -M off
- NMRA-Programmer starten: ./nmra-programmer localhost 12345
- cvget 1 => es kann nichts ausgelesen werden (Lok macht auch keine
Bewegung)
- cvset 1 3 => kein ACK (Lok macht auch keine Bewegung)

Die Lok reagiert nach wie vor auf die vom Händler mit der Intellibox
programmierte Adresse 1 statt auf die von mir programmierte Adresse 3.
Habe ich was falsch gemacht?
Und noch eine Frage: Wie kann ich erddcd beenden ohne den Rechner neu zu
starten?

Gruss
Hanspeter


> -----Ursprüngliche Nachricht-----
> Von: Harald Barth [mailto:haba@pdc.kth.se]
> Gesendet am: Dienstag, 13. Februar 2001 09:29
> An: ddl-mailing-list@der-moba.de; Pfiffner, Hanspeter
> Betreff: Re: AW: AW: [DDL-ML] Programmiergleis
> 
> 
> Ich würde folgendes ausprobieren: Ändre in erddcd.c so daß
> nmra_dev_termios (statt B19200) B38400 enthält. Ändre dann bevor du
> erddcd startest mit setserial spd_cust divisor 7 (genaues steht sicher
> in man setserial). Das ändert den tty so, daß beim Anruf von 38.4k
> eigntlich die Spezialgeschwindigkeit mit dem divisor 7 eingestellt
> wird. Das müßte dann die bessere Frequenz erzeugen. Doch ist bei
> diesem Test natürlich das Märklin protokoll nicht drin (-M off), da es
> die "richtige" 38.4k verwendet.
> 
> Harald.
> 
> PS: Das ganze serial interface ist eignetlich recht abscheulich:
> Aus /usr/src/linux/drivers/char/serial.c
> 
>         if (baud == 38400 &&
>             ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST))
>                 quot = info->state->custom_divisor;
> Brr.
>