Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom Datentyp char an Unterfunktion
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, 16: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
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
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.
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, 17: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
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
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, 20: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
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 -
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.