Android Java JNI и массив C Char Не могу распознать значение

Я попытался передать массив символов из java в c. Я нашел способ его реализовать. Но когда я попытался получить доступ к значению массива, значение оказалось неверным.

Фактически, я попытался присвоить массиву символ. Точно так же, как buffer [i] = 'z' , и результат правильный в android.

Кстати, значение, которое я хотел, было значением, отправленным rs232. Значение из rs232 было в порядке.

Кто-то сказал мне использовать bytearray. Это сработает? Я боялся, что значение из rs232 не может быть сохранено в массиве байтов ....

Java

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';  //initialization

OpenPort(16,9600); // A function to open the rs232 port

while (i<1000)
{
    READ(buffer);
    i++;
}

JNI.c

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); //will the problem here ? This function need a unsigned char[]
                            //,but in the c program I wrote , char[] was ok for this.
    memcpy(buffer,tmp,40);

    (*env)->ReleaseCharArrayElements(env, databuffer, buffer, 0);

    return 0;
}
7
задан Benjamin 19 December 2013 в 23:31
поделиться