android stdio 串口打开失败 关于参数的问题

qq_34300670 2016-08-03 03:45:29
配置好ndk和jni后 打开串口 /dev/ttyS2 每次 fd 都等于-1 返回打开失败
然后我去看jni里open函数发现一个flags
JNIEXPORT jobject JNICALL Java_com_example_administator_SerialPort_open
(JNIEnv *env, jclass thiz, jstring path, jint baudrate,jint flags)
并且在打开串口时有用到
jboolean iscopy;
const char *path_utf = (*env)->GetStringUTFChars(env, path, &iscopy);
fd = open(path_utf, O_RDWR | flags);

因为在java文件中并没有传入flags的参数
public SerialPort(File device, int baudrate) throws SecurityException, IOException {
mFd = open(device.getAbsolutePath(), baudrate);
Log.v("SerialPort","mFd="+mFd);
if (mFd == null) {
throw new IOException();
}
mFileInputStream = new FileInputStream(mFd);
mFileOutputStream = new FileOutputStream(mFd);
}

但是我把 mFd = open(device.getAbsolutePath(), baudrate);改成mFd = open(device.getAbsolutePath(), baudrate,0);
加入一个0参数
直接报错 编译不过 参数不对
之后我只能不改java文件回到jni文件夹下把 .c和.h文件中
JNIEXPORT jobject JNICALL Java_com_example_administator_SerialPort_open
(JNIEnv *env, jclass thiz, jstring path, jint baudrate,jint flags)

fd = open(path_utf, O_RDWR | flags);
改成
JNIEXPORT jobject JNICALL Java_com_example_administator_SerialPort_open
(JNIEnv *env, jclass thiz, jstring path, jint baudrate)

fd = open(path_utf, O_RDWR);

编译通过 串口打开

问题是 第一种方法为什么会报错 编译不过
jni里函数需要传入的参数为什么java不传也不会出问题
...全文
652 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei得更高 2019-04-12
  • 打赏
  • 举报
回复
貌似参数出问题了
xiaohuh421 2017-08-14
  • 打赏
  • 举报
回复
对与jni函数. c中如何声明的, java文件中就必须如何声明. (参数类型和个数,顺序都必须要对应得上) 并且, 调用的时候, java代码调用native函数时, 参数也是必须要传对的. 编译能个, 那只是假像. Android Stuio对C代码的编译提示本身就还有很多bug的. 跟宇宙最强的VS还有很大差距的. 就像基本的函数, 比如有一个c函数, 需要返回一个int, 但在函数内部, 没有任何的return语句, 他也不会报错. 当你运行的时候, 却会直接crash. 从你的描述来看, 多半就是因为这个参数导致的问题.
wyg_blog 2017-08-12
  • 打赏
  • 举报
回复
在我的C文件里直接就是这种的,并没有flag JNIEXPORT jobject JNICALL Java_com_example_administator_SerialPort_open (JNIEnv *env, jclass thiz, jstring path, jint baudrate) fd = open(path_utf, O_RDWR); 但是打开串口一直出错,返回 Open() fd = -1。请问博主,这可能是因为什么原因呢。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