具体问题是这样的:我现在做的是一个通讯协议(硬件开发商给的)下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
解决方案 »
- JSON时候出现异常End of input at character 1 of
- 怎样把sqllite数据库文件打包一起发布?
- Android 提示:No such file or directory 没找到文件 目录
- 在android里面如何用一个服务启动另外一个程序呢?
- 在android输入法中,怎么取到当前正在和输入法通信的EditText对象?
- 大家有Android自定义控件方面的资料吗?
- 新建 android程序,运行无反应
- 怎么讲图片资源的drawable类里面的静态常量读到数组里面去
- android消息推送问题
- android DroidParts框架使用
- 求教: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;
}差不多这个意思吧