Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Und3rt4ker
Anmeldungsdatum: 21.07.2007 Beiträge: 15 Wohnort: daheim
|
Verfasst am: 22.07.2007, 22:45 Titel: [gelöst] Cd-Laufwerk öffnen |
|
|
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 |
|
 |
The real Agent D

Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 22.07.2007, 22:54 Titel: |
|
|
In dem einem Thread im QB Forum steht, wies geht. Da wird ein INT verwendet. Mach das! Via inlineassembling. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 22.07.2007, 23:01 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Und3rt4ker
Anmeldungsdatum: 21.07.2007 Beiträge: 15 Wohnort: daheim
|
Verfasst am: 22.07.2007, 23:23 Titel: |
|
|
ah, das is ja cool. *surr* cd-auf. 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.  _________________ I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Und3rt4ker
Anmeldungsdatum: 21.07.2007 Beiträge: 15 Wohnort: daheim
|
Verfasst am: 22.07.2007, 23:45 Titel: |
|
|
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 |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 22.07.2007, 23:53 Titel: |
|
|
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  |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 23.07.2007, 00:01 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 23.07.2007, 00:03 Titel: |
|
|
warum nicht ? das laesst sich doch genauso ansprechen ?? _________________
 |
|
Nach oben |
|
 |
Und3rt4ker
Anmeldungsdatum: 21.07.2007 Beiträge: 15 Wohnort: daheim
|
Verfasst am: 23.07.2007, 00:04 Titel: |
|
|
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
Mfg Und3rt4ker _________________ I Only Understand Railroad Station =>Ich Versteh Nur Bahnhof
The People-Car-Factory =>Das Volkswagenwerk
The Picture-Umbrella =>Der Bildschirm |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 23.07.2007, 00:53 Titel: |
|
|
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 |
|
 |
Und3rt4ker
Anmeldungsdatum: 21.07.2007 Beiträge: 15 Wohnort: daheim
|
Verfasst am: 23.07.2007, 01:01 Titel: |
|
|
@Volta:
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 23.07.2007, 12:39 Titel: |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 23.07.2007, 13:01 Titel: |
|
|
@The real Agent D:
Mit Interrupts wirst du in FB mit Inline-ASM Probleme haben.
(AFAIK, hatte das mal so gelesen. ) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
The real Agent D

Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 23.07.2007, 13:06 Titel: |
|
|
Mao hat Folgendes geschrieben: | @The real Agent D:
Mit Interrupts wirst du in FB mit Inline-ASM Probleme haben.
(AFAIK, hatte das mal so gelesen. ) |
Aso?...
Aber das Problem wurde in zwischen eh anderweitig gelöst...  |
|
Nach oben |
|
 |
|