1.创建SerialPort应用
1.勾选Include C++ support
2.选择Toolchain Default
3.在Android视图下查看项目对应目录中是否存在CMakeList.txt和native-lib.cpp
![项目目录结构](https://i-blog.csdnimg.cn/blog_migrate/755902e6c0cfc326abf06930600d18c2.png)
2.native-lib.cpp更名为SerialPortControl.cpp
1.点击鼠标右键–>>Refactor–>>Rename
2.更名为SerialPortControl.cpp
![修改native.cpp文件名](https://i-blog.csdnimg.cn/blog_migrate/fed9303430ec8b9e13f41b072c70b661.png)
3.将下面SerialPortControl.cpp文件中的代码粘贴到项目cpp文件夹下的SerialPortControl.cpp中
SerialPortControl.cpp
#include <termios.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <jni.h>
static speed_t getBaudrate(jint baudRate)
{
switch(baudRate)
{
case 0: return B0;
case 50: return B50;
case 75: return B75;
case 110: return B110;
case 134: return B134;
case 150: return B150;
case 200: return B200;
case 300: return B300;
case 600: return B600;
case 1200: return B1200;
case 1800: return B1800;
case 2400: return B2400;
case 4800: return B4800;
case 9600: return B9600;
case 19200: return B19200;
case 38400: return B38400;
case 57600: return B57600;
case 115200: return B115200;
case 230400: return B230400;
case 460800: return B460800;
case 500000: return B500000;
case 576000: return B576000;
case 921600: return B921600;
case 1000000: return B1000000;
case 1152000: return B1152000;
case 1500000: return B1500000;
case 2000000: return B2000000;
case 2500000: return B2500000;
case 3000000: return B3000000;
case 3500000: return B3500000;
case 4000000: return B4000000;
default: return -1;
}
}
JNIEXPORT jobject JNICALL Java_com_SerialPort_open(JNIEnv *env, jclass thiz,jstring path,jint baudRate) {
int fd;
speed_t speed;
jobject mFileDescriptor;
{
speed = getBaudrate(baudRate);
if (speed == -1) {
return NULL;
}
}
{
jboolean iscopy;
const char *path_utf = env->GetStringUTFChars(path,&iscopy);
fd &#