LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 865|回复: 5

如何用C编写控制光驱开关的程序?

[复制链接]
发表于 2004-4-10 01:30:57 | 显示全部楼层 |阅读模式
设想:读取光驱状态,如果仓门为开则把它关闭;如果仓门为关则把它打开。不知如何实现?
发表于 2004-4-10 12:36:14 | 显示全部楼层
昨天才看到一个!

好象是用 ioctl 里的一个 flag 控制的
去 man 一下 ioctl_list
发表于 2004-4-10 16:14:20 | 显示全部楼层
http://www-900.ibm.com/developerWorks/cn/linux/l-cd/index.shtml
里面有打开仓门的代码,不过没有关闭仓门的
另外,你可以看看SDL,在devhelp里面有
 楼主| 发表于 2004-4-10 16:24:00 | 显示全部楼层
ioctl似乎只是单纯的控制,没有读取状态一说,eject好象就是用它来控制光驱开关的;另iocrl_list的man页要怎么看,我机上好象没有
 楼主| 发表于 2004-4-10 17:09:10 | 显示全部楼层
最初由 libinary 发表
http://www-900.ibm.com/developerWorks/cn/linux/l-cd/index.shtml
里面有打开仓门的代码,不过没有关闭仓门的
另外,你可以看看SDL,在devhelp里面有

刚好相反,只能关不能开,呵呵
发表于 2004-4-10 17:55:42 | 显示全部楼层
看看SDL,你先要安装SDL-dev包

  1. #include <SDL/SDL.h>

  2. int
  3. main(void)
  4. {
  5.   SDL_CD *cdrom;

  6.   SDL_Init(SDL_INIT_CDROM);
  7.   atexit(SDL_Quit);

  8.   /* Check for CD drives */
  9.   if(!SDL_CDNumDrives()){
  10.     fprintf(stderr, "No CDROM devices available\n");
  11.     exit(-1);
  12.   }

  13.   /* Open the default drive */
  14.   cdrom=SDL_CDOpen(0);

  15.   /* Did if open? Check if cdrom is NULL */
  16.   if(!cdrom){
  17.     fprintf(stderr, "Couldn't open drive: %s\n", SDL_GetError());
  18.     exit(-1);
  19.   }

  20.   SDL_CDEject(cdrom);

  21.   SDL_CDClose(cdrom);
  22.   exit(0);
  23. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表