[問題] Android Jni 與 C 傳 char 陣列
這是一個我用Android NDK 調用 JNI 我自己寫的C函式庫的code
C的code普通執行的時候確實
能夠把我要得到的RS232數據傳入然後做檢測之後轉為十進位的數值
但是在這裡面就無法了
當我把Android的char陣列傳到JNI,然後做了事情回傳之後
我去檢查那個buffer 他就給我一個亂碼
我試過在Jni的.c檔裡面 把char類型的buffer陣列='Z' ,回傳之後的確
檢測是Z,但是只要是想要把Rs232數據memcpy進來,數據就都會是亂碼,
應該說在Android Java裡面檢視Logcat都是亂碼,查了很多資料都沒有解決辦法。
是網路上所說的char大小Java和C不同嗎?
有請高手大大解釋一下
另外從RS232裡面傳出來的值是16進位的數值
http://pastebin.com/mrB0bsSd這個是Code所在的網站
下面也是
=======================Android Java Code=============================
這裡是片段
public native int OpenPort(int portnum,int brates);
public native int ClosePort(int portnum);
public native int READ(char[] databuffer);
public char[] buffer=new char[40];
int i;
for(i=0;i<40;i++)
buffer[i]='s'; //初始化
OpenPort(16,9600); 自己寫的開Port
while (i<1000)
{
READ(buffer);
i++;
}
=====================以下為JNI.c code===============================
JNIEXPORT jint JNICALL Java_com_example_ndk_Vehicles_READ(JNIEnv *env, jclass
cls,jcharArray databuffer)
{
char tmp[40];
jchar *buffer=(*env)->GetCharArrayElements(env,databuffer,0);
memset(tmp,0,sizeof(tmp));
PollComport(16,tmp,40);
memcpy(buffer,tmp,40);
(*env)->ReleaseCharArrayElements(env, databuffer, buffer, 0);
return 0;
}
==========================================================================
有請大大幫忙看一下
折騰了好幾天
很累=_=
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.112.16
→
08/21 19:07, , 1F
08/21 19:07, 1F
→
08/21 19:09, , 2F
08/21 19:09, 2F
→
08/21 19:10, , 3F
08/21 19:10, 3F
推
08/21 19:23, , 4F
08/21 19:23, 4F
→
08/21 19:24, , 5F
08/21 19:24, 5F
→
08/21 19:26, , 6F
08/21 19:26, 6F
→
08/21 19:26, , 7F
08/21 19:26, 7F
→
08/21 19:26, , 8F
08/21 19:26, 8F
推
08/21 20:13, , 9F
08/21 20:13, 9F
→
08/21 20:13, , 10F
08/21 20:13, 10F
→
08/21 21:37, , 11F
08/21 21:37, 11F
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章