C/C++ Hardware Controll [RESOLVIDO]

1. C/C++ Hardware Controll [RESOLVIDO]

Fabrício Costa do Nascimento
Static

(usa Debian)

Enviado em 01/06/2017 - 21:11h

Eai pessoal, blz?
Estou brincando, tentando aprender umas coisas em C e como vim do Windows. Costumava escrever o simples código para abrir a tampa do CD do computador:

#include <stdio.h>
#include <Windows.h>
using namespace std;
int main( )
{
mciSendString("set cdaudio door open", NULL, NULL, NULL);
printf(" Deu certo!");
getchar();
return EXIT_SUCCESS;
}

Mas logicamente, a biblioteca "Windows.h" não funciona no linux, que biblioteca eu uso para substituir a mesma, e dar certo no linux?


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 01/06/2017 - 22:33h

Um programa possivelmente se pareceria com o seguinte (não tenho como testar, pois não tenho leitor de CD na máquina que estou usando).

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <linux/cdrom.h> // Outros Unices vão usar cabeçalhos diferentes (e.g. no BSD, usa-se <sys/cdio.h>).

int main(void){
int fd=open("/dev/cdrom", O_RDONLY|O_NONBLOCK, 0666); // Ou "/dev/sr0", "/dev/dvd", dependendo da máquina.
if(fd==-1){
fprintf(stderr, "Erro ao abrir device do cdrom: %s.\n", strerror(errno));
return 1;
}
if(ioctl(fd, CDROMEJECT)==-1){
// Em outros Unices, o comando pode ter outro nome (e.g. no BSD, usa-se CDIOCEJECT).
fprintf(stderr, "Erro ao enviar comando para o cdrom: %s.\n", strerror(errno));
return 1;
}
close(fd);
return 0;
}


3. Re: C/C++ Hardware Controll [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 01/06/2017 - 22:10h

Muitos dispositivos são associados a um nome no sistema de arquivos, que você abre como outro arquivo qualquer, troca dados por meio de funções de leitura e escrita, e controla através da chamada ioctl().

Cada dispositivo suporta diferentes conjuntos de instruções enviadas através de ioctl(), interpretadas pelo device driver do dispositivo, que provoca respostas do dispositivo físico (ou virtual, se for o caso).

A documentação de cada device driver que reside na seção 4 do manual on-line, costuma listar os comandos de ioctl() suportados pelo driver.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts