Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Text auf Laufschrift nicht erkennbar

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Thomas1985



Anmeldungsdatum: 18.01.2013
Beiträge: 10
Wohnort: Gera

BeitragVerfasst am: 07.02.2013, 22:17    Titel: Text auf Laufschrift nicht erkennbar Antworten mit Zitat

Ich habe mein Programm zu meiner LED-Laufschrift von Qbasic auf freebasic umgeschrieben. jetzt hab ich aber das Problem das die Zeichen zu schnell durchlaufen.

Ich hatte mal irgendwo gelesen das bei einer Funktion in Qbasic die Zeit 1s ist und bei freebasic 10ms. ich weis aber nicht mehr wo.

Code:

#lang "qb"
1       Data 0,130,124,124,130,254,1,246,250,0,254
2       Data 2,58,92,108,114,254,3,186,124,108,146,254,4,224,238,06,238,254
567     Data 5,96,108,108,156,254,6,130,108,108,154,254,60,7,60,220,236,240,254
89      Data 8,146,108,108,146,254,9,178,108,108,130,254
kleina: Data a,190,86,86,14,254,b,0,118,118,142,254,c,142,118,118,110,254
kdef:   Data d,142,118,118,0,254,e,142,86,86,78,254,f,238,2,236,236,254
kghij:  Data g,110,86,86,134,254,h,0,238,246,14,254,i,4,254,j,126,132,254
kklm:   Data k,0,222,174,118,254,l,128,126,254,m,6,246,14,246,14,254
knop:   Data n,6,238,246,14,254,o,142,118,118,142,254,p,6,214,214,238,254
kqrs:   Data q,238,214,214,6,254,r,6,238,246,254,s,110,86,86,182,254
ktuv:   Data t,246,128,118,254,u,134,126,190,6,254,v,230,158,126,158,230,254
kwx:    Data w,134,126,158,126,134,254,x,38,222,38,254
kyz:    Data y,230,94,158,230,254,z,54,86,102,118,254
ABC:    Data A,02,236,236,02,254,B,00,108,108,146,254,C,130,124,124,186,254
DbisF:  Data D,00,124,124,130,254,E,00,108,108,108,254,F,00,236,236,252,254
GHIJ:   Data G,130,124,108,138,254,H,00,238,238,00,254,I,00,254,J,188,124,124,128,254
KLM:    Data K,00,238,214,56,254,L,00,126,126,126,254,M,00,246,238,246,00,254
NOP:    Data N,00,246,238,222,00,254,O,130,124,124,130,254,P,00,236,236,242,254
QRS:    Data Q,130,124,92,188,66,254,R,00,204,172,114,254,S,178,108,108,154,254
TUV:    Data T,252,252,00,252,252,254,U,128,126,126,128,254,V,192,190,126,190,192,254
WXY:    Data W,00,190,206,190,00,254,X,56,214,238,214,56,254,Y,248,246,14,246,248,254
Z:      Data Z,60,92,108,116,120,254,.,126,254,",",126,190,254,-,238,238,254,":",174,254
       Data ü,132,126,190,4,254,ö,140,118,118,140,254,ä,188,86,86,12,254
       Data /,62,198,248,254,254,ß,02,252,108,146,254
CJDZei: Data $,228,224,228,228,196,164,100,164,196,228,228,224,228,254,254
Pfeile: Data (,238,198,170,108,238,238,254,254,),238,238,108,170,198,238,254,254,
Dreiec: Data [,126,62,94,110,118,122,0,254,],00,122,118,110,94,62,126,254
Zeich:  Data !,64,254,ENDE

Dim A1 (1 To 256)

Ze = 13000:M = Ze

Out &H37A, 4

menu:
 Screen , 1, 1
 Color 2, 1
 Cls
