E9 android 调用串口收发数据
求 E9 android 调用串口收发数据 的资料 或者例程 系统里面有一个serial port软件是可以和串口通信的 support_lyl 发表于 2017-4-7 10:13系统里面有一个serial port软件是可以和串口通信的
但是我需要的是从串口读取数据后,用蓝牙转发出去,那个只是个测试 qhd_007 发表于 2017-4-7 11:57
但是我需要的是从串口读取数据后,用蓝牙转发出去,那个只是个测试
可以参考网上的一些开源项目的
https://github.com/qing3gan/android-serialport-api support_lyl 发表于 2017-4-7 12:10
可以参考网上的一些开源项目的
https://github.com/qing3gan/android-serialport-api
我现在知道可以用JNI方式 也能用AS来使用JNI但是调用底层的C驱动部分 我不会写 qhd_007 发表于 2017-4-7 13:12
我现在知道可以用JNI方式 也能用AS来使用JNI但是调用底层的C驱动部分 我不会写
驱动部分是已经做好了的,如果是c应用程序部分的话可以参考这个帖子的代码
http://www.armbbs.net/forum.php?mod=viewthread&tid=22064&extra=page%3D1 support_lyl 发表于 2017-4-7 13:39
驱动部分是已经做好了的,如果是c应用程序部分的话可以参考这个帖子的代码
http://www.armbbs.net/forum. ...
*/JNIEXPORT jobject JNICALL Java_example_hsap_cn_hra_SerialPortJNI_openDev(
JNIEnv *env, jobject thiz, jstring devnum) {
LOGD("openDev==>fun in");
jobject mFileDescriptor;
struct termios cfg;
bzero(&cfg, sizeof(cfg));
char dev;
sprintf(dev, "/dev/tty%s", (*env)->GetStringUTFChars(env, devnum, 0));
LOGD("openDev==>success");
LOGD("openDev==>open %s", dev);
jint fd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY); //O_NOCTTY | O_NDELAY
LOGD("openDev==>get Serial cfg");
if (0 != tcgetattr(fd, &cfg)) {
LOGE("openDev==>get Serial cfg failed");
LOGD("openDev==>serialPort close");
close(fd);
LOGD("openDev==>serialPort closed");
fd = -1;
}
LOGD("openDev==>get Serial cfg end");
//***************************************
//以下为cfmakeraw(&cfg);函数设置内容
//***************************************
cfg.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL
| IXON);
cfg.c_oflag &= ~OPOST;
cfg.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
cfg.c_cflag &= ~(CSIZE | PARENB);
cfg.c_cflag |= CS8;
//***************************************
//以下为cfmakeraw(&cfg);函数设置内容
//***************************************
LOGD("openDev==>cfg.c_cflag %x", cfg.c_cflag);
LOGD("openDev==>cfg.c_iflag %x", cfg.c_iflag);
LOGD("openDev==>cfg.c_oflag %x", cfg.c_oflag);
LOGD("openDev==>cfg.c_lflag %x", cfg.c_lflag);
tcflush(fd, TCIOFLUSH);
LOGD("setParity==>set Serial cfg");
if (0 != tcsetattr(fd, TCSANOW, &cfg)) {
LOGE("setParity==>set tcsetattr parity failed");
LOGD("setParity==>serialPort close");
close(fd);
LOGD("setParity==>serialPort closed");
fd = -1;
}
LOGD("setParity==>set Serial cfg end");
if (-1 == fd) {
LOGE("Open Serial Port Failed");
return NULL;
} else
LOGD("Open Serial Port Succeed");
LOGD("openDev==>open dev %d", fd);
LOGD("openDev==>fun end");
mFileDescriptor = createFileDescriptor(env, fd);
return mFileDescriptor;
是类似这种的 这个是我们之前用迪文板子的时候 他们提供的 我现在把这个直接用在E9上不行找不到本地库
还有个问题 E9的串口 是dev ttys*这个么 qhd_007 发表于 2017-4-7 14:06
*/JNIEXPORT jobject JNICALL Java_example_hsap_cn_hra_SerialPortJNI_openDev(
JNIEnv *env,...
e9的串口是ttySAC0~3 support_lyl 发表于 2017-4-7 14:11
e9的串口是ttySAC0~3
咱们自己没有android调用jni 来操作板子串口收发的例程么 qhd_007 发表于 2017-4-7 14:15
咱们自己没有android调用jni 来操作板子串口收发的例程么
串口是android平台已经有接口了,所以在网上下载通用的串口apk就可以用的 support_lyl 发表于 2017-4-7 14:33
串口是android平台已经有接口了,所以在网上下载通用的串口apk就可以用的
想要的不是串口这种测试工具想用串口来做一些数据控制协议这样就必须自己什么写的app能调用串口收发数据 网上的apk只能单纯的收发 qhd_007 发表于 2017-4-7 14:52
想要的不是串口这种测试工具想用串口来做一些数据控制协议这样就必须自己什么写的app能调用串口收发 ...
在可以单纯可以收发的基础上再封装一层接口就可以做成自己的数据控制协议了,在java层做可以的 support_lyl 发表于 2017-4-7 15:01
在可以单纯可以收发的基础上再封装一层接口就可以做成自己的数据控制协议了,在java层做可以的
麻烦能说详细点么不太明白 qhd_007 发表于 2017-4-7 15:35
麻烦能说详细点么不太明白
例如你有一个发送数据的函数接口uart_send(),然后你的协议是需要先发送0x55,0xaa数据头,你就可以写一个出一个新的java方法
vold send(char str)
{
uart_send(0x55);
uart_send(0xaa);
uart_send(str);
} support_lyl 发表于 2017-4-7 16:56
例如你有一个发送数据的函数接口uart_send(),然后你的协议是需要先发送0x55,0xaa数据头,你就可以写一个出 ...
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "cfsetispeed" referenced by "libserial_port.so"...
at java.lang.Runtime.loadLibrary(Runtime.java:361)
at java.lang.System.loadLibrary(System.java:525)
at example.hsap.cn.serialporttest.SerialPort.<clinit>(SerialPort.java:83)
at example.hsap.cn.serialporttest.MainActivity.onCreate(MainActivity.java:16)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
这个问题网上说是android.mk文件 但是这个文件是AS自动生成的
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := serial_port
LOCAL_LDFLAGS := -Wl,--build-id
LOCAL_LDLIBS := \
-llog \
LOCAL_SRC_FILES := \
F:\andriod\SerialPortTest\app\src\main\jni\example_hsap_cn_serialporttest_SerialPort.c \
LOCAL_C_INCLUDES += F:\andriod\SerialPortTest\app\src\main\jni
LOCAL_C_INCLUDES += F:\andriod\SerialPortTest\app\src\debug\jni
include $(BUILD_SHARED_LIBRARY)
大神 这个问题遇到过么
页:
[1]
2