I.MX6 Linux、Jni ioctl 差异
2015-12-20 13:19
549 查看
/*********************************************************************** * I.MX6 Linux、Jni ioctl 差异 * 声明: * 在使用Jni的ioctl()的过程中,发现不能像普通的Linux函数那样使用, * 必须使用3各参数的ioctl()函数。 * * 2015-12-20 深圳 南山平山村 曾剑锋 **********************************************************************/ #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <jni.h> #include "android/log.h" static const char *TAG="Buzz"; #define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args) #define BUZZER_ENABLE 82 #define BUZZER_FREQENCY 83 #define BUZZER_DISABLE 84 /* * Class: com_android_buzz_Buzz * Method: enable * Signature: ()V */ JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_enable (JNIEnv *env, jobject obj) { int fd = open("/dev/buzzer", O_RDWR); if ( fd == -1 ) { LOGE("open buzzer device error."); return; } // ioctl(fd, BUZZER_ENABLE); // 不能这样使用 ioctl(fd, BUZZER_ENABLE, 0); // 得这么使用 close(fd); //LOGE("enable buzzer device. "); } /* * Class: com_android_buzz_Buzz * Method: setFrequency * Signature: (I)V */ JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_setFrequency (JNIEnv *env, jobject obj, jint frequency) { int fd = open("/dev/buzzer", O_RDWR); if ( fd == -1 ) { LOGE("open buzzer device error."); return; } ioctl(fd, BUZZER_FREQENCY, frequency); close(fd); //LOGE("set buzzer device frequency. "); } /* * Class: com_android_buzz_Buzz * Method: disable * Signature: ()V */ JNIEXPORT void JNICALL Java_com_android_buzz_Buzz_disable (JNIEnv *env, jobject obj) { int fd = open("/dev/buzzer", O_RDWR); if ( fd == -1 ) { LOGE("open buzzer device error."); return; } // ioctl(fd, BUZZER_DISABLE); // 不能这样使用 ioctl(fd, BUZZER_DISABLE, 0); // 得这么使用 close(fd); //LOGE("disable buzzer device. "); }
相关文章推荐
- 【Linux 驱动】netfilter/iptables (一) 基础概念
- CENTOS里面的配置163 mail 系统
- linux 下jdk安装
- Linux系统基础
- Find使用详解
- cdlinux可以安装在c盘
- Linux 文件共享之SMB服务
- Linux 下mysql数据库导入导出
- 将Centos的yum源更换为国内的阿里云源
- linux中打开mysql的问题-bash: mysql: command not found
- linux grub.conf 文件详解及实例
- Linux系统中查杀僵尸进程的基本方法讲解
- 神奇的linux发行版 tiny core linux
- 在linux中无法启动mysqld 服务
- 【操作系统】LinuxFedora13当new一个新内存空间的时候操作系统如何分配
- CentOS6.4升级Python
- Linux之LVM详解
- Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现
- error: unknown field ‘ioctl’ specified in initializer
- Linux gdb调试器用法全面解析