za= Anfangszeile
sa=Anfangsspalte
l=Laenge
h=Hoehe
ZA = 3: sa = 3: L = 74: h = 1
colv = 2: colh = 7
Gosub fenster
 Color 7, 4
 Locate 4, 8
 Print "          ***             Thomas Groß             ***            "

 ZA = 9: sa = 25: L = 27: h = 12
 colv = 4: colh = 7: Gosub fenster
 Color 0, 3
 Locate 10, 27: Print "                         "
 Locate 11, 27: Print "          Menü           "
 Locate 12, 27: Print "    ****************     "
 Locate 13, 27: Print "                         "
 Locate 14, 27: Print "     0= Zeit             "
 Locate 15, 27: Print "     1= Erster Text      "
 Locate 16, 27: Print "     2= Zweiter Text     "
 Locate 17, 27: Print "     3= freier Text      "
 Locate 18, 27: Print "     5= winamp           "
 Locate 19, 27: Print "     m= Menü             "
 Locate 20, 27: Print "     EXIT mit ESC        "
 Locate 21, 27: Print "                         "

 Color 0, 1: Locate 25, 58: Print "copyright by T. Groß"

eing:
     y$ = Inkey$
     If y$ = "1" Then Gosub ausdr: Goto text1
     If y$ = "2" Then Gosub ausdr: Goto text2
     If y$ = "3" Then Gosub ausdr: Goto freieing
     If y$ = "5" Then Gosub ausdr: Goto winamp
     If y$ = "4" Then Gosub nver
     If y$ = "0" Then Gosub zeit
     If y$ = Chr$(27) Then End
     Goto eing

ausdr: Return
REM Cls
Locate 6, 10: Print "Zurück zum Menu mit 'm'. Mit'+' schneller ,mit '-' langsamer"
Gosub speed
Return
speed: Locate 20, 33: Print "Speed:": Locate 20, 39: Print "     "
Locate 20, 39: Print Ze: Return
freieing:

ZA = 8: sa = 3: L = 74: h = 12
colv = 4: colh = 7: Gosub fenster

Locate 10, 17:            Print "Die maximale Länge darf nur 255 Zeichen betragen"
Locate 12, 6: Color 0, 7: Print "Der einzugebende Text darf nur aus den Buchstaben"
Locate 13, 6:             Print "0-9, A-Z, a-z, ü, ä, ö, ß bestehen."
Locate 14, 6:             Print "Als Zeichen sind nur die Zeichen . - : , / ! vereinbart. "
Locate 15, 6:             Print "Das (-Zeichen ruft den links  Pfeil auf."
Locate 16, 6:             Print "Das )-Zeichen ruft den rechts Pfeil auf."
Locate 17, 6:             Print "Alle anderen Zeichen werden nicht ausgegeben."
Locate 18, 6:             Print "Eingabeabschluß mit Enter"
Locate 19, 6:             Input ; "Geben Sie Ihren Text ein:", fe$
If fe$ = "" Then Goto frei
fe1$ = fe$:
   If fe1$ = "" Then Goto menu
a$ = "*************": Gosub anf
frei: a$ = "**" + fe1$
     Gosub anf
      Goto frei

nver:
     Goto menu
text1:
M = Ze: Ze = 50: p = 3
a$ = "************************************* Hallo liebe Kollegen.**********************************": Gosub anf
a$ = "Ich begrüße euch ganz herzlich zu meiner Vorführung der***********************************": Gosub anf
a$ = "LED-LAUFSCHRIFT": Gosub anf1
a$ = "*****************************Ich hoffe es gef„llt euch sehr.********************************": Gosub anf
a$ = "Für Fragen und Anregungen stehe ich gerne zur Verfügung.*************************************": Gosub anf
      Gosub tzeit
Goto text1

text2:
M = Ze: Ze = 50: p = 3    'P= Pausenlänge ze ehemals 0
REM Goto text3
a$ = "************************************* Das CJD Berufsbildungswerk Gera grsst seine G„ste.****************************************": Gosub anf
a$ = "BERUFLICHE REHABILITATION": Gosub anf1
a$ = "**************************bedeutet Eingliederung in Arbeitswelt und Gesellschaft": Gosub anf
a$ = "*****************************************": Gosub anf
a$ = "Wir sind konzipiert und ausgestattet als Berufsbildungswerk fr berwiegend k”rperbehinderte, lernbehinderte,": Gosub anf
a$ = " *psychisch behinderte und mehrfach behinderte junge Menschen.*************************  Bercksichtigt wurden dabei die ": Gosub anf
a$ = "Besonderheiten für die Ausbildung von Rollstuhlfahrern.*************************": Gosub anf

