具体问题是这样的:我现在做的是一个通讯协议(硬件开发商给的)下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方法中呢?JNIAndroidJava
{
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方法中呢?JNIAndroidJava
解决方案 »
- 智能家居项目-android
- 求教:android 模拟器无法收到组播数据的原因
- 帮忙介绍一下学android的书吧
- 调用新浪微博API实现第三方应用登录新浪微博,获取用户微博信息的问题。
- Android USB 读写问题
- android代码布局的问题
- Eclipse开发工具NDK环境下如何添加C++第三方库(有头文件、lib文件、dll文件)
- 求android系统自带联系人源码一份
- android 4.4 设置应用为默认短信的问题
- 初级菜鸟-ArrayAdapter构造函数第二个参数具体指什么
- 求教:listview的每一项点击相应到下个页面内容如何获得呢
- 有关android、webview、js、getElementsByTagName的一个问题
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;
}差不多这个意思吧