Forum: Mikrocontroller und Digitale Elektronik String aufschlüsseln in bascom


von Uwe Neubert (Gast)


Lesenswert?

Hi!
Ich habe einen String :
+Clip: "+491731234567",145,,,"K1"

Nun mein Problem, der Atmega 8 soll diesen String auswerten. Er entsteht 
von einem Modem, welches den eingehenden Anruf so anzeigt. K1 ist der 
gespeicherte Name auf dem Telefonbuch. ich möchte dieses K1 oder besser 
die Nummer ausfiltern, heisst es soll ein neuer String mit Inhalt K1 
oder +491731234567 entstehen.

Wenn ich bascom sage if String = "+Clip: "+491731234567",145,,,"K1""
dann meckert bascom natürlich wegen den " im String!!!! Was kann ich 
tun?
Gibt es eine Möglichkeit die kommas zu zählen oder so ähnlich?

Bitte meldet euch auch per gert.neubert@t-online.de dazu. Vielen Dank!

von Niels H. (monarch35)


Lesenswert?

Entweder das Gäsenfüsschen "escapen" (üblicherweise mit \) oder das 
Gänsefüsschen als Ascii-Zeichen in den String einhängen (z.B. chr() oder 
ord())

Eins von beiden wird Bascom schon kennen.

von Falk B. (falk)


Lesenswert?

@ Uwe Neubert (Gast)

>die Nummer ausfiltern, heisst es soll ein neuer String mit Inhalt K1
>oder +491731234567 entstehen.

Also einfach die Nummer rausfiltern. Sollte einfach sein, es ist der 
erste Text von vorn in Gänsefüsschen.

>Wenn ich bascom sage if String = "+Clip: "+491731234567",145,,,"K1""
>dann meckert bascom natürlich wegen den " im String!!!! Was kann ich
>tun?

RTFM. Die Schlüsselworte lauten ASC(), MID() und FOR Schleife.

>Gibt es eine Möglichkeit die kommas zu zählen oder so ähnlich?

Sicher.

>Bitte meldet euch auch per gert.neubert@t-online.de dazu. Vielen Dank!

Nööö, du must schon ab und zu mal vorbei schauen. Oder dich anmelden und 
die automatische Emailbenachrichtigung aktivieren.

MFG
Falk

von Niels H. (monarch35)


Lesenswert?

Falk Brunner wrote:

>>Bitte meldet euch auch per gert.neubert@t-online.de dazu. Vielen Dank!
>
> Nööö, du must schon ab und zu mal vorbei schauen. Oder dich anmelden und
> die automatische Emailbenachrichtigung aktivieren.

Es gibt offensichtlich immernoch Leute, die nicht wissen, wie so ein 
Internet-Forum eigentlich funktioniert und warum es funktioniert...

von Uwe Neubert (Gast)


Lesenswert?

Bin ja registriert, hab mein Passwort vergessen :-)
ich habe mal in die Hilfe von bascom geschaut,dort steht auch was zu den 
"Schlüsselwörtern", hab ich das richtig verstanden, dass ich mit "Trimm" 
die Gänsefüßchen wegbekomme?

von Uwe Neubert (Gast)


Lesenswert?

@ Falk, was heisst das hier:   RTFM.  ????
Ich gukhier öfter vorbei. Mein Hauptgebiert sind GSM_modems und deren 
Anwendung. Und nun suche ich ne Lösung zu der Clip-Funktion, ich brauch 
halt die Nummern einzeln erkannt.

von Niels H. (monarch35)


Lesenswert?

Uwe Neubert wrote:
> @ Falk, was heisst das hier:   RTFM.  ????

Read The F*cking Manual...

Das ist Englisch und bedeutet Umgangssprachlich: "liess die verdammte 
Anleitung", wobei 'verdammt' schon sehr abgeschwächt vom original etwas 
abweicht....

von Uwe Neubert (Gast)


Lesenswert?

@ falk

Bist mir ne große Hilfe...
Wenn ich das (englische!!!) Manual so schnell durchgelesen hätte wie du 
es kennst müßte ich hier nicht um Hilfe bitten.

von Falk B. (falk)


Lesenswert?

@ Uwe Neubert (Gast)

>@ Falk, was heisst das hier:   RTFM.  ????

http://www.gidf.de
http://en.wikipedia.org/wiki/RTFM

