android 串口编程原理和实现方式(附源码)

android 串口编程原理和实现方式(附源码)

ID:6070526

大小:88.71 KB

页数:16页

时间:2018-01-02

android 串口编程原理和实现方式(附源码)_第1页
android 串口编程原理和实现方式(附源码)_第2页
android 串口编程原理和实现方式(附源码)_第3页
android 串口编程原理和实现方式(附源码)_第4页
android 串口编程原理和实现方式(附源码)_第5页
资源描述:

《android 串口编程原理和实现方式(附源码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、提到串口编程,就不得不提到JNI,不得不提到JavaAPI中的文件描述符类:FileDescriptor。下面我分别对JNI、FileDescriptor以及串口的一些知识点和实现的源码进行分析说明。这里主要是参考了开源项目android-serialport-api。  串口编程需要了解的基本知识点:对于串口编程,我们只需对串口进行一系列的设置,然后打开串口,这些操作我们可以参考串口调试助手的源码进行学习。在Java中如果要实现串口的读写功能只需操作文件设备类:FileDescriptor即可,其他的事都由

2、驱动来完成不用多管!当然,你想了解,那就得看驱动代码了。这里并不打算对驱动进行说明,只初略阐述应用层的实现方式。 (一)JNI:  关于JNI的文章网上有很多,不再多做解释,想详细了解的朋友可以查看云中漫步的技术文章,写得很好,分析也很全面,那么在这篇拙文中我强调3点:  1、如何将编译好的SO文件打包到APK中?(方法很简单,直接在工程目录下新建文件夹libs/armeabi,将SO文件Copy到此目录即可)  2、命名要注意的地方?(在编译好的SO文件中,将文件重命名为:libfilename.so即可。

3、其中filename.so是编译好后生成的文件)  3、MakeFile文件的编写(不用多说,可以直接参考package/apps目录下用到JNI的相关项目写法)  这是关键的代码:[cpp] viewplaincopy1.        int fd;  2.        speed_t speed;  3.        jobject mFileDescriptor;  4.  5.        /* Check arguments */ 

4、 6.        {  7.                speed = getBaudrate(baudrate);  8.                if (speed == -1) {  9.                        /* TODO: throw an exception */  10.                        LOGE("Invalid baudrate");  11.                        return NULL;  12

5、.                }  13.        }  14.  15.        /* Opening device */  16.        {  17.                jboolean iscopy;  1.                const char *path_utf = (*env)->GetStringUTFChars(env, path, &iscopy);  2.                LOGD("Opening serial port %

6、s with flags 0x%x", path_utf, O_RDWR 

7、 flags);  3.                fd = open(path_utf, O_RDWR 

8、 flags);  4.                LOGD("open() fd = %d", fd);  5.                (*env)->ReleaseStringUTFChars(env, path, path_utf);  6.                if (fd == -1)  7.

9、                {  8.                        /* Throw an exception */  9.                        LOGE("Cannot open port");  10.                        /* TODO: throw an exception */  11.                        return NULL;  12.                }  13.        

10、}  14.  15.        /* Configure device */  16.        {  17.                struct termios cfg;  18.                LOGD("Configuring serial port");  19.                if (tcgetattr(fd, &cfg))  20.   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。