|
| 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.
| |
|
|