MFG
Falk

von Falk B. (falk)


Lesenswert?

@ Uwe Neubert (Gast)

>Bist mir ne große Hilfe...
>Wenn ich das (englische!!!) Manual so schnell durchgelesen hätte wie du
>es kennst müßte ich hier nicht um Hilfe bitten.

Ich KENNE es so ziemlich gar nicht. Es oxidiert nur auf meiner 
Festplatte und belegt ca. 15 MB. Ein Doppelclick öffnet es, dauert hier 
ca. 5 Sekunden (Jaja, nicht die schnellste Maschine). CTRL+F ist die 
Tastenkombination deiner Wahl. Suchbegiff eingeben und schwups. OK, 
meine Basic-Vergangenheit holt mich da ein ;-)

Win-Tastenkombinationen

MFG
Falk

von Falk B. (falk)


Lesenswert?

@ Niels Hüsken (monarch35)

>Anleitung", wobei 'verdammt' schon sehr abgeschwächt vom original etwas
>abweicht....

Warum? Das ist die recht offizielle Übersetzung. Und ich meine 
offiziell, nicht das PEEP geschönte aus dem amerikanischen Fernsehen. 
Da gibst ein schönes, ironisches MP3, welches die manigfaltige 
Verwendung des berühmten F-Words im Englischen sehr schön 
veranschaulicht. Finde ich aber leider im Moment nicht. :-( F***erdamt 
;-)

MFG
Falk, auch ein F-Word mit 4 Buchstaben, bei amerikanischer Aussprache 
8-0

von Niels H. (monarch35)


Lesenswert?

Falk Brunner wrote:

>>Anleitung", wobei 'verdammt' schon sehr abgeschwächt vom original etwas
>>abweicht....
>
> Warum? Das ist die recht offizielle Übersetzung. Und ich meine

Naja, ich mit meiner acht-monatiger Erfahrung mit Amerikanern würde das 
F-Wort nicht unbedingt generell mit 'verdammt' übersetzen. Im Deutschen 
gibt es einfach kein Wort, daß unter Garantie selbst bei Erwachsenen 
entweder einen verschreckten oder hämigen Gesichtsausdruck hervoruft.

Wenn ich es Übersetzen müsste und dabei sowohl den emotionalen als auch 
den sinnlichen Kontext zu wahren versuche, würde ich es so probieren:

"Liess die verschissene, bekackte Anleitung, du Arsch!"

Das Suffix "du Arsch" ist nötig, weil "verschissen" und "bekackt" 
zusammen nicht selbigen emotionalen Wert erreichen, wie "f*cking".

Ich glaub, wir sind etwas vom Thema ab....

von Uwe Neubert (Gast)


Lesenswert?

Bin ja mal gespannt ob man weiter Beleidigungen loswird oder ob das hier 
noch brauchbares ausspuckt...
Fahre ich besser, den String in ASCII umzuwandeln und dann zu sortieren?
Bascom akzeptier kein If zeichen = """, sprich es erkennt die 
Gänsefüßchen nicht an, und beim deklarieren muss man alles in denen 
schreiben: "gänsefüßchen"

von Karl H. (kbuchegg)


Lesenswert?

Uwe Neubert wrote:
> Bin ja mal gespannt ob man weiter Beleidigungen loswird oder ob das hier
> noch brauchbares ausspuckt...

Wurde doch schon gesagt:
Nach dem ersten " suchen
Ab dort bis zum nächsten " suchen und alles dazwischenliegende
zb in einen neuen String umkopieren.

Die Schlüsselworte dazu sind ASC(), MID() und FOR

Vorallem FOR, wenn du nicht zufällig in der Doku noch eine
Stringfunktion findest, die nach einem Zeichen in einem
String suchen kann.


Warum glauben eigentlich immer soviele Leute, dass es für alles
und jeden Problemfall ein eigenes Schlüsselwort in der Sprache
geben muss?


> Fahre ich besser, den String in ASCII umzuwandeln und dann zu sortieren?
> Bascom akzeptier kein If zeichen = """, sprich es erkennt die
> Gänsefüßchen nicht an,

Da gibt es bestimmt eine bestimmte Schreibweise für Gänsefüschen
in einem String. Jede Sprache hat da was dafür.

von Philipp B. (philipp_burch)


Lesenswert?

