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:

[gelöst] Cd-Laufwerk öffnen

 
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
Und3rt4ker



Anmeldungsdatum: 21.07.2007
Beiträge: 15
Wohnort: daheim

BeitragVerfasst am: 22.07.2007, 22:45    Titel: [gelöst] Cd-Laufwerk öffnen Antworten mit Zitat

Hi @ all
Wie kann ich es bewerkstelligen, dass ich mit freebasic das Cd-Laufwerk öffnen bzw. schließen kann?

Danke, mvfg Und3rt4ker
_________________
I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm


Zuletzt bearbeitet von Und3rt4ker am 23.07.2007, 13:23, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The real Agent D



Anmeldungsdatum: 24.11.2005
Beiträge: 605
Wohnort: Hall i. T.

BeitragVerfasst am: 22.07.2007, 22:54    Titel: Antworten mit Zitat

In dem einem Thread im QB Forum steht, wies geht. Da wird ein INT verwendet. Mach das! Via inlineassembling.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 22.07.2007, 23:01    Titel: Antworten mit Zitat

in den Beispielen von FB befindet sich unter anderem eine cdrom.bas
/examples/sdl/cdrom.bas

da ist unteranderem das grundlegenste was man benoetigt um das CD-Rom anzusprechen...

nachdem das CD-ROM Initialisiert wurde...
mit der zeile

cdrom = SDL_CDOpen(0)

kann man einfach die zeile

SDL_CDEject(cdrom)

hinzufuegen.....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 22.07.2007, 23:22    Titel: Antworten mit Zitat

WEnn die SDL.DLL nicht gefunden wird:
http://www.dll-files.com/dllindex/dll-files.shtml?sdl
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Und3rt4ker



Anmeldungsdatum: 21.07.2007
Beiträge: 15
Wohnort: daheim

BeitragVerfasst am: 22.07.2007, 23:23    Titel: Antworten mit Zitat

ah, das is ja cool. *surr* cd-auf. Yahooo!!!! Un nu *g*. eject mit close ersetzen funktioniert schonmal nicht....vielleicht find ich es ja heraus, wenn es überhaupt geht.
mfg Und3rt4ker

edit: Und ich kann sogar das zweite Laufwerk öffnen. durchgeknallt
_________________
I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 22.07.2007, 23:25    Titel: Antworten mit Zitat

Code:
declare sub SDL_CDClose cdecl alias "SDL_CDClose" (byval cdrom as SDL_CD ptr)
=
Code:
SDL_CDClose (cdrom)

_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Und3rt4ker



Anmeldungsdatum: 21.07.2007
Beiträge: 15
Wohnort: daheim

BeitragVerfasst am: 22.07.2007, 23:45    Titel: Antworten mit Zitat

Zitat:
Code:
declare sub SDL_CDClose cdecl alias "SDL_CDClose" (byval cdrom as SDL_CD ptr)


steht schon in der sdl_cdrom.bi und
Zitat:

=Code:
SDL_CDClose (cdrom)

funktioniert nicht, aber ich glaube ich hab ein brett vorm kopf.

--------
Mit diesem Code läss sich das Laufwerk problemlos öffnen. Aber der Teil nach "Sleep" funktioniert nicht.

Code:

#include  "SDL\SDL.bi"
dim cdrom as SDL_CD ptr
if (SDL_Init(SDL_INIT_CDROM) < 0) then
    print "Unable to initiate SDL: "; *SDL_GetError()
    end
end if

   cdrom = SDL_CDOpen(0)
   
    sdl_cdeject(cdrom)
   
Sleep'bis hierhin funktioniert es

    sdl_cdclose(cdrom)'schließen jedoch nicht

Mfg Und3rt4ker
_________________
I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 22.07.2007, 23:53    Titel: Antworten mit Zitat

hehe, meine Vermutung wär da eher, dass close() das CD-Object wieder schließt.
und nach meiner Erfahrung, probier mal eject 2x mit nem Sleep dazwischen happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.07.2007, 00:01    Titel: Antworten mit Zitat

ich teile die vermutung von PMedia.. das DSL_CDClose das Handle schliesst, jedoch konnte ich beim testen mein CD-ROM auch net dazu bewegen sich wieder zu schliessen.....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 23.07.2007, 00:02    Titel: Antworten mit Zitat

tjoar.
ich kanns net testen, beim lappi dvd laufwerk happy
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.07.2007, 00:03    Titel: Antworten mit Zitat

warum nicht ? das laesst sich doch genauso ansprechen ??
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Und3rt4ker



Anmeldungsdatum: 21.07.2007
Beiträge: 15
Wohnort: daheim