text3:
a$ = "Wir bilden aus in den Bereichen*************************": Gosub anf
a$ = "Wirtschaft und Verwaltung*************************": Gosub anf
a$ = "Agrarwirtschaft*************************": Gosub anf
a$ = "Ern„hrung und Hauswirtschaft*************************": Gosub anf
a$ = "Holztechnik*************************": Gosub anf
a$ = "Metalltechnik*************************": Gosub anf
a$ = "Elektrotechnik*************************": Gosub anf
a$ = "Farbtechnik und Raumgestaltung*************************": Gosub anf
a$ = "Berufsvorbereitende Massnahmen*************************": Gosub anf
a$ = "Berufliche Eignungsabkl„rung*************************": Gosub anf
a$ = "Arbeitserprobung*************************************": Gosub anf
Gosub tzeit: Goto text2

winamp:


Goto winamp



anf:    Ze = M
 Screen , , 1, 1
 Color 2, 1
 REM Cls
 
ZA = 6: sa = 1: L = 78: h = 3
 
 colv = 2: colh = 7
 Gosub fenster
 Color 7, 4
 Locate 7, 4
   Print Spc(74);
   Locate 7, 4: Print a$
   B = Len(a$)
Start:  For z = 1 To B
   Restore
   B$ = Mid$(a$, z, 1)
les1:
   Read C$
   If C$ = "ENDE" Then a = 254: Gosub aus: Gosub aus: Gosub aus: Gosub aus: Goto weiter
   If C$ <> B$ Then Goto les1
les:    Read a
   Gosub aus        'zur späteren Zeichenausgabe
   If a <> 254 Then Goto les
weiter: Next z
   Return
anf1:
       Gosub dunkel
       Ze = 20
       ZB = 0
       B = Len(a$)
Start1:  For z = 1 To B
   Restore
   B$ = Mid$(a$, z, 1)
les11:
   Read C$
   If C$ = "ENDE" Then Gosub leerz: Goto weiter1
   If ZB > 127 Then Goto anf
   If C$ <> B$ Then Goto les11
Lese1:   Read a
   ZB = ZB + 1
   A1(ZB) = a
   If a <> 254 Then Goto Lese1
   If ZB > 127 Then Out &H37A, 4: Goto anf
weiter1: Next z
   Locate 22, 30: Print ZB
   ZA = 128 - ZB
   ZA = Int(ZA / 2)
   a = 254
   For ZC = 1 To 129
   Gosub aus
   Next ZC
   For ZC = 1 To ZB
   a = A1(ZC)
   Gosub aus
   Next ZC
   a = 254
   For ZC = 1 To ZA
   Gosub aus
   Next ZC
   Gosub hell
   Gosub Pause
   Return

aus:   B = a
   Out &H378, (a):  'Daten anlegen
   Gosub zeit2
   Out &H378, (a):  'Daten uebernehmen
   Gosub zeit2:      'Pause
   a = a XOR 1
   Out &H378, (a):  'Daten uebernehmen
   a = B
   y$ = Inkey$
   If y$ = "m" Then Goto menu
   If y$ = "+" And Ze > 99 Then Ze = Ze - 100: M = Ze: Gosub speed
   If y$ = "-" Then Ze = Ze + 100: M = Ze: Gosub speed
Return

zeit2: For x = 1 To Ze
     Next x
     Return

sett:   Out &H378, (a)

Pause:
   t$ = Time$
   ti = 0
paus1:  If t$ <> Time$ Then ti = ti + 1
   t$ = Time$
   If ti = p Then Return
   Goto paus1

     

zeit:   M = Ze
zeit0:  Gosub ausdr
   a$ = "**[**" + Mid$(Time$, 1, 5) + "**" + Mid$(Date$, 4, 2) + "." + Left$(Date$, 2) + "." + Right$(Date$, 4) + "**]**"
   Ze = 0: Gosub anf1
   t1$ = Mid$(Time$, 1, 5)
zeit1:  t$ = Mid$(Time$, 1, 5)
   y$ = Inkey$:
   If y$ = "m" Then Ze = M: Goto menu
   If t1$ <> t$ Then t1$ = t$: Goto zeit0
   Goto zeit1
      Goto zeit
tzeit:
tzeit0: Gosub ausdr
   a$ = "**[**" + Mid$(Time$, 1, 5) + "**" + Mid$(Date$, 4, 2) + "." + Left$(Date$, 2) + "." + Right$(Date$, 4) + "**]**"
   Ze = 0: Gosub anf1
   t1$ = Mid$(Time$, 1, 5)
tzeit1:  t$ = Mid$(Time$, 1, 5)
   y$ = Inkey$:
   If y$ = "m" Then Ze = M: Goto menu
   If t1$ <> t$ Then Ze = M: Return
   Goto tzeit1
      Goto tzeit

REM Übergabe von za= Anfangszeile ;sa=Anfangsspalte;l=Länge;h=Höhe
fenster:
'*************************************************************************
REM colv=Vordergrungfarbe colh=hintergrundfarbe
 Color colv, colh
 For t = ZA To ZA + h
 Locate t, sa
 Print Space$(L + 1)
 Next t
Locate ZA, sa
 Print Chr$(201); String$(L, Chr$(205)); Chr$(187)
 For t = ZA + 1 To ZA + h + 1
 Locate t, sa
 Print Chr$(186)
 Locate t, L + sa + 1
 Print Chr$(186)
 Next t
 Locate ZA + h + 1, sa
 Print Chr$(200); String$(L, Chr$(205)); Chr$(188)
 Locate 1, 1
 Return

leerz:
   For ZL = 1 To 4
   ZB = ZB + 1
   A1(ZB) = 254
   Next ZL
   Return

dunkel:
    Kd = Ze
    Ze = 10000
    a = 0
    Out &H37A, (a): Gosub zeit2
    a = 7
    Out &H37A, (a): Gosub zeit2
    a = 3
    Out &H37A, (a): Gosub zeit2
    a = 10
    Out &H37A, (a): Gosub zeit2
    Ze = Kd
   Return
hell:
    Kd = Ze
    Ze = 10000
    a = 3
    Out &H37A, (a): Gosub zeit2
    a = 7
    Out &H37A, (a): Gosub zeit2
    a = 0
    Out &H37A, (a): Gosub zeit2
    a = 4
    Out &H37A, (a): Gosub zeit2
   Ze = Kd
   Return

Ich hoffe es kann mir jemand helfen.


Zuletzt bearbeitet von Thomas1985 am 08.02.2013, 19:48, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 07.02.2013, 22:44    Titel: Antworten mit Zitat

Zitat:
Code:
Goto ... Gosub

Tut mir Leid, ich verstehe den Code nicht.

Lass den Text doch einfacher langsamer laufen, wenn er zu schnell ist? zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 08.02.2013, 00:50    Titel: Antworten mit Zitat

Ich muss leider auch sagen, dass der Code dermaßen unübersichtlich und mit veralteten Konstrukten geschrieben ist, dass es eine Qual ist da was zu finden - trotz der geringen Größe.

Nichtsdestotrotz ein möglicher Lösungsvorschlag:
Du scheinst derzeit die Pausen bzw. die Geschwindigkeit des Programmes mit FOR Schleifen, wie etwa folgender, zu regeln:
Code:
zeit2: For x = 1 To Ze
     Next x
