Thread View: de.comp.lang.c++
5 messages
5 total messages
Started by Christian Parg
Mon, 08 Apr 1996 12:08
COM-Port streamable
Author: Christian Parg
Date: Mon, 08 Apr 1996 12:08
Date: Mon, 08 Apr 1996 12:08
78 lines
2532 bytes
2532 bytes
Ich moechte eine Klasse entwerfen die Bloecke zu der Seriellen
Schnittstelle
schreibt und welche von ihr empfaengt. Die Klasse sollte stremable sein
so dass ich die Schnittstelle in folgender Form beschreiben kann:
COM << oBlock;
COM >> iBlock;
Wobei Com ein Objekt von dieser Klasse sein soll. Und oBlock ein Objekt
vom
Typ Anforderungsblock und entsprechend iBlock ein Objekt vom Typ
Antwortblock.
Zum Empfang habe ich bereits eine static Klasse f�r den Interrupt
entworfen.
(hat schon einige Kopfschmerzen bereitet)
Diese sieht folgendermassen aus:
class TSioInt
{ public:
TSioInt(int cport); // Interrupt verbiegen
~TSioInt(void); // zur�ckbiegen
private:
static void interrupt handler(__CPPARGS); // Interrupthandler
static void interrupt (far * near OldSio)(__CPPARGS); //
Variablendeklaration f�r alten Int.vektor f�r Serielle
};
class Schnittstelle {
public:
Schnittstelle(int datum = com1); // ComPort kann mit �bergeben
werden
boolean write(Anforderungsblock Block);
boolean read(Antwortblock *Block);
~Schnittstelle(void); // Destruktor
void SioIntEin(void){ outportb(irq_mask,inportb(irq_mask) & 0xe7);}
void SioIntAus(void){ outportb(irq_mask,inportb(irq_mask) | 0x18);}
boolean loged_in;
private:
// die Elemente m�ssen static sein damit TSioInt darauf zugreifen
kann
friend class TSioInt; // Klasse TSioInt kennt private Elemente von
Schnittstelle
static int com_port;
static int com_int; // Interruptnummer
static int int_contr;
const int irq_mask; // const ??
static const char eoi;
static unsigned char ring_buffer[MAXBUFFER];
static int empfangszaehler;
static int ein_zeiger;
static int aus_zeiger;
};
W�rde mich freuen wenn jemand eine Anregung oder ein Beispiel von einem
„hnlichen Problem h„tte.
Vielen Dank
Christian
Christian Parg 2:24448/0 (Appolonia)
oder:
christian.parg@uni-duesseldorf.de
Re: COM-Port streamable
Author: Frank-Christian Kruegel
Date: Mon, 08 Apr 1996 20:23
Date: Mon, 08 Apr 1996 20:23
44 lines
2129 bytes
2129 bytes
christian.parg@uni-duesseldorf.de meinte am 08.04.96 zum Thema "COM-Port streamable": > Ich moechte eine Klasse entwerfen die Bloecke zu der Seriellen > Schnittstelle > schreibt und welche von ihr empfaengt. Die Klasse sollte stremable sein > so dass ich die Schnittstelle in folgender Form beschreiben kann: > > COM << oBlock; > COM >> iBlock; > > Wobei Com ein Objekt von dieser Klasse sein soll. Und oBlock ein Objekt > vom > Typ Anforderungsblock und entsprechend iBlock ein Objekt vom Typ > Antwortblock. [...] > Wuerde mich freuen wenn jemand eine Anregung oder ein Beispiel von einem > aehnlichen Problem haette. Hinweis: achte auf die Portabilitaet des Moduls nach aussen. Solche Sachen wie Interrupts etc. haben die aufrufenden Module nicht zu interessieren, dass muss vollstaendig gekapselt sein. Denke daran, dass Dein Ansatz auch unter Windows oder OS/2 oder ... interessant sein koennte. Die Lowlevel-Geschichten wie Interrupts etc wuerde ich ohnehin in Assembler machen. Gerade bei der Interruptroutine ist es sehr wichtig, diese so schnell wie nur irgend moeglich zu machen, koste es was es wolle. C++ hat zwar nette Eigenschaften, ruft jedoch zusaetzlichen Overhead hervor, und der wird bei 460800 Baud (ja, es gibt vierfachgetaktete Schnittstellen und Devices, die so etwas nutzen koennen, ein ISDN-Zyxel mit Kanalbuendelung und V.42bis z.B.) garantiert toedlich. Das macht Deine heile C++-Welt und das saubere strukturierte Design ein Stueck weit kaputt, erhoeht aber die Funktionalitaet. Frank-Christian Kruegel ---------------------------------------------------------------------- fchk@gigabyte.ohz.north.de 2:2426/3060.1 21:100/8211.1
Re: COM-Port streamable
Author: Joachim Zobel
Date: Tue, 09 Apr 1996 04:34
Date: Tue, 09 Apr 1996 04:34
17 lines
962 bytes
962 bytes
Christian Parg <christian.parg@uni-duesseldorf.de> wrote: >Ich moechte eine Klasse entwerfen die Bloecke zu der Seriellen >Schnittstelle >schreibt und welche von ihr empfaengt. Die Klasse sollte stremable sein >so dass ich die Schnittstelle in folgender Form beschreiben kann: > COM << oBlock; > COM >> iBlock; Wie willst du Timeouts handeln? Joachim "... ein Geschlecht erfinderischer Zwerge, die fuer alles gemietet werden koennen." - Bertolt Brecht - Das Leben des Gallilei
Re: COM-Port streamable
Author: Ralf W. Stephan
Date: Thu, 11 Apr 1996 13:12
Date: Thu, 11 Apr 1996 13:12
14 lines
826 bytes
826 bytes
Joachim Zobel writes:
> Christian Parg <christian.parg@uni-duesseldorf.de> wrote:
> >Ich moechte eine Klasse entwerfen die Bloecke zu der Seriellen
> >Schnittstelle
> >schreibt und welche von ihr empfaengt. Die Klasse sollte stremable sein
> >so dass ich die Schnittstelle in folgender Form beschreiben kann:
> > COM << oBlock;
> > COM >> iBlock;
> Wie willst du Timeouts handeln?
Ein "try { ... }" außen herum?
ralf
Re: COM-Port streamable
Author: Joachim Zobel
Date: Fri, 12 Apr 1996 17:44
Date: Fri, 12 Apr 1996 17:44
27 lines
1384 bytes
1384 bytes
ralf@ark.franken.de (Ralf W. Stephan) wrote:
>Joachim Zobel writes:
>> Christian Parg <christian.parg@uni-duesseldorf.de> wrote:
>> >Ich moechte eine Klasse entwerfen die Bloecke zu der Seriellen
>> >Schnittstelle
>> >schreibt und welche von ihr empfaengt. Die Klasse sollte stremable sein
>> >so dass ich die Schnittstelle in folgender Form beschreiben kann:
>> > COM << oBlock;
>> > COM >> iBlock;
>> Wie willst du Timeouts handeln?
>Ein "try { ... }" außen herum?
Das Problem ist das Setzen der Timeouts. Wenn das nicht im _ctor
geschehen kann, weil sich die T'outs hin und wieder aendern, koennte
man wohl so etwas schreiben:
COM<<TIMEOUT(3000);
...
COM>>TIMEOUT(1000);
Strapaziert die >> und << aber etwas zu sehr. Falls man aber z.B. ein
Gerät steuert und die T'outs bei jedem Kommando anders sind, waere so
etwas sinnvoll.
Joachim
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads