linux-l: talking to Modem

Wolfgang Jung woju at keep.in-berlin.de
Mi Feb 11 12:17:31 CET 1998


On Wed, Feb 11, 1998 at 10:38:45AM +0000, Dirk Wunderlich wrote: 
> Hi allerseits,
> Auch wenn das nur eine Linux-Randfrage ist:
> 
> Ich bin gerade dabei, C++ zu lernen, und habe in diesem Zuge
> gestern einmal versucht, mit meinem Modem zu reden.
> 
> Dabei hatte ich zwei Probleme
> 
> 1. habe ich keine cstrings erstellen können:
> 
> //++++++++++++++++++++++++++++++++++++++++++++
> # include <iostream.h>
> # include <cstring.h>
> 
> int main()
> {
> 
>  string antwort;
> 
> 	cout 	<< "Bitte geben sie einen String an:\t";
> 	cin 	>> antwort;
> 	cout	<< "\n\t" << antwort << "\n\n" ;
> 
>  return 0;
> };
> //---------------------------------------------------------------------------
> das habe ich im Borland 4.5 unter Win ganz normal compiliert bekommen,
> leider aber nicht unter Linux :-(
> 
> 
> //+++++++++++++++++++++++++++++++++++++++++++++++
> # include <iostream.h>
> # include <fstream.h>
> 
> int main ()
> {
> ifstream in  ("/dev/ttyS0");
> ofstream out ("/dev/ttyS0");
> 
> if (!in || !out)
> {	cerr << "\n\tFehler beim oeffnen des Modems\n" ;
> 	exit (2);};
> 
> //hier habe ich jetst das problem mit den Strings umgangen,
> //lies sich also kompilieren...	
> 
> char antwort[10];
> 
> out 	<< "atz\n";
> in	>> antwort ;

Ich gehe davon aus, dass Das alles liest bis zum LF(CR)

> cout 	<< "\n\n\t" << antwort << "\n\n\n";
> 
> return 0;
> };
> 
> //+++++++++++++++++++++++++++++++++++++++++++++++++
> 
> leider funktioniert das nicht so, wie ich will :-(
> beim Aufruf wird mir meine eigene Eingabe ausgegeben, und nicht die
> Antwort des Modems...

geh mal in ein terminalprogramm, und sieh Dir an, was ALLES 
vom Modem kommt...
Dann wirst Du feststellen, dass das Modem auch ATZ schreibt, weil
es im ECHO Mode ist (atE1).

> Hat da jemand eine Idee, woran das liegt?

Und da ich denke, dass >>>>in >>antwort;<<<<<
immer nur bis zum zeilende list, wenn Du eine Zeichenkette liest,
wirst Du also als erstes das Modem Echo erhalten.
das funktioniert genau so, wie es soll *g*

wuerde in C(++)-- mit gets genauso aussehen :)

Gruss
	Wolfgang

-- 




Mehr Informationen über die Mailingliste linux-l