首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

JNI中怎么将C中的参数传给android

2013-09-07 
JNI中如何将C中的参数传给android具体问题是这样的:我现在做的是一个通讯协议(硬件开发商给的)下android

JNI中如何将C中的参数传给android
具体问题是这样的:我现在做的是一个通讯协议(硬件开发商给的)下android 手机和设备进行通讯,设备的指令(十六进制的)都是在C代码中实现的,我要如何把指令得到返回到JAVA中?C代码如下:


int get_version(unsigned char *nVerLen,unsigned char *sVerData)
{
int st=0;
int nRLen=0;
unsigned char send_buffer[5];
memset(send_buffer,0,5);
unsigned char receive_buffer[100];
memset(receive_buffer,0,100);

*nVerLen=0;
send_buffer[0]=CMDH_DEVICE;
send_buffer[1]=CMDL_VERSION;
send_buffer[2]=0;//delay
    
//set_timeouts(100, 0);
st=send_cmd_mt3(3,send_buffer,&nRLen,receive_buffer);
if(st==0)
{
*nVerLen=nRLen;
memcpy(sVerData,receive_buffer,nRLen);
}
//set_timeouts(5000, 0);
return st;
}

这段代码是在C代码中按协议封装设备版本的指令,*nVerLen为封装后指令的长度,*sVerData为封装后的指令。

JNIEXPORT jbyteArray JNICALL Java_com_example_psam_1demo_PSAM_getversion
  (JNIEnv *env, jobject obj){

}

我要怎样做才能得到这个指令,并把它传到android的java native方法中呢? JNI Android Java
[解决办法]

JNIEXPORT jbyteArray JNICALL Java_com_example_psam_1demo_PSAM_getversion
(JNIEnv *env, jobject obj) {
unsigned char buffer[100];
unsigned char length;

get_version(&length, buffer);
jbyteArray array = (*env)->NewByteArray(env, length);
(*env)->SetByteArrayRegion(env, array, 0, length, buffer);

return array;
}



差不多这个意思吧

热点排行