Karl heinz Buchegger wrote:
> Uwe Neubert wrote:
>> Bin ja mal gespannt ob man weiter Beleidigungen loswird oder ob das hier
>> noch brauchbares ausspuckt...
>
> Wurde doch schon gesagt:
> Nach dem ersten " suchen
> Ab dort bis zum nächsten " suchen und alles dazwischenliegende
> zb in einen neuen String umkopieren.
>
> Die Schlüsselworte dazu sind ASC(), MID() und FOR
>
> Vorallem FOR, wenn du nicht zufällig in der Doku noch eine
> Stringfunktion findest, die nach einem Zeichen in einem
> String suchen kann.

InStr() heisst das Ding in VB. Wird es in BASCOM bestimmt auch geben.

> Warum glauben eigentlich immer soviele Leute, dass es für alles
> und jeden Problemfall ein eigenes Schlüsselwort in der Sprache
> geben muss?

BASCOMer sind wohl so erzogen ^^

>> Fahre ich besser, den String in ASCII umzuwandeln und dann zu sortieren?
>> Bascom akzeptier kein If zeichen = """, sprich es erkennt die
>> Gänsefüßchen nicht an,
>
> Da gibt es bestimmt eine bestimmte Schreibweise für Gänsefüschen
> in einem String. Jede Sprache hat da was dafür.

VB: s = """"
Also einfach die Anführungszeichen verdoppeln (s = "abc""xyz""blub").

von Kai G. (runtimeterror)


Lesenswert?

Versuch mal:
if String = "+Clip: ""+491731234567"",145,,,""K1"""
also die Anführungszeichen verdoppeln

geht bei allen mir bekannten BASIC-Dialekten...

von Karl H. (kbuchegg)


Lesenswert?

Hab mir eben mal ein BASCOM Manual im Netz besorgt.
Da steht:

<quote>

Strings
A string is used to store text. A string must be dimensioned
with the length specified.

DIM S as STRING * 5

Will create a string that can store a text with a maximum length
of 5 Bytes. The space used is 6 bytes because a string is
terminated with a null byte.

To assign the string:

s = "abcd"

To insert special characters into the string:

s = "AB{027}cd"

The {ascii} will insert the ASCII Value into the string.
The number of digits must be 3. s = "{27 will assign "{27}"
to the string instead of escape character 27!

</quote>

http://www.mcselec.com/download/avr/bascom-avr%20manual%201.11.7.pdf

von Kai G. (runtimeterror)


Lesenswert?

x = "{034}"

ist dann wahrscheinlich das, was du suchst...

von Falk B. (falk)


Lesenswert?

@Uwe Neubert (Gast)

>Fahre ich besser, den String in ASCII umzuwandeln und dann zu sortieren?

Ein String ist bereit eine Kette von ASCII-Zeichen. Hear, Hear.

>Bascom akzeptier kein If zeichen = """, sprich es erkennt die
>Gänsefüßchen nicht an, und beim deklarieren muss man alles in denen
>schreiben: "gänsefüßchen"

Siehe die Poster oben.

Es gibt sogar schon eine Funktion, die eine String nach speziellen 
Zeichen durchsucht und zerhackt. SPLIT. Einfacher gehts nimmer.

MFG
Falk

von Karl H. (kbuchegg)


Lesenswert?

Falk Brunner wrote:

> Es gibt sogar schon eine Funktion, die eine String nach speziellen
> Zeichen durchsucht und zerhackt. SPLIT. Einfacher gehts nimmer.

Lass mich raten:
Du hast das Unaussprechliche getan und ins Manual geschaut?

von Falk B. (falk)


Lesenswert?

@Karl heinz Buchegger (kbuchegg)

>> Es gibt sogar schon eine Funktion, die eine String nach speziellen
>> Zeichen durchsucht und zerhackt. SPLIT. Einfacher gehts nimmer.

>Lass mich raten:
>Du hast das Unaussprechliche getan und ins Manual geschaut?

Hatte ich mich nicht schon geoutet? ;-)

MfG
Falk

von Joachim R. (bastelbaer)


Lesenswert?

Hi, mal ein paar Anregungen zu deinem Problem
Wenn dein String namens GSM folgendes beinhaltet:
+Clip: "+491731234567",145,,,"K1"

1.Version
'Zuerst mal das erste Anführungszeichen suchen mit
P=INSTR(GSM,"{034}")
' Ab hier beginnt die Nummer
Incr P
' Nun das zweite Anführungszeichen suchen
P1=INSTR(P,GSM,"{034}")
' eins zurück
Decr P1
' und nun die Nummer ausschneiden
Nummer=Mid(GSM,P,P1)

2.Version
Dim GSM as String * 30
Dim GSM_Array(30) as Byte at GSM Overlay

Dann kannst du den String einfach als Array durchsuchen. Der String ist 
bei der Geschichte im Speicher ein Byte länger, da er nullterminiert ist 
und dieses Zeichen noch dazu kommt. Also als Beispiel zum Ansprechen:
For Count=1 to 30
  If GSM_Array(Count)=34 Then
    ' mach was du willst
  End if
Next Count

Ich würde dir, falls du weitere Anwendungen mit GSM planst, aus eigener 
Erfahrung zu der Array-Variante raten. Spätestens bei der Auswertung von 
SMS-Nachrichten im PDU-Mode wirst du auf Daten stossen, die ein Chr(0) 
enthalten und im String dadurch Probleme machen.

mfg.
    Joachim

von Uwe Neubert (Gast)


Lesenswert?

@ Joachim:

Vielen Dank! Du hast mich echt weiter gebracht, man hätte auch direkt 
ins Thema einsteigen können ohne das Themafremde Gelaber anderer hier... 
Weiss nicht ob die Punkte für ihre Threads sammeln oder warum man über 
S.......e diskutieren muss.

Zurück zum Thema, ich benutze nur den Textmodus, daher muss ich 
gottseidank keine PDUs auswerten (Puhh...!) Ich meld mich wenn mein 
Problem behoben ist, bzw. wenn die Kiste läuft. Danke sehr!

von Joachim R. (bastelbaer)


Lesenswert?

Uwe Neubert wrote:
> Vielen Dank! Du hast mich echt weiter gebracht, man hätte auch direkt
> ins Thema einsteigen können ohne das Themafremde Gelaber anderer hier...
> Weiss nicht ob die Punkte für ihre Threads sammeln oder warum man über
> S.......e diskutieren muss.
Da muss man halt durch :-). Es ist manchmal etwas heftig hier im Forum.

> Zurück zum Thema, ich benutze nur den Textmodus, daher muss ich
> gottseidank keine PDUs auswerten (Puhh...!) Ich meld mich wenn mein
> Problem behoben ist, bzw. wenn die Kiste läuft. Danke sehr!
Da hst du es besser wie ich. Da mir die GSM-Module zu teuer sind, muss 
halt mein altes S25 dafür herhalten. Und mittlerweile hab ich 
zumindestens schon mal die SMS-PDU-Dekodierung im Griff.

mfg.
    Joachim

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hallo Forum,

Ich habe mir diesen Thread mal durchgelesen. Ich wollte gerad einen 
neuen erstellen aber der Titel dieses Beitrags entspricht genau dem was 
ich suche. Nur der Inhalt nicht^^

Ich möchte in Bascom einen String der vom UART kommt in Teile zerlegen.
Leider sind es nicht immer gleichgroße Stücke.

Beispiel:

123b456b789
b=Trenner zwischen die Abschnitten
kann auch so sein:
12b345b67

Ich kann auch gerne nochmal die Funktion beschrieben. Vom PC kommen 
nacheinander 3 Werte (RGB)
Diese soll Bascom dann trennen und auf jeweils 3 PWM Kanäle geben.
Mit dem PWM ist alles Toll und funktioniert mein Problem liegt nur bei 
der aufteilung der empfangenen Daten.

von Falk B. (falk)


Lesenswert?

@ Robin Tönniges (rotoe)

>Ich habe mir diesen Thread mal durchgelesen. Ich wollte gerad einen
>neuen erstellen aber der Titel dieses Beitrags entspricht genau dem was
>ich suche. Nur der Inhalt nicht^^

Dann hast du wohl Tomaten auf den Augen.

SPLIT ist der Befehl den du suchst.

MFG
Falk

von DJ (Gast)


Lesenswert?

Vielen Dank, auch mir hat Bastelbaer sehr geholfen.
Als Hinweis zum gräsigen PDU mode. In der eBucht gibts im Moment tc35 
Module auf development-Board mit TEXT-Mode für 24,99€

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.