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

DD(F), Re: [DDL-ML] ACK-Schaltung bei NMRA-Programmierung



In article <ifado.list.ddl/3A6F02C8.E2D9B86E@ecselling.de>,
Torsten Vogt  <ddl-mailing-list@der-moba.de> wrote:
>
>Aha. Ich habe mir ehrlich gesagt nicht allzuviel Gedanken drueber
>gemacht, fuer was die Leitungen des COM-Ports eigentlich gedacht
>sind und einfach die Loesung implementiert, die ich verstanden habe. 

Also liege ich mit meiner Vermutung, daß es zufällig so ist, richtig.
Ich habe also für meine Zwecke einen 1-Transistor-Inverter angehängt,
und: es klappt jetzt einwandfrei (zusammen mit Patches für den FreeBSD sio
handler, die ich dort als Bug-Report eingereicht habe.)

Ich würde daher folgende Version für erddcd vorschlagen:

#ifdef __FreeBSD__
int scanACK() {
   int result, arg;
   result = ioctl(COM_DEVICE, TIOCMGET, &arg);
   if ((result>=0)&&((arg&TIOCM_RI))) return 1; 
   return 0;
}

 
int waitUARTempty_scanACK() {
   ioctl(COM_DEVICE, TIOCDRAIN );
   return scanACK();
}

#else
...
#endif

Evtl. besser wäre es, eine Option für die Polarität des RI-Signals
einzuführen. Weitere Patches für die Anpassung an FreeBSD würde ich gerne
noch angeben. Soll ich das gegen erddcd-1.3.3 machen, oder kommt in Kürze
noch eine neue Version?
-- 
Dipl.-Math. Wilhelm Bernhard Kloke
Institut fuer Arbeitsphysiologie an der Universitaet Dortmund
Ardeystrasse 67, D-44139 Dortmund, Tel. 0231-1084-257