|
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: 18.01.2013, 22:15 Titel: Winamp in qbasic Programm für Laufschrift |
|
|
Ich habe eine Led-Laufschrift die über ein QBasic Programm angsteuert wird.
Ich wollte gerne wissen ob sich in das Programm eine Funktion einfügen lässt mit der man den Titel und Künstler von Winamp auf der Laufschrift anzeigen lassen kann?
Dies ist das Programm:
Code: | 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
890 : 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 = 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 = 11
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 " m= Men "
LOCATE 19, 27: PRINT " EXIT mit ESC "
LOCATE 20, 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$ = "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 "Zurck 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 Vorfhrung der***********************************": GOSUB anf
a$ = "LED-LAUFSCHRIFT": GOSUB anf1
a$ = "*****************************Ich hoffe es gef„llt euch sehr.********************************": GOSUB anf
a$ = "Fr Fragen und Anregungen stehe ich gerne zur Verfgung.*************************************": 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 fr 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
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 time
a = a XOR 1
OUT &H378, (a): 'Daten uebernehmen
GOSUB time: '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
time: 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$, 1, 10) + "**]**"
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$, 1, 10) + "**]**"
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 time
a = 7
OUT &H37A, (a): GOSUB time
a = 3
OUT &H37A, (a): GOSUB time
a = 10
OUT &H37A, (a): GOSUB time
Ze = Kd
RETURN
hell:
Kd = Ze
Ze = 10000
a = 3
OUT &H37A, (a): GOSUB time
a = 7
OUT &H37A, (a): GOSUB time
a = 0
OUT &H37A, (a): GOSUB time
a = 4
OUT &H37A, (a): GOSUB time
Ze = Kd
RETURN |
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 18.01.2013, 22:34 Titel: |
|
|
Mit QBasic kannst du nicht mit Windows-Programmen wie WinAmp kommunizieren, mit FreeBASIC dagegen kann man recht einfach WinAmp-Songtitel auslesen. _________________ » 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: 19.01.2013, 09:56 Titel: |
|
|
Müsste man bei einem Wechsel von Qbasic auf Freebasic viel an dem Prgramm umschreiben.
Wie würde das dann gehen mit der Winamp einbindung?
Und dann hab ich noch ein Problem, da ich für die Laufschrift das Datum aus dem PC auslese kommt es immer im amerikanischen Format heraus. Also so Monat - Tag - Jahr.
Könnte man das ins deutsche Format wandeln? |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.01.2013, 15:43 Titel: |
|
|
Zitat: | Müsste man bei einem Wechsel von Qbasic auf Freebasic viel an dem Prgramm umschreiben. |
FreeBASIC ist syntaktisch größtenteils mit QBasic identisch; allerdings wird das FB-Programm wohl mit Administratorrechten ausgeführt werden müssen, damit INP und OUT funktionieren (Quelle) - eventuell kann man das mit der Bibliothek "UserPort" umgehen, dazu sollte es hier im Forum genug Informationen geben und andere Leute werden darüber auch besser bescheid wissen als ich.
Zitat: | Wie würde das dann gehen mit der Winamp einbindung? |
Code: | ' Diese Zeile an den Anfang des Programms stellen
#include "windows.bi"
' Extrahiert den Titel das aktuellen Songs
Function GetSongName() As String
Dim WA_hwnd As Long
WA_hwnd = FindWindow("Winamp v1.x", 0)
If WA_hwnd = 0 Then GetSongName = "": Exit Function
Dim strTitle As String
strTitle = String(2048, " ")
GetWindowText WA_hwnd, strTitle, Len(strTitle)
strTitle = Left(strTitle, InStr(strTitle, "- Winamp") - 1)
If Int(strTitle) > 0 Then
strTitle = Mid(strTitle, InStr(strTitle, ".") + 1)
End If
GetSongName = Trim(strTitle)
End Function
|
Der Code ist für Visual Basic und wurde von mir zuletzt vor mehr als 6 Jahren mit WinAmp 5 verwendet, sollte aber mehr oder weniger so funktionieren.
Zitat: |
Und dann hab ich noch ein Problem, da ich für die Laufschrift das Datum aus dem PC auslese kommt es immer im amerikanischen Format heraus. Also so Monat - Tag - Jahr.
Könnte man das ins deutsche Format wandeln? |
Mit der Funktion MID kannst du die drei Bestandteile des Datums extrahieren und in beliebiger Reihenfolge wieder ausgeben. Das ist allerdings nicht das typsiche Amerikanische Format, das wäre nämlich eher MM/TT/JJ. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 20.01.2013, 14:37 Titel: |
|
|
Danke Sebastian für den Tipp.
Habe es heute in mein Programm eingearbeitet und es funktioniert wunderbar. |
|
Nach oben |
|
|
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 20.01.2013, 21:30 Titel: Re: Winamp in qbasic Programm für Laufschrift |
|
|
Ich hab jetzt das Programm soweit auf freebasic umgeschrieben, aber die eine Zeile will einfach nicht
Code: |
time: FOR x = 1 TO Ze
NEXT x
RETURN
|
wenn ich es so drin stehen habe kommt beim Compilieren der folgende Fehler "Expected "=", found ":".
wenn ich dann das = durch : ersetzte kommt dann folgende meldung "Expected expression, found "FOR".
wie könnte ich das beheben`? |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 954 Wohnort: Austria
|
Verfasst am: 20.01.2013, 21:33 Titel: |
|
|
Ich denke der Bezeichner "time" verursacht das Problem, da dieser bereits für eine in FreeBasic integrierte Funktion verwendet wird und deshalb wohl nicht für ein Label verwendet werden kann.
Beheben ist einfach: Anstatt "time" einen anderen Namen nehmen und alle Verweise auf diesen Label umbessern. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Thomas1985
Anmeldungsdatum: 18.01.2013 Beiträge: 10 Wohnort: Gera
|
Verfasst am: 21.01.2013, 20:16 Titel: |
|
|
Zitat: | Code: | ' Diese Zeile an den Anfang des Programms stellen
#include "windows.bi"
' Extrahiert den Titel das aktuellen Songs
Function GetSongName() As String
Dim WA_hwnd As Long
WA_hwnd = FindWindow("Winamp v1.x", 0)
If WA_hwnd = 0 Then GetSongName = "": Exit Function
Dim strTitle As String
strTitle = String(2048, " ")
GetWindowText WA_hwnd, strTitle, Len(strTitle)
strTitle = Left(strTitle, InStr(strTitle, "- Winamp") - 1)
If Int(strTitle) > 0 Then
strTitle = Mid(strTitle, InStr(strTitle, ".") + 1)
End If
GetSongName = Trim(strTitle)
End Function
|
|
Hab den Code heut Freebasic eingegeben und bei der compilierungen kommen mehrere Fehlermeldungen.
Ich habe auch hier im Forum nochmal die Suchfunktion bemüht und habe fast den selben Code gefunden. Aber der funktioniert auch nicht.
An was könnte das denn liegen. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.01.2013, 20:29 Titel: |
|
|
Wie wäre es, wenn du einfach mal die Fehlermeldungen postest? Ich hab fbc nicht installiert, kann also auch nicht verifizieren ob der Code direkt kompilieren würde oder nicht. _________________ » 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: 21.01.2013, 20:45 Titel: |
|
|
Oh sorry das wusste ich ja nicht.
Compiler output:
8 warning 5(0): Implicit conversion
15 warning 1(1): Passing scalar as pointer, at parameter 1 of GETWINDOWTEXT()
18 error 24: Invalid data types, found '>' in 'If Int(strTitle) > 0 Then' |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.01.2013, 21:19 Titel: |
|
|
Code: | ' Diese Zeile an den Anfang des Programms stellen
#include "windows.bi"
' Extrahiert den Titel das aktuellen Songs
Function GetSongName() As String
Dim WA_hwnd As HWND
WA_hwnd = FindWindow("Winamp v1.x", 0)
If WA_hwnd = 0 Then GetSongName = "": Exit Function
Dim strTitle As String
strTitle = String(2048, " ")
GetWindowText WA_hwnd, strTitle, Len(strTitle)
strTitle = Left(strTitle, InStr(strTitle, "- Winamp") - 1)
GetSongName = Trim(strTitle)
End Function
|
Sollte funktionieren. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
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.
|
|