/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
hvordan laver man en buffer i c++ ??
Fra : Michael Bøllingtoft ~


Dato : 05-12-00 11:31

Hejsa !
hvordan laver man en buffer i C++ ???
bufferen skal indeholde Chars og skal bruges i forbindelse med noget seriel
kommunikation.
Hvis nogen har en ide til hvordan jeg starter/finder ud af hvordan man kan
lave en buffer, bliver jeg glad.

MVH
Michael



 
 
Soren 'Disky' Reinke (05-12-2000)
Kommentar
Fra : Soren 'Disky' Reinke


Dato : 05-12-00 11:48


"Michael Bøllingtoft Nielsen" <mbnn@worldonline.dk> wrote in message
news:is3X5.7171$_p.94205@news010.worldonline.dk...
> Hejsa !
> hvordan laver man en buffer i C++ ???
> bufferen skal indeholde Chars og skal bruges i forbindelse med noget
seriel
> kommunikation.
> Hvis nogen har en ide til hvordan jeg starter/finder ud af hvordan man kan
> lave en buffer, bliver jeg glad.

hvis du skal lave det rigtigt fint laver du en Ringbuffer template, så er
det ligegyldigt hvad for en type du ønsker at have i bufferen.
Og den kan genbruges

Et eksempel har jeg ikke lige ved hånden.

--
With many Thanks
Soren ' Disky ' Reinke ICQ #1413069 remove 'ihsyd' when email replying
Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish



Igor V. Rafienko (05-12-2000)
Kommentar
Fra : Igor V. Rafienko


Dato : 05-12-00 12:11

* Michael Bøllingtoft Nielsen

[snip]

> hvordan laver man en buffer i C++ ???


Hvilke operasjoner ønsker du at bufferen skal støtte?


> bufferen skal indeholde Chars og skal bruges i forbindelse med noget
> seriel kommunikation.


En wrapper rundt std::string? Evt. kan du ta en liten litt på
streambuf familien.





ivr
--
Amy: Psst... look what life was like before genetic engeneering.
Leela: Those poor 20th century women...
-- Futurama, "Why must I be a Crustacean in love?"

Per Abrahamsen (05-12-2000)
Kommentar
Fra : Per Abrahamsen


Dato : 05-12-00 14:21

igorr@ifi.uio.no (Igor V. Rafienko) writes:

> > bufferen skal indeholde Chars og skal bruges i forbindelse med noget
> > seriel kommunikation.
>
> En wrapper rundt std::string? Evt. kan du ta en liten litt på
> streambuf familien.

Principielt er det vel en queue<char> der bør bruges. Det er en
datastruktur hvor man kan indsætte elementer i den ene ende, og hente
dem i den anden (FIFO). Det lyder meget serielt.

Den er beskrevet i 17.3.2 af TC++PL, 3 udgave.

Kenneth Kristensen (05-12-2000)
Kommentar
Fra : Kenneth Kristensen


Dato : 05-12-00 14:02

> hvordan laver man en buffer i C++ ???
> bufferen skal indeholde Chars og skal bruges i forbindelse med noget
seriel
> kommunikation.
> Hvis nogen har en ide til hvordan jeg starter/finder ud af hvordan man kan
> lave en buffer, bliver jeg glad.

Kig på nedenstående eksempel.
Det er en ringbufer, godt nok skrevet i C, men forskellen er vel ikke så
stor.
Der skrives en streng af chars i bufferen, mens der læses 1 char af gangen.
Bufferen er brugt til afsendelse af data fra en microcontroller (via RS232)
til en PC.

//**************************************************************************
********************//
// Denne funktion håndterer styring og indskrivning af data i ringbufferen
PCBuffer. //
//**************************************************************************
********************//
void WriteToPCBuffer(int Data[],int *Length)
{
int x;
for (x=0;x<=*Length;x++) // Hele framen skal flyttes over i bufferen
{
PCBuffer[PCBufferWP]=Data[x]; // Data indskrives i bufferen
PCBufferWP++; // Writepointer opdateres
ElementsInPCBuffer++; // Antallet af karakterer i bufferen opdateres
if (PCBufferWP>=PCBufSize) PCBufferWP=0; // Wrap around WP
if ((PCBufferWP+1==PCBufferRP) || ((PCBufferWP==PCBufSize-1) &&
PCBufferRP==0))
{
PCBufferRP++; // Hvis bufferen er fuld skal RP flyttes frem
if (PCBufferRP>=PCBufSize) PCBufferRP=0; // Wrap around RP
}
}
}

//**************************************************************************
********************//
// Denne funktion håndterer styring og læsning af data i ringbufferen
PCBuffer. //
//**************************************************************************
********************//
int ReadFromPCBuffer(int *Data)
{
if (PCBufferWP!=PCBufferRP) // Der må ikke læses forbi WP
{
*Data=PCBuffer[PCBufferRP]; // Data læses ind fra buffer
PCBufferRP++; // Readpointer opdateres
ElementsInPCBuffer--; // Antallet af karakterer i bufferen opdateres
if (PCBufferRP>=PCBufSize) PCBufferRP=0; // Wrap around
return 1; // Der returneres 1 hvis der er data med ud fra
funktionen
}
else return 0; // Der returneres 0 når bufferen er tom
}



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408524
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste