posted 20 years ago
Hi There,
I think it would be convenient this way.
I make a function call like this -
(Java_Lx200_readn(env,obj,lx200PortFD,inputStr,1,1)
where inputStr is a char array of size 2048. The same inputStr I have to use from the place I called readn().
JNIEXPORT jint JNICALL
Java_Lx200_readn(JNIEnv *env,jobject obj,jint fd,jobjectArray ptr,jint nbytes,jint sec)
{
int stat;
int nleft, nread;
nleft = nbytes;
int i;
jsize len;
jobject myobj;
char returnString[2048];
char *str;
str = returnString;
len=(*env)->GetArrayLength(env,ptr);
for (i=0;i<len;i++) {
myobj=(*env)->GetObjectArrayElement(env,ptr,i);
str=(*env)->GetStringUTFChars(env,myobj,0);
}
while (nleft > 0) {
stat = Java_Lx200_lx200stat(env,obj,fd,sec,0);
if (stat <= 0 ) break;
nread = read (fd, ptr, nleft);
if (nread <= 0) break;
nleft -= nread;
str += nread;
}
return (nbytes - nleft);
}
I hope I make some sense.
Thanks for your efforts.
Regards.