[問題] 請教會C語言或JNI的版友

看板C_and_CPP作者 (QQ)時間13年前 (2011/07/25 19:56), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/1
※ [本文轉錄自 AndroidDev 看板 #1EBLb68V ] 作者: fatalcord (QQ) 看板: AndroidDev 標題: [問題] 請教會C語言或JNI的版友 時間: Mon Jul 25 19:53:39 2011 開發層: (應用/框架/庫/核心) 應用 問題: 我在Android應用程式下寫了一個.C檔用來接收Sensor傳來的值 程式碼如下 //接收訊息 JNIEXPORT jstring JNICALL Java_com_android_testuart_Uart2C_receiveMsgUart(JNIEnv *env, jobject mc) { char buffer[1024]; char buf[1024]; int len, i = 0, k = 0; memset(buffer, 0, sizeof(buffer)); len = read(fd, buffer, sizeof(buffer)); if (len >0) { buffer[len]='\0'; return ((*env)->NewStringUTF(env, buffer)); } else return NULL; } Sensor傳進來的值為一個Char陣列 類似這樣的型式Char c[] = {0x00,0x20,0x30,0x22...... } 但每當Sensor傳陣列進程式時就會自動關閉 幾經嘗試後發現是 return ((*env)->NewStringUTF(env, buffer));這行的問題 自己試著改了幾次始終無法完成 所以才想上來問問看 目標是將傳進來的陣列存成string型式(印象中C裡面沒有string?不曉得有沒有記錯) 傳回.java的主程式顯示在螢幕上 或是能將傳進來的陣列直接傳回.java的主程式作處理,但因為剛接觸JNI 所以 也不是很熟悉,不曉得能不能改以這樣的方式完成, 懇請各位幫忙 有不清楚的地方我會在補充 由衷感謝 輸入: 預期輸出: 錯誤輸出: 錯誤訊息: 程式碼: (請多利用置底文網站) 參考: (書籍/網頁/...) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.56.98 fatalcord:轉錄至看板 java 07/25 19:54 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.56.98

07/25 21:13, , 1F
可以給一下NewStringUTF,Java_com_android_testuart_
07/25 21:13, 1F

07/25 21:14, , 2F
Uart2C_receiveMsgUart的原始型態嗎?
07/25 21:14, 2F

07/26 09:40, , 3F
原始型態的意思? 這是我自己寫的
07/26 09:40, 3F

07/26 09:44, , 4F
宣告的型態呀
07/26 09:44, 4F

07/26 09:45, , 5F
你怎麼定義這個的 "Java_com_android..."
07/26 09:45, 5F

07/26 14:13, , 6F
public static native String receiveMsgUart()
07/26 14:13, 6F

07/26 23:51, , 7F
你的 buffer[len]='\0'; 這行不會爆?
07/26 23:51, 7F

07/27 00:31, , 8F
會爆的意思?只是加上/0作為矩陣的最後一個項目
07/27 00:31, 8F

07/27 08:52, , 9F
你確定是最後一個 ? 長度 len 的陣列範圍是 [0]~ [len-1]
07/27 08:52, 9F
文章代碼(AID): #1EBLdThZ (C_and_CPP)