几种传递方式
传递字符串
jint SerialSend(JNIEnv *env, jobject cls, jstring data)
{
int len = 0;
jboolean isCopy;
const char *str = (*env)->GetStringUTFChars(env, data, &isCopy);
if(str == NULL)
{
return 1;
}
__android_log_print(ANDROID_LOG_DEBUG, "send data", "send data= %s: send len=%d",str,strlen(str));
if(strncmp(str,"quit",4)==0)
{
ioctl(ledfd, 0,1);
LOGD("quit quit quit");
return 0;
}
len = write(fd, str, strlen(str));//瀹為檯鍐欏叆鐨勯暱搴?
if(len == strlen(str)) {
LOGD("send data len = %d", len);
return len;
} else {
tcflush(fd, TCOFLUSH);//TCOFLUSH鍒锋柊鍐欏叆鐨勬暟鎹絾涓嶄紶閫?
return -1;
}
(*env)->ReleaseStringUTFChars(env, data, str);
return 0;
}
传递字节数组
unsigned char str[512];
jint SerialSend(JNIEnv *env, jobject cls, jbyteArray buffer,jint datalen)
{
int len;
memset(str,0,512);
(*env)->GetByteArrayRegion(env, buffer, 0, datalen,str);
__android_log_print(ANDROID_LOG_DEBUG, "send data", "send data= %s: send len=%d",str,strlen(str));
len = write(fd, str, strlen(str));//瀹為檯鍐欏叆鐨勯暱搴?
LOGD("write data len = %d", len);
if(len==10)
{
ioctl(ledfd, 0,1);
LOGD("quit quit quit");
return 0;
}
if(len == strlen(str)) {
LOGD("send data len = %d", len);
return len;
} else {
tcflush(fd, TCOFLUSH);//TCOFLUSH鍒锋柊鍐欏叆鐨勬暟鎹絾涓嶄紶閫?
return -1;
}
return 0;
}
返回字符串
jstring SerialRecv(JNIEnv *env, jobject cls,jint datalen)
{
int len=0, ret = 0;
fd_set fs_read;
struct timeval tv_timeout;
char *data;
FD_ZERO(&fs_read);
FD_SET(fd, &fs_read);
tv_timeout.tv_sec = (10*20/115200+2);
tv_timeout.tv_usec = 0;
ret = select(fd+1, &fs_read, NULL, NULL, &tv_timeout);
printf("ret = %d\n", ret);
if (FD_ISSET(fd, &fs_read)) {
len = read(fd, data, datalen);
LOGD("receive data len = %d", len);
return (*env)->NewStringUTF(env, data);
} else {
perror("select");
return NULL;
}
}
返回字节数组
char data[1024];
jbyteArray JNICALL SerialRecv(JNIEnv *env, jobject cls,jint datalen)
{
int len;
memset(data,0,1024);
len = read(fd, data, 1024);
LOGD("receive data len = %d", len);
jbyteArray byteArray = (*env)->NewByteArray(env, len);
(*env)->SetByteArrayRegion(env, byteArray, 0, len, data);
return byteArray;
}
参考博客
http://blog.csdn.net/yf210yf/article/details/12113567
http://blog.csdn.net/xinchen200/article/details/25333047
android JNI调用
猜你喜欢
转载自blog.csdn.net/u012855539/article/details/77948191
今日推荐
周排行