String aufschlüsseln in bascom

Gast #726093
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!
#726103
@ 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
#726125
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...
Gast #726126
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?
Gast #726132
@ 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.
#726135
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....
Gast #726138
@ 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.
#726156
@ 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
#726161
@ 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
#726196
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....
Gast #726217
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"
#726220
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.
#726224
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").
#726240
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
#726277
@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
#726285
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?
#726292
@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
#726707
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
Gast #728069
@ 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!
#729283
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
Persönliche Seite #729357
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.
#729365
@ 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
Gast #2592107
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€

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.