Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Voiko C:llä tai C++:lla avata CD-aseman?

Sivun loppuun

Beebo [22.10.2006 12:39:39]

#

Niin, olen ihan vasta aloittanut ja kiinnostunut tästä C-koodaamisesta, C++:aa en ole vielä kokeillut. Tein juuri C-koodaamisen ensimmäisen tulostusharjoituksen joka on näillä sivuilla.

Kysymykseni on sellainen että voiko C/C++:lla koodata sellaisen ohjelman, että kun sen suorittaa niin se avaa koneesi CD-aseman? ei olisi myös pahitteeksi jos se näyttäisi DOS ikkunassa jonkin viestin, vaikkapa "tässä sinulle kahvikuppiteline"

Onko tämä toteutettavissa? ja jos on, niin voiko joku opastaa minua?

Blaze [22.10.2006 14:04:06]

#

Beebo kirjoitti:

Kysymykseni on sellainen että voiko C/C++:lla koodata sellaisen ohjelman, että kun sen suorittaa niin se avaa koneesi CD-aseman?

Voi.
Näin pikaisesti haettuna ainakin tämä ketju käsittelee asiaa

Beebo [22.10.2006 14:09:31]

#

En hirveästi saanut selkoa, kun siellä ei ollut mitään selkeää komentohässäkkää C:lle. tai jos oli niin se ei toiminut, joka taas johtuu käyttäjästä.

A-P [22.10.2006 14:33:06]

#

C-kielen vakiokirjastot eivät sisällä komentoa CD-aseman käsittelyyn. CD-aseman käsittely sinun on joko ohjelmoitava itse tai käytettävä jotain valmista kirjastoa. Et kertonut käyttöjärjestelmääsi, joten en voi antaa tarkkaa vastausta.

Beebo [22.10.2006 14:52:52]

#

Käyttöjärjestelmänä windows xp ja käytän ohjelmaa nimeltä Dev-c++

Metabolix [22.10.2006 15:05:45]

#

Mikä ihme siinä CD-aseman luukussa viehättää? Eikö sitä voi ihan nappia painamalla avata, jos kerran on tarvis? CD:n sisään laittamiseksi täytyy kuitenkin kurottaa sinne asti.

Linkitä ohjelmaan winmm. (Dev-C++:n projektin asetuksissa on ruutu, johon voi kirjoittaa linkkerille komentoriviterveisiä, lisää siis siihen -lwinmm.) Liitä includella windows.h ja käytä mciSendString-funktiota:
mciSendString("Set CDAudio Door Open", 0, 0, 0);

P.S. Oli taas niin kuvaava otsikko aiheella, että teki oikein pahaa muuttaa se paremmaksi. Keskustelun ohjeissa nähdäkseni kehotetaan kirjoittamaan otsikoita, joista saa käsityksen ongelmasta, ja ainakin minä kehotan noudattamaan kyseistä ohjetta.

Beebo [22.10.2006 15:16:15]

#

Metabolix kirjoitti:

P.S. Oli taas niin kuvaava otsikko aiheella, että teki oikein pahaa muuttaa se paremmaksi. Keskustelun ohjeissa nähdäkseni kehotetaan kirjoittamaan otsikoita, joista saa käsityksen ongelmasta, ja ainakin minä kehotan noudattamaan kyseistä ohjetta.

Jos olisin tiennyt että täällä on tälläisia henkilöitä, olisin jättänyt kysymättä. Lisäksi neuvosi oli varsin sekava.

Antti Laaksonen [22.10.2006 15:19:56]

#

Näin lyhyt koodi riittää CD-luukun avaukseen Windowsissa:

#include <windows.h>

int main(void) {
    mciSendString("set cdaudio door open", NULL, 0, NULL);
    return 0;
}

Ainoa ongelma on siinä, että funktio mciSendString vaatii muutoksen linkkerille annettavaan komentoon. Minä en saanut ohjelmaa toimimaan Dev-C++:lla muuten kuin tekemällä tästä pienestä ohjelmasta oman projektin.

Tässä tulevat tarkat ohjeet projektin tekoon ja linkkerin säätöön:

1. Valitse File->New->Project.
2. Valitse Empty Project.
3. Anna nimeksi vaikka luukku.dev.
4. Valitse Project->New File
5. Kirjoita ohjelmaan yllä oleva koodi.
6. Tallenna vaikka nimellä luukku.c.
7. Mene valikkoon Project->Project Options.
8. Valitse välilehti Parameters.
9. Kirjoita Linker-kohtaan -lwinmm.

Nyt ohjelma on valmis käännettäväksi ja ajettavaksi.

Beebo [22.10.2006 15:21:55]

#

Kiitos kunnollisesta opastuksesta.

Nikotiini [16.11.2006 23:13:18]

#

Miten cd-aseman saisi suljettua?

Metabolix [16.11.2006 23:47:49]

#

Pienellä loogisella päättelyllä esimerkiksi vaihtamalla lähetettävään komentoon Openin paikalle Close.

Nikotiini [21.11.2006 19:40:49]

#

Metabolix kirjoitti:

Pienellä loogisella päättelyllä esimerkiksi vaihtamalla lähetettävään komentoon Openin paikalle Close.

Ei kyllä toimi oikein noi sinun loogiset päättelyt.

Metabolix [21.11.2006 19:43:56]

#

No ei näköjään, mutta siitä voi syyttää Microsoftia. Ja suoraan sanoen laiska tai osaamaton olet, kun et itse voi googlettaa komennon mahdollisia parametreja. Näyttäisi syystä tai toisesta olevan Closed tuossa tapauksessa. Miksihän hemmetissä, sitä ei varmaankaan moni tiedä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta