 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 07.02.2013, 22:17 Titel: Text auf Laufschrift nicht erkennbar |
|
|
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.02.2013, 22:44 Titel: |
|
|
Tut mir Leid, ich verstehe den Code nicht.
Lass den Text doch einfacher langsamer laufen, wenn er zu schnell ist?  |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 08.02.2013, 00:50 Titel: |
|
|
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 |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 08.02.2013, 02:02 Titel: |
|
|
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  |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 08.02.2013, 03:24 Titel: |
|
|
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 |
|
 |
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 08.02.2013, 10:39 Titel: |
|
|
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 |
|
 |
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 08.02.2013, 20:16 Titel: |
|
|
Ich habe das mit SLEEP bzw. _SLEEP ausprobiert. Aber jetzt kommt garnichts mehr an. Was hab ich da falsch gemacht? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.02.2013, 20:19 Titel: |
|
|
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 |
|
 |
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 08.02.2013, 20:29 Titel: |
|
|
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:
das habe ich auch noch probiert
Code: |
zeit2:
SLEEP 1
FLAG 1
|
und das auch noch
anstatt der orginalen "zeit2" Zeile |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|
|
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.
|
|