Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: 32 Digital-Eingänge? Kategorie: CC2-Unit & Appl.Board / CC2-Station (von joe - 8.09.2004 19:27)
Als Antwort auf Re: 32 Digital-Eingänge? von André H. - 6.09.2004 21:00
Ich nutze:
C-Control II Station, OSOPT V3.0
> Hallo joe,
Erst mal Dank und Anerkennung an André für die Hilfe und Bereitschaft das Forum zu pflegen.
Das mit

        sbuf[6]=out;
        sbuf[7]=out shr 8;
        sbuf[8]=inp;
        sbuf[9]=inp shr 8

funzt nicht. bekomm immer noch (inp=0 und out=0).


mfg joe

>
> > Wenn ich einen Schalter an P0  ... P7(i2c-max7311-board ) betätige, wird der Portinhalt richtig über
> > die Funktion showports angezeigt und richtig über die RS232 übertragen.
> > Beim Drücken bzw. Loslassen eines Schalters P8...P15(i2c-max7311-board ) wird
> > der PortInhalt  RICHTIG angezeigt,
> > ABER via RS232 NICHT RICHTIG übertragen, d.h. es kommt immer eine 0 (inp=0 und out=0)rüber.
> > Ich verstehs nicht, was mach ich nur falsch.
> > ...
> >
> >  byte sbuf[12];
> >  int inp, new, out;
> >  byte flag;
> >  system.TIME time;
> >
> > thread main
> > { // Initialisierung
> > ...
> >        sbuf[6]=out;
> >        sbuf[8]=inp ;
> >        sbuf[10]=13;
> >        sbuf[11]=10;
> >...

>
> Das ist ja klar, daÃ? dies so nicht funzt. ;-)
> Fällt es Dir so auf ?
> Du willst out und inp, beides Integer, in sbuf[], ein Byte-Array, schreiben.
> Wenn Du das aber so machst, dann werden nur jeweils die unteren 8 Bit
> in sbuf[] gespeichert.
> Du muÃ?t dies dann schon so schreiben:
>        sbuf[6]=out;
>        sbuf[7]=out shr 8;
>        sbuf[8]=inp;
>        sbuf[9]=inp shr 8;

>
> Dann funzts. ;-)
> Ã?brigens, bei der Jahreszahl passiert dasselbe. (sbuf[2]=system.year();)
>
> Du könntest es aber auch so schreiben, und auf einen Datenrahmen verzichten:
>   hwcom.put(system.day());
>   hwcom.put(system.month());
>   hwcom.putint(system.year());
>   hwcom.put(time.hour);
>   hwcom.put(time.minute);
>   hwcom.put(time.second);
>   hwcom.putint(out);
>   hwcom.putint(inp);
>   hwcom.ret();

> Allerdings muÃ?t Du hier beachten, daÃ? integer bei hwcom.putint() mit MSB first gesendet werden !
>
>
> MfG André H.
>


    Antwort schreiben


Antworten:

Re: 32 Digital-Eingänge? (von joe - 8.09.2004 21:18)