ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Wie CD-ROM Laufwerk ansprechen? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
17.07.2003, 22:29 Uhr Micha1701 Posts: 938 Nutzer |
Hi! Nachdem ich nun das Device und die Unitnummer eines Laufwerks ermitteln kann (in diesem Fall von CD0: ) stehe ich vor dem Problem, daß ich nicht weiß wie ich ein CD-ROM Laufwerk ansprechen kann. Ich hab versucht mit den CD Befehlen (z.B. CD_PLAYTRACK) das Device direkt anzusprechen aber nichts tut sich. Eine im AmiNET gefundene CDLib (cdplayer.library) konnte mir auch nicht helfen... Weiß hier jemand auf Rat? -- Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
18.07.2003, 09:18 Uhr thomas Posts: 7718 Nutzer |
Was heißt das, "nichts tut sich" ? Was hast du denn für einen Return-Code bekommen ? Falls das Device die CD_-Befehle nicht versteht, mußt du mit HD_SCSICMD die SCSI-Befehle direkt senden. Eine Beschreibung der SCSI-Kommandos gibt es hier: http://www.t10.org/drafts.htm Oder hast du den Standard-Fehler gemacht ? Das CD-ROM spielt die Musik ab, aber du kannst nichts hören, weil das CD-ROM nicht an die Lautsprecher angeschlossen ist ? Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
18.07.2003, 11:29 Uhr Micha1701 Posts: 938 Nutzer |
Ne, ne, da sind schon Lautsprecher dran... ;-D Tja, den Returncode hab ich mir gar nicht angesehen... Jetzt wo Du es erwähnst... Werd nachher mal sehen, worans hängt, vielleicht wars gestern einfach nur zu spät... -- Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
21.07.2003, 07:49 Uhr Micha1701 Posts: 938 Nutzer |
So, habs nochmal gecheckt. Returncode ist immer "0".... Der Befehl "CD_EJECT" funktioniert auch. Aber alle anderen geben nur Müll zurück, oder das Laufwerk macht einfach gar nix... Device und Unit sind übrigends auch richtig... Hier mal der Code dazu: code:#include <exec/io.h> #include <exec/types.h> #include <clib/exec_protos.h> #include <clib/dos_protos.h> #include <devices/cd.h> #include <stdio.h> #include <string.h> struct IOStdReq *cdrequest = NULL; struct MsgPort *cdmsgport = NULL; UBYTE rc; void main(int argc, UBYTE **argv) { cdmsgport = CreateMsgPort(); if(cdmsgport) { cdrequest = CreateIORequest(cdmsgport, sizeof(struct IOStdReq)); if(cdrequest) } rc = OpenDevice("blizzppc.device", 1, (struct IORequest *) cdrequest, 0); if(rc == 0) { PutStr("Öffnen des Device erfolgreich!nn"); cdrequest->io_Command = CD_PLAYTRACK; cdrequest->io_Data = NULL; cdrequest->io_Length = 1; cdrequest->io_Offset = 1; rc = DoIO((struct IORequest *) cdrequest); printf("ReturnCode = %dn", rc);*/ Delay(500); CloseDevice((struct IORequest *) cdrequest); } else { printf("Fehler beim öffnen des Devices!nErrorcode = %dnn", rc); } DeleteIORequest(cdrequest); } else { PutStr("Konnte IORequest nicht erstellen!nn"); } DeleteMsgPort(cdmsgport); } else { PutStr("Fehler beim CreateMsgPort()!nn"); } } Hab auch mal versucht die cdplayer.library zu verwenden. Das Beispielprog (bereits kompiliert im Archiv) funktioniert hier tadellos. Aber selber kompilieren ist wohl nicht. Dann schmiert es immer ab oder es gibt nur Müll... StormCV3 scheinen die Includes nicht zu schmecken... -- Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ Dieser Beitrag wurde von Micha1701 am 21.07.2003 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
21.07.2003, 10:46 Uhr thomas Posts: 7718 Nutzer |
Nun, die CD_-Befehle sind wohl nur für das cd.device. Hier ist ein Beispiel, das funktioniert: code:#include <exec/io.h> #include <exec/types.h> #include <clib/exec_protos.h> #include <clib/dos_protos.h> #include <devices/scsidisk.h> #include <stdlib.h> #include <stdio.h> #include <string.h> struct IOStdReq *cdrequest = NULL; struct MsgPort *cdmsgport = NULL; UBYTE rc; char *device = "uaescsi.device"; long unit = 1; struct SCSICmd cmd; UBYTE sense[20]; UBYTE SCSI_PlayAudio[] = {0x45,0,0,0,0,0,0,0,0,0}; ULONG start = 0; /* start block */ UWORD length = 120 * 75; /* number of blocks to play; 75 = 1 sec. */ void main(int argc, UBYTE **argv) { if (argc > 1) start = atoi(argv[1]); if (argc > 2) length = atoi(argv[1]); cdmsgport = CreateMsgPort(); if(cdmsgport) { cdrequest = CreateIORequest(cdmsgport, sizeof(struct IOStdReq)); if(cdrequest) { rc = OpenDevice(device,unit, (struct IORequest *) cdrequest, 0); if(rc == 0) { PutStr("Öffnen des Device erfolgreich!nn"); SCSI_PlayAudio[2] = start >> 24; SCSI_PlayAudio[3] = start >> 16; SCSI_PlayAudio[4] = start >> 8; SCSI_PlayAudio[5] = start; SCSI_PlayAudio[7] = length >> 8; SCSI_PlayAudio[8] = length; cmd.scsi_Data = NULL; cmd.scsi_Length = 0; cmd.scsi_Actual = 0; cmd.scsi_Command = SCSI_PlayAudio; cmd.scsi_CmdLength = 10; cmd.scsi_CmdActual = 0; cmd.scsi_Flags = SCSIF_AUTOSENSE|SCSIF_WRITE; cmd.scsi_Status = 0; cmd.scsi_SenseData = sense; cmd.scsi_SenseLength = 18; cmd.scsi_SenseActual = 0; cdrequest->io_Command = HD_SCSICMD; cdrequest->io_Data = (APTR)&cmd; cdrequest->io_Length = sizeof(struct SCSICmd); cdrequest->io_Offset = 0; rc = DoIO((struct IORequest *) cdrequest); printf("ReturnCode = %dn", rc); /* Delay(500); */ CloseDevice((struct IORequest *) cdrequest); } else { printf("Fehler beim öffnen von %s unit %d!nErrorcode = %dnn",device,unit,rc); } DeleteIORequest(cdrequest); } else { PutStr("Konnte IORequest nicht erstellen!nn"); } DeleteMsgPort(cdmsgport); } else { PutStr("Fehler beim CreateMsgPort()!nn"); } } Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
21.07.2003, 11:20 Uhr Micha1701 Posts: 938 Nutzer |
hm, ok werd ich ausprobieren. Aber verstehen denn auch IDE Laufwerke die SCSI Kommandos? -- Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
21.07.2003, 12:39 Uhr thomas Posts: 7718 Nutzer |
Wenn nicht die Geräte, dann das Device. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
24.07.2003, 08:12 Uhr Micha1701 Posts: 938 Nutzer |
Hi Thomas! So, bin endlich mal dazu gekommen Dein Beispiel zu testen. Juhu! Es funktioniert! Werd mir direkt mal die SCSI Kommandos ansehen... Danke nochmal! -- Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Wie CD-ROM Laufwerk ansprechen? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |