| Autor |
Nachricht |
Evilmachine
Mitglied
Benutzerprofil
Anmeldungsdatum: 03.05.2012
Beiträge: 41
|
Evilmachine Mitglied
10:13:44 02.08.2012 Titel: |
Telnet Buffer nach Ausgabe scannen |
Zitieren |
Hallo,
ich habe ein kleines Problem.
Und zwar habe ich eine Telnet Verbindung aufgebaut und muss jetzt den Buffer nach einer bestimmten Phrase.
In meinem Fall Test Ok oder Test fehlgeschlagen. Aber irgendwie klappt das nicht so ganz.
Mein Aufruf funzt im Moment so:
| C++: | 1 2 3 4 5 6 7 8 9 10 11 | strcpy(tcp_buf, "/mnt/flash/testscript\n");
IOCall(6, (BYTE *) & t->XmitFifo, tcp_buf, strlen(tcp_buf));
sdelay(2000);
l = IOCall(0, (BYTE *) & t->RcvFifo); /* asks for character on TCP */
szResult = strstr(&t->RcvFifo, szFind);
if(szResult != NULL)
printf("Test Ok found");
if (l) { /* if characters available */
for (i = 0; i < l; i++)
tcp_buf[i] = IOCall(1, (BYTE *) & t->RcvFifo); /* reads characters to buffer */
sendblk(tcp_buf, l); /* and sends the buffer content to COM1 */ | |
Hat einer ne Idee wie ich jetzt den Buffer nach diesen Phrasen scanne?? |
|
|
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
10:19:34 02.08.2012 Titel: |
|
Zitieren |
In welcher Zeile hast du denn das Problem?
Was ist denn RcvFifo (welcher Typ)?
Bzw. wie ist die Struktur auf die t zeigt deklariert? |
|
|
|
 |
Evilmachine
Mitglied
Benutzerprofil
Anmeldungsdatum: 03.05.2012
Beiträge: 41
|
Evilmachine Mitglied
10:24:50 02.08.2012 Titel: |
|
Zitieren |
t ist ein Objekt von TCP Alloc (ist wieder diese CPK Geschichte)
Ich versuche hier szResult = strstr(&t->RcvFifo, szFind);
Die Phrase die in szFind definiert ist im Buffer RcvFifo zu suchen. Rcvfifo ist die komplette Ausgabe die über den Telnet Port zurückkommt. Und in dieser Ausgabe muss ich das halt finden. |
|
|
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
10:44:54 02.08.2012 Titel: |
|
Zitieren |
| Evilmachine schrieb: | | t ist ein Objekt von TCP Alloc (ist wieder diese CPK Geschichte) | Wenn ich mir deine letzten Post ansehe, ist t vom Typ TCP_t
| Evilmachine schrieb: | Ich versuche hier szResult = strstr(&t->RcvFifo, szFind);
| Ist der Inhalt von RcvFifo überhaupt '\0'-terminiert?
Bei deiner letzten Anfrage wurde schon geschrieben, dass dieses Theme besser im Linux-Unterforum aufgehoben ist, da die Funktionen die du benutzt kein Standard-C sind (mal str___ ausgenommen). |
|
|
|
 |
Evilmachine
Mitglied
Benutzerprofil
Anmeldungsdatum: 03.05.2012
Beiträge: 41
|
Evilmachine Mitglied
11:00:34 02.08.2012 Titel: |
|
Zitieren |
Teilweise ja.
\x1b[01;34m[cd49f4e.py.meinberg.de] \x1b[01;31mtimeserver \x1b[01;34m~ #
Das ist dann zum Beispiel das Login Prompt.
Aber bei der Rückgabe des Test Ok steht nur Test Ok\x0d\x0a
Und es soll ja nur nach Test Ok gescannt werden.
Habe es nach C99 gepackt weils eher ne reine Theroie Frage ist wie man einen Buffer nach Text scannt^^ |
|
|
|
 |
DirkB
Unregistrierter
|
DirkB Unregistrierter
11:36:41 02.08.2012 Titel: |
|
Zitieren |
Text suchen geht mit strstr().
Wie und ob das funktioniert kannst du auch leicht selbst testen.
Ein strstr("Ok\n\r","Ok"); funktioniert.
Wenn die Parameter für strstr() nicht passen, kommt Mist raus.
Es liegt also an dir, diese passend zu machen.
Wo stehen die Texte die du da zitierst?
Im Debugger?
Eine Testausgabe mit printf() ?
Oder... ?
Wo genau ist das Problem?
"Aber irgendwie klappt das nicht so ganz." gilt nicht als Fehlerbeschreibung.
Kommt nie das "Test Ok found"?
Gibt es irgendwelche Compilermeldungen?
Auch Warnungen muss man ernst nehmen! |
|
|
|
 |
ja. ja.
Unregistrierter
|
ja. ja. Unregistrierter
11:37:05 02.08.2012 Titel: |
|
Zitieren |
wenn du mit strstr im string "Test Ok\x0d\x0a" nach "Test Ok" suchst,
dann wird ein zeiger ungleich null geliefert, also ein positives suchergebniss.
oder was verstehe ich jetzt falsch |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|