C/Visual C - PROGRAMACION C

 
Vista:

PROGRAMACION C

Publicado por jose carlos (1 intervención) el 13/06/2006 22:46:27
HOLA K TAL, KERIA SABER SI DESDE UN CODIGO EN C, SE PUEDE ABRIR EL CD ROM DELA COMPUTADORA Y TAMBIEN SE ESTE CODIGO PUEDA ENVIAR DICHA SEÑAL POR UN CABLE SERIAL YA QUE EL CD ROM NO ESTA CONECTADO ALA COMPUTADORA, ME IMAGINO QUE UTILIZO TMB UN PROTOBOAR, OJALA ME PUEDAN AYUDAR
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PROGRAMACION C

Publicado por fernando.gomez (1603 intervenciones) el 14/06/2006 00:13:46
Puedes usar mciSendCommand para abrir o cerrar. Primero, te creas una variable de tipo MCI_OPEN_PARAMS. De esta estructura, nos interesa lpstrDeviceType, a la que le asignaremos MCI_DEVTYPE_CD_AUDIO; y lpstrElementName, a la que le asignaremos el nombre de la unidad (D, E, F, etc). Luego, te creas un DWORD para las banderas, que serán MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID. Finalmente, mandas llamar mciSendCommand. El primer parámetro será NULL, el segundo, MCI_OPEN, el tercero las banderas en el DWORD y el cuarto, la dirección de memoria de la estructura MCI_OPEN_PARAMS, casteada a DWORD. Si la función regresa FALSE, todo fué bien, y ahora abrimos el dispositivo llamando a mciSendCommand, donde el primer parámetro será el miembro wDeviceID de nuestra estructura MCI_OPEN_PARAMS, el segundo parámetro será MCI_SET, el tercero será MCI_SET_DOOR_OPEN para abrir, o MCI_SET_DOOR_CLOSED para cerrar; el cuarto parámetro será NULL. Finalmente, cerramos el manejador con mciSendCommand, donde el segundo parámetro será MCI_CLOSE y el tercero, MCI_WAIT. He aquí el ejemplo:

MCI_OPEN_PARMS mciParams;
DWORD dwFlags;
LPCTSTR szCharDrive = "D";

memset(&mciParams, 0, sizeof(MCI_OPEN_PARMS));
mciParams.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
mciParams.lpstrElementName = szCharDrive;

dwFlags= MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID;

if (!mciSendCommand(0, MCI_OPEN, dwFlags, (DWORD) &mciParams))
{
mciSendCommand(mciParams.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
mciSendCommand(mciParams.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);
}

Con el código anterior abres el CDROM. Si cambias MCI_SET_DOOR_OPEN por MCI_SET_DOOR_CLOSE, se cierra (aunque esto depende del tipo de CDROM instalado; por ejemplo, el cerrar el CDROM no funciona con la mayoría de las laptops).

Por cierto, necesitas #incluir windows.h.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar