123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
-
- #include <stdlib.h>
- #include <stdio.h>
- #include <jni.h>
- #include "serialInterface.h"
-
- #ifdef winHelper
- #include "winSerial.c"
- #else
- #include "unixSerial.c"
- #endif
-
- JNIEXPORT jstring JNICALL Java_HelperUtility_getThePorts(JNIEnv *env, jclass class, jstring s) {
- jboolean tmp;
- char **ports = getSerialPorts((*env)->GetStringUTFChars(env, s, &tmp));
- char *string = NULL;
- int length = 0, leng2 = 0, lengthabs = 0;
-
-
-
-
- while (ports[length] != NULL) {
-
-
- while (ports[length][leng2] != '\0') {
- leng2++;
- }
-
- lengthabs += leng2;
- leng2 = 0;
- length++;
- }
- length += lengthabs;
-
-
-
- string = (char *)malloc((length + 1) * sizeof(char));
- if (string == NULL) {
-
- return (*env)->NewStringUTF(env, NULL);
- }
-
- length = 0;
- lengthabs = 0;
- while (ports[length] != NULL) {
- leng2 = 0;
- while (ports[length][leng2] != '\0') {
- string[lengthabs++] = ports[length][leng2++];
- }
- string[lengthabs++] = '\n';
- length++;
- }
- string[lengthabs] = '\0';
-
- jstring ret = (*env)->NewStringUTF(env, string);
- return ret;
- }
-
- JNIEXPORT jshortArray JNICALL Java_HelperUtility_readData(JNIEnv *env, jclass class, jint length) {
- jshortArray arr = (*env)->NewShortArray(env, length);
- int toBeRead = 0, read;
- char *data = (char *)malloc(length * sizeof(char));
-
- while (length > 0) {
- read = serialRead(data + toBeRead, length);
- toBeRead += read;
- length -= read;
- }
-
- (*env)->SetShortArrayRegion(env, arr, 0, (*env)->GetArrayLength(env, arr), (jshort *)data);
- return arr;
- }
-
- JNIEXPORT void JNICALL Java_HelperUtility_writeData(JNIEnv *env, jclass class, jshortArray data, jint length) {
- int written = 0;
- int lastIndex = length;
- char *dat = (char *)malloc(length * sizeof(char));
-
- while (length > 0) {
- (*env)->GetShortArrayRegion(env, data, written, length, (jshort *)dat);
- written = serialWrite(dat, length);
- length -= written;
- }
- }
-
- JNIEXPORT void JNICALL Java_HelperUtility_closePort(JNIEnv * env, jclass class) {
- serialClose();
- }
-
- JNIEXPORT jboolean JNICALL Java_HelperUtility_openPort(JNIEnv *env, jclass class, jstring name) {
- jboolean isCopy;
- const char *path = (*env)->GetStringUTFChars(env, name, &isCopy);
- int ret = serialOpen((char *)path);
- if (ret == 0) {
- return JNI_TRUE;
- } else {
- return JNI_FALSE;
- }
- }
|