/ 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
ifstream device ( "/dev/ttyS1", ios::binar~
Fra : Stephan Henningsen


Dato : 10-10-01 16:46

Jeg har problemer med at læse fra min serielport med
C++-ifstreams. Et eller andet siger mig, at det er pga.
noget internt buffering, men jeg er ikke sikker. Jeg har
prøvet at slå det fra på forskellige måder, men stadig uden
held:


main ( int argc, char** argv )
{
fstream device;
streambuf* sbuf;
int i;
string buf;
char ch;
char str[100];



   //
   // Send request.
   //

// Set exception mask.
device.exceptions ( ifstream::eofbit | ifstream::failbit |
ifstream::badbit );



try {
device.open ( DEVICE, ios::bin | ios::nocreate | ios::app );
cout << "Device opened: " << DEVICE << endl;
}
catch ( const exception& e ) {
cerr << "Exception opening device " << DEVICE
<< ": " << e.what() << endl;
}


buf = string("/?!") + string(CRLF);
cout << "Transmitting: [" << buf << "]" << endl;
device.write( buf.c_str(), buf.length() );
device.flush();
device.close();




   //
   // Read feedback.
   //

buf.erase();
device.open ( DEVICE, ios::bin | ios::nocreate | ios::ate );
cout << "Receiving:" << endl;

// Flush output after each inserting operation.
// device.flags ( ios::unitbuf );
// device.sync_with_stdio( true );

while ( device ) {
device.flush();
device.get( ch );
device.sync();
cout << "­" << ch;
buf.append ( &ch );
}

cout << "Received:" << endl;
cout << buf << endl;

device.close();
cout << "Device closed: " << DEVICE << endl;


return 0;
}



--
Stephan Henningsen /
/ tisprut productions[tm]


 
 
Kent Friis (10-10-2001)
Kommentar
Fra : Kent Friis


Dato : 10-10-01 18:01

Den 10 Oct 2001 15:45:50 GMT skrev Stephan Henningsen:
>Jeg har problemer med at læse fra min serielport med
>C++-ifstreams. Et eller andet siger mig, at det er pga.
>noget internt buffering, men jeg er ikke sikker. Jeg har
>prøvet at slå det fra på forskellige måder, men stadig uden
>held:

> device.write( buf.c_str(), buf.length() );
> device.flush();
> device.close();

> device.open ( DEVICE, ios::bin | ios::nocreate | ios::ate );

Hvorfor lukker og åbner du serielporten?

Har du overvejet hvad der sker med data der kommer til en lukket seriel-
port - data som ingen programmer ønsker at modtage?

Mvh
Kent
--
War does not determine who is right, only who is left.

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

Månedens bedste
Årets bedste
Sidste års bedste