Während das auf alten Rechner oder mit QB eine merkbare Verzögerung bringen kann, geht das auf modernen Rechnern oder mit FB so schnell, dass die verursachte Verzögerung nicht wahrnehmbar sein wird.
Besser verwendet man, um künstliche Verzögerungen einzufügen, SLEEP. Beachte dass du, wie im Artikel der Befehlsreferenz beschrieben, entweder __SLEEP oder den Flag Parameter verwenden musst, damit du Verzögerungen im Millisekunden-Bereich im #lang "QB" Modus erzeugen kannst.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 08.02.2013, 02:02    Titel: Antworten mit Zitat

Außerdem brechen dir solche FOR-Schleifen bei optimierenden Compilern praktisch sofort die Beine, weil die es gar nicht bis ins ausführbare Programm schaffen… allgemein kann, darf und soll man sich nicht auf das Zeitverhalten von solchen Konstrukten verlassen, coole, optimierende Compiler können Dinge wie loop exchange, was (a) eine schicke Code-Transformation ist und (b) das zeitliche Verhalten von Schleifen um mehrere Größenordnungen ändern kann (immer wieder schönes Beispiel ist verkehrtherum (quer zu den Cachelines der CPU) über ein Bild o.ä. zu iterieren, was seeeeehr langsam ist. Dann geht der optimierende Compiler hin und dreht die Schleifen um (loop exchange) und Zack ist man gut und gerne zwei Größenordnungen schneller unterwegs lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 08.02.2013, 03:24    Titel: Antworten mit Zitat

28398 hat Folgendes geschrieben:
Optimierbla


oder der Compiler sieht: ui, wir addieren so lange 1 auf ne Variable drauf, bis sie 4711 erreicht hat... Dann kann ich diese Schleife ja auch durch Zaehler=4711 ersetzen
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Thomas1985



Anmeldungsdatum: 18.01.2013
Beiträge: 10
Wohnort: Gera

BeitragVerfasst am: 08.02.2013, 10:39    Titel: Antworten mit Zitat

St_W hat Folgendes geschrieben:
Ich muss leider auch sagen, dass der Code dermaßen unübersichtlich und mit veralteten Konstrukten geschrieben ist, dass es eine Qual ist da was zu finden - trotz der geringen


ich muss sagen das ich das Programm von jemanden so übernommen habe. Und es läuft mindestens seit 1998.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thomas1985



Anmeldungsdatum: 18.01.2013
Beiträge: 10
Wohnort: Gera

BeitragVerfasst am: 08.02.2013, 20:16    Titel: Antworten mit Zitat

Ich habe das mit SLEEP bzw. _SLEEP ausprobiert. Aber jetzt kommt garnichts mehr an. Was hab ich da falsch gemacht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.02.2013, 20:19    Titel: Antworten mit Zitat

Ohne Code können wir auch nur einen Blick in die Glaskugel werfen und rätselraten. Hast du denn einen Parameter an SLEEP übergeben? __SLEEP 50 würde z.B. 50msec warten. Ohne Parameter hält das Programm so lange, bis du eine Taste drückst.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Thomas1985



Anmeldungsdatum: 18.01.2013
Beiträge: 10
Wohnort: Gera

BeitragVerfasst am: 08.02.2013, 20:29    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Ohne Code können wir auch nur einen Blick in die Glaskugel werfen und rätselraten. Hast du denn einen Parameter an SLEEP übergeben? __SLEEP 50 würde z.B. 50msec warten. Ohne Parameter hält das Programm so lange, bis du eine Taste drückst.


Ich habe folgendes eingegeben:

Code:

zeit2:
SLEEP 1


das habe ich auch noch probiert

Code:

zeit2:
SLEEP 1
FLAG 1


und das auch noch

Code:

zeit2
_SLEEP 1000


anstatt der orginalen "zeit2" Zeile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 08.02.2013, 21:12    Titel: Antworten mit Zitat

Thomas1985 hat Folgendes geschrieben:
Code:

zeit2
_SLEEP 1000

Du musst 2 Unterstriche voranstellen.

Zum Beispiel
Code:

__SLEEP 500

für 500 ms.

Siehe zum Thema: http://www.freebasic-portal.de/befehlsreferenz/fb-dialektformen-459.html
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz