PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Datentyp char an Unterfunktion



Luke17
19.04.2011, 14:57
Hallo,
ich bin Anfänger in der Bsacom Programmierung.

Gibt es eine Möglichkeit in Bascom den Datentyp Char an eine Funktion zu übergeben.
Ich finde nur Nummerische Datentypen.

Will aber an eine Funktion auch Buchstaben übergeben können.

- Luke -

DanielSan
19.04.2011, 15:07
Hi,

guck mal hier: http://avrhelp.mcselec.com/index.html?declare_function.htm

Da steht eigentlich alles. Nimm entweder ein String oder ein Byte und wende


Dim K as Byte

Print Chr(K)

an. Hier noch der Link dazu http://avrhelp.mcselec.com/chr.htm

Gruß Daniel

Luke17
19.04.2011, 15:16
Ja das hab ich auch schon gefunden, aber hilft mir leider nicht weiter ich bräuchte so was in der Art:

Sub Seg_Ausgabe(byval Ziffer As Byte , Byval Zahl As Char)

Dann könnte ich an diese Funktion auch Zeichen übergeben und könnt dann auch Buchstaben auf der 7 Segmentanzeige ausgeben

mfg Luke

for_ro
19.04.2011, 16:04
Es gibt in Bascom keinen Typ 'char'. Allerdings gibt es den Typ 'string' in variabler Länge.
Wenn es dir nur um einen einzelnen Character geht, den du übergeben willst, kannst du natürlich Daniels Vorschlag beherzigen und den ASCII Wert des Zeichens übergeben.
Zwischen einem 'byte' und einem 'char' gibt es eh keinen Unterschied, zumindestens nicht in dieser Umgebung.
Bascom wendet allerdings unterschiedliche Ausgabefunktionen an, je nachdem, welchen Typ die auszugebene Variable hat.

Dim Zahl as Byte
Dim Zeichen as String*1 'Zeichenkette der Länge 1 == Char
Zahl = 65
Zeichen = "A"
Print Zahl '-> Ausgabe 65
Print Zeichen '-> Ausgabe A
Print Chr(Zahl) '-> Ausgabe A
Print Asc(Zeichen) '-> Ausgabe 65


Dann könnte ich an diese Funktion auch Zeichen übergeben und könnt dann auch Buchstaben auf der 7 Segmentanzeige ausgeben

Wenn du das Zeichen auf der 7-Segment Anzeige ausgeben willst, nutzt dir der String doch eh nicht viel. Interessanter wäre doch sowieso der ASCII Wert, um ihn als Index in eine Tabelle der zugehörigen 7-Segment Darstellung zu verwenden.

Luke17
19.04.2011, 16:19
ok danke für die beiden Antworten.
Hab jetzt eine Lösung ist zwar etwas unschön aber es funktioniert.

MfG Luke

DanielSan
19.04.2011, 16:24
Dann schreib doch wie du es gelöst hast, evtl. hilft es ja noch jemandem. Selbst wenn man dann nur sieht wie man es lieber nicht macht ;-)

Gruß Daniel

Luke17
19.04.2011, 16:36
ok anbei die unschöne Lösung:

Hier wird AFFE an ein 4 stelliges 7 Segment Anzeige (RN DIGI) ausgegeben.
Die Funktion Led_Display bekommt als 1. Übergabeparameter wird das jeweilige Segment ausgewählt (1-4)
Der 2. Übergabeparameter ist dann das Zeichen das ausgegeben wird



Text = "A"
Letter = Asc(text)
Led_display 1 , Letter

Text = "F"
Letter = Asc(text)
Led_display 2 , Letter

Text = "F"
Letter = Asc(text)
Led_display 3 , Letter


Text = "E"
Letter = Asc(text)
Led_display 4 , Letter

Luke17
19.04.2011, 18:24
Fällt noch jemand eine bessere Lösung ein.

Hab diesen unschönen Aufruf öffters in meinem Programm und
das frisst noch hinzu sehr viel Speicher.

Bin über jeden verbesserungsvorschlag dankbar!

DanielSan
19.04.2011, 19:40
Da ich nicht weiss wie deine Funktion Led_display aussieht, schiess ich mal ins blaue:


Declare Sub Led_display(s As String) 'Sub deklarieren
Dim I As Byte
Dim Text As String * 4

Text = "Affe"

Do

Call Led_display(text) 'Sub aufrufen und den String "Text" mit dem Inhalt "Affe" übergeben

Loop

End

Sub Led_display(s As String)
Dim S As String * 4
Dim Ausgabe As String * 1
For I = 1 To 4
Ausgabe = Mid(s , I , 1) 'hier wird der String in einzelne Buchstaben zerlegt
Print Ausgabe 'hier muss dann deine Ausgabegeschichte hin
Next
End SubMit ner Function hab ich es nicht hinbekommen. Deshalb ists bei mir ne Sub geworden.
Hoffe das hilft dir. Wenn nicht, dann zeig mal deine Led_display funktion. Dann weiss ich genauer, was dein Problem ist.

Gruß Daniel

Luke17
19.04.2011, 21:31
Danke Daniel für deine Mühe!

Das sieht doch gut aus, so hab ich mir das vorgestellt. ich werds
gleich mal ausprobieren.

-MfG Luke -