Hallo Forengemeinde,
ich versuche mich gerade in der Anbindung von einem HUAWEI E160 - USB -
Sticks zur Verwendung als SMS-Gateway unter C in Linux. Als erstes
möchte ich anhand des "AT+COPS?"-Befehls feststellen, in welchem Netz
ich mich im Moment befinde.
Wenn ich also diesen Befehl losschicke, bekomme ich folgende Rückmeldung
lt. folgendem Quelltext:
1
char string1;
2
netzabfrage();
3
for(;;){
4
5
bytes = read_port(&fd_ser,puffer);
6
if( bytes > 0){
7
for (i = 0;i< bytes;i++){
8
//printf("%c",puffer[i]);
9
string1 = puffer[i];
10
11
printf("%c",string1);
12
}
13
printf("\n");
14
}
Im Terminal sieht das dann so aus (Ausgabe von string1 mit printf):
1
AT+COPS?
2
3
+COPS: 0,0,"o2 - de",0
4
5
OK
Meine Frage bezieht sich nun darauf, wie man am geschicktesten das
+COPS: 0,0,"o2 - de",0 aufteilen kann und sich die Information 'o2 - de'
in einem separaten String abspeichern kann, wenn die Zeile mit '+COPS:'
beginnt.
Vielen Dank,
MfG
chris
Vielen Dank für die Antworten,
finde unter google bezüglich ftok() nur.
key_t ftok(char *pathname, char proj_id);
gibts irgendwo ne Beschreibung, wie ich mit ftok() was filtern kann?
Kann man regex auch in einem stinknormalen C-Programm verwenden? Wenn
ja, wie ist da die Syntax? Bin leider nicht fündig geworden
MfG
chris
Peter Stegemann schrieb:
> Also laut meiner manpage ist ftok fuer was voellig Anderes... Ich wuerde> spontan ganze Zeilen mit fgets lesen und mit strtok_r zerlegen.
Ja , da habe ich mich vertan, Peter. Danke.
Vielen Dank für eure konstuktive Hilfe!
Versteh trotzdessen nur die Hälfte.
AT+COPS?
+COPS: 0,0,"o2 - de",0
OK
Das einzige was ich weiß ist, dass ich nach 2x '\n' ein `+COPS:` lesen
soll. Danach soll ich in der Zeile vom '"' bis zum '"' das 'o2 - de' in
einen separaten String speichern. Ich weiß allerdings nicht, wo ich
anfangen soll. Bzw. soll ich direkt von 'fd_ser' mit fgets lesen oder
den 'string1' mit fgets auslesen?
Sorry, beschäftige mich schon die komplette Woche mit diesem Thema und
bin schon total verzweifelt.
MfG
chris
Hallo Chris,
ich möchte mich meinen Vorrednern(schreibern) anschliessen und Dir die
Funktion strtok() empfehlen.
Du liest die Antwort auf Deinen AT-Befehl in einen String ein. Im 2.
Schritt zerlegst Du den String in seinen Bestandteile (mit strtok) wobei
sich hier das Komma als Separator anbietet. D.h du musst strtok in einer
Schleife aufrufen dazu findest Du ein beispiel in den man-Pages oder in
der Doku deines Compilers.