BeitragVerfasst am: 23.07.2007, 00:04    Titel: Antworten mit Zitat

hm...bewegt sich nicht. könnte evtl. jemand ausprobieren, ob es bei ihm auch nicht zugeht, oder den code so posten, wie er denkt, dass er richtig wäre?
edit: Lappi laufw. kann man nur öffnen, da is ne feder drin, wie
diskettenlaufwerk

edit2: http://www.libsdl.org/intro.de/usingcdrom.html
hier wird mit "sdl_cdclose()" das gerät geschlossen(wie eine geöffnete datei)
aber das gegenstück dazu ist ja open und nich eject.....demzufolge gibt es doch bestimmt auch ein gegenteil von eject durchgeknallt

Mfg Und3rt4ker
_________________
I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 23.07.2007, 00:53    Titel: Antworten mit Zitat

Hier ein Vorschlag zum testen:
Code:
#Include once "windows.bi"
#Include once "win/mmsystem.bi"
Dim Buffer As String * 255
Dim As String Drives
Dim As Integer i
Drives = Left(Buffer, GetLogicalDriveStrings(255, Buffer))
For i = 1 To Len(Drives) Step 4
  If GetDriveType(Mid(Drives, i, 3)) = DRIVE_CDROM Then
    mciSendString ("Open " + Mid(Drives, i, 3) + " Type cdaudio Alias cd", 0, 0, 0)
    mciSendString ("set cd door open", 0, 0, 0)
    Sleep 2000
    mciSendString ("set cd door closed", 0, 0, 0)
    mciSendString ("close cd", 0, 0, 0)
  End If
Next
Sleep 1000
End

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Und3rt4ker



Anmeldungsdatum: 21.07.2007
Beiträge: 15
Wohnort: daheim

BeitragVerfasst am: 23.07.2007, 01:01    Titel: Antworten mit Zitat

@Volta: Yahooo!!!!
ich hab gerade das hier probiert....und es geht auch:
Code:
Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long


 mciExecute("Set CDaudio door open")   ' Laufwerkstür öffnen
   sleep 2000
 mciExecute("Set CDaudio door closed") ' Laufwerkstür schließen


mfg Und3rt4ker
_________________
I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 23.07.2007, 12:39    Titel: Antworten mit Zitat

SDL_cdrom.bi:
Code:

declare function SDL_CDNumDrives cdecl alias "SDL_CDNumDrives" () as integer
declare function SDL_CDName cdecl alias "SDL_CDName" (byval drive as integer) as zstring ptr
declare function SDL_CDOpen cdecl alias "SDL_CDOpen" (byval drive as integer) as SDL_CD ptr
declare function SDL_CDStatus cdecl alias "SDL_CDStatus" (byval cdrom as SDL_CD ptr) as CDstatus
declare function SDL_CDPlayTracks cdecl alias "SDL_CDPlayTracks" (byval cdrom as SDL_CD ptr, byval start_track as integer, byval start_frame as integer, byval ntracks as integer, byval nframes as integer) as integer
declare function SDL_CDPlay cdecl alias "SDL_CDPlay" (byval cdrom as SDL_CD ptr, byval start as integer, byval length as integer) as integer
declare function SDL_CDPause cdecl alias "SDL_CDPause" (byval cdrom as SDL_CD ptr) as integer
declare function SDL_CDResume cdecl alias "SDL_CDResume" (byval cdrom as SDL_CD ptr) as integer
declare function SDL_CDStop cdecl alias "SDL_CDStop" (byval cdrom as SDL_CD ptr) as integer
declare function SDL_CDEject cdecl alias "SDL_CDEject" (byval cdrom as SDL_CD ptr) as integer
declare sub SDL_CDClose cdecl alias "SDL_CDClose" (byval cdrom as SDL_CD ptr)
Ich sehe da kein gegenstück zu SDL_CDEject.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 23.07.2007, 13:01    Titel: Antworten mit Zitat

@The real Agent D:
Mit Interrupts wirst du in FB mit Inline-ASM Probleme haben. zwinkern
(AFAIK, hatte das mal so gelesen. grinsen)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The real Agent D



Anmeldungsdatum: 24.11.2005
Beiträge: 605
Wohnort: Hall i. T.

BeitragVerfasst am: 23.07.2007, 13:06    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
@The real Agent D:
Mit Interrupts wirst du in FB mit Inline-ASM Probleme haben. zwinkern
(AFAIK, hatte das mal so gelesen. grinsen)

Aso?...
Aber das Problem wurde in zwischen eh anderweitig gelöst... mit den Augen rollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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