jni学习实例(二)-a7105模块驱动之jni

news/2024/11/29 4:48:12/
#include <stdio.h>  
#include <string.h>  
#include <jni.h>  
#include <fcntl.h> /*包括文件操作,如open() read() close()write()等*/  
#include <android/log.h>  
#define LOG_TAG "a7105"  #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)  
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)  #define DEVICE_NAME "/dev/a7105_spi_moni" //device point    int fd;  jstring Java_com_example_a7105demo_a7105Class_stringFromJNI( JNIEnv* env, jobject thiz )  
{  return (*env)->NewStringUTF(env, "This is a7105 demo project!");  
}  jint Java_com_example_a7105demo_a7105Class_Init( JNIEnv* env)  
{  LOGE("a7105Class()\n");  fd = open(DEVICE_NAME, 0);  LOGE("a7105Class()-> fd = %d \n", fd);  if (fd < 0){  LOGE("open device %s error \n", DEVICE_NAME);  return 0;  }  return 1;  
} #if 0  
jint Java_com_example_a7105demo_a7105Class_IOCTL( JNIEnv* env, jobject obj , jint ID, jint state)  
{  LOGE("IOCTL()-> %d dvr gpio State \n",state);  LOGE("IOCTL()-> %d dvr gpio State \n",0);  ioctl(fd,state, NULL);  return 1;  
}  
#endifjint Java_com_example_a7105demo_a7105Class_Read( JNIEnv* env, jobject obj, jintArray bufArr, jint bufLen)  
{ char *bufByte;  int *bufInt;int fd;	int ret;int i;bufByte = malloc(bufLen);  bufInt = malloc(bufLen); LOGE("++++++++Read+++++++++ /n"); (*env)->GetIntArrayRegion(env, bufArr, 0, bufLen, bufInt);fd = open(DEVICE_NAME, O_RDONLY);  if (fd < 0){LOGE("open device %s error \n", DEVICE_NAME);  return fd;}ret = read(fd, bufByte, bufLen);if (ret < 0) {LOGE("open device %s error \n", DEVICE_NAME);  return 0;  }for (i = 0; i < bufLen; i++) {  bufInt[i] = bufByte[i]; LOGE("a7105Class_Read:bufByte = %x, bufInt = %d\n", bufByte[i], bufInt[i]);} /*将读取的值,返回到VM中*/  (*env)->SetIntArrayRegion(env, bufArr, 0, bufLen, bufInt); close(fd);return 1;  
}  jint Java_com_example_a7105demo_a7105Class_Write( JNIEnv* env, jobject obj, jintArray bufArr, jint bufLen)  
{ char *bufByte;  int *bufInt;int fd;	int i;LOGE("++++++++Write+++++++++ /n"); bufByte = malloc(bufLen);  bufInt = malloc(bufLen); (*env)->GetIntArrayRegion(env, bufArr, 0, bufLen, bufInt); /*驱动是byte,所以将int转换成byte*/for (i = 0; i < bufLen; i++) {  bufByte[i] = bufInt[i]; LOGE("a7105Class_Write:bufByte = %x, bufInt = %d\n", bufByte[i], bufInt[i]);}fd = open(DEVICE_NAME, O_WRONLY);  if (fd < 0){LOGE("open device %s error \n", DEVICE_NAME);  return fd;}write(fd, bufByte, bufLen);close(fd); return 1;  
}    
jint Java_com_example_a7105demo_a7105Class_CLOSE( JNIEnv* env, jobject obj )  
{  close(fd);  return 1;  
}  


http://www.ppmy.cn/news/181324.html

相关文章

pdk7105的I2C配置

pdk7105的I2C配置stm23-0047版本中增加了I2C的配置<<include/configs/pdk7105.h>>已知&#xff1a;PIO3[4] SCLPIO3[5] SDA根据board/st/pdk7105.c代码中static void configI2c(void){ /* * The I2C busses are routed as follows: * * Bus SCL SDA * -…

关于解码芯片SAA7115及7105的配置 ,FVID与微驱动

最近因为在做视频处理,所以和解码芯片打交道很多,根据DM642的例程总了一些应该配置的东西. 注:以下的配置均是指AV信号输入,PAL制式输出的条件 (一)关于SAA7115(基于TI的驱动) 结构体定义如下&#xff1a;&#xff08;vportcap.h&#xff09; typedef struct {Int cmode; Int f…

30分钟内使用手机控制四轴飞行器(ESP8266 + A7105 + Blynk App for iOS/Android)

很久以来&#xff0c;我就想做类似的项目了。但是手机集成工作的复杂性让我感到害怕。而且如果以后我有新的想法&#xff0c;也很难再重新利用这个项目。 现在&#xff0c;有了Blynk&#xff0c;这一切变得易如反掌:) 因此&#xff0c;我花了一个晚上&#xff0c;完成了这个项目…

dm7数据库sql手工热备时报错:[-7105]:管道连接超时.

dm7数据库手工热备有以下3个前提 1&#xff09;DMAP服务处于启动状态 2&#xff09;数据库实例服务处于启动状态 3&#xff09;数据库处于归档模式 如下&#xff0c;执行热备时报错&#xff1a; SQL> backup database backupset /dm7/backup/sql_hot_bak; backup databa…

HDU 7105 Power Sum

Problem Description Given a positive number n, Kris needs to find a positive number k and an array {ai}(ai∈{−1,1}) of length k(1≤k≤n2), such that: ∑i1kaii2n This is too hard for Kris so you have to help him. Input The input contains multiple test ca…

SQL7105错误

今天&#xff0c;一个客户的数据库发生了以下错误&#xff1a; Fatal Error 7105 ... text, ntext, or image node does not exist 处理手记&#xff1a; 1.先使用DBCC CheckDB进行分析&#xff0c;在数据库数据库名中检测到三个可能的数据库一致性问题。" 2.使用DBCC Che…

DM8达梦数据库BUG-7105管道连接超时解决办法

在使用达梦数据库manager工具以及console工具完成备份操作时&#xff0c;会出现错误提示 -7105 管道连接超时 这篇博客将会讲解如何解决管道连接超时的问题 首先声明&#xff1a;以下操作均是在VMware虚拟机上搭载中标麒麟系统之下进行&#xff0c;数据库系统为DM8达梦数据库 …

[转载]Nginx 使用 X-Accel-Redirect 实现静态文件下载的统计、鉴权、防盗链、限速等

需求 统计静态文件的下载次数&#xff1b;判断用户是否有下载权限&#xff1b;根据用户指定下载速度&#xff1b;根据Referer判断是否需要防盗链&#xff1b;根据用户属性限制下载速度&#xff1b; X-Accel-Redirect This allows you to handle authentication, logging or …