• Android底层字符传递给上层应用举例


    Android底层字符传递给上层应用


    1、Android的硬件抽象层读取相应的串口设备的数据:


    static int uart_read_drv(struct uart_control_device_t *dev, char *buf, int count)
            { 
                    int count1 = 0;
                    count1 = read(fd, buf, count);
                    if(count1 < 0)
                    {
                            perror("read");
                    } 
                    return 0;
            }


    2、 Android的JNI层经过回调之后,可以通过自定义的相应的结构体方法读取到硬件抽象层的数据,并反馈到上层:


    static jchar uart_read(JNIEnv* env, jobject thiz) {
                    char s_buf[100]={0};
                    if (sUartDevice) {
                            sUartDevice->uart_read_hal(sUartDevice, s_buf, 1);
                    }else{
                            LOGI("sUartDevice is null");
                    }
                    if (s_buf == 0) 
                    LOGI("JNI: Lost info");
                    else 
                    {
                            LOGI("***********JNI:info length is : %d", strlen(s_buf));
                    }
                    return s_buf[0]; 
            }


    3、Android的JNI和上层函数的对应描述:


    static const JNINativeMethod gMethods[] = {
            ….
            { "_uart_data_update", 
                    "()C",
                    (void*)uart_read },
                    ….
            };


    4、Android的Framework层定义相应的本地接口方法:


    private static native char _uart_data_update();


    通过类的方法进行封装:
            public class Uart {
                    static {
                    System.loadLibrary("uart_runtime");
                    Log.i("**********************Java Service", "loadLibrary sucess");
                    } 
                     public Uart(){ 
                            _init();
                    }
                    public char GpsDataUpdate() {
                    char s = _uart_data_update();
                            return s;
                    }
                    private static native boolean _init();
                    private static native char _uart_data_update();
                     }


    }


    5、.Java上层App进行调用,并获得数据:


    static Uart uartuart = new Uart();
            char s = uartuart.GpsDataUpdate();


    =======做个参考。


  • 相关阅读:
    CDN缓存服务器现状,squid、nginx、trafficserver、ATS性能测试
    [钉钉通知系列]Jenkins发布后自动通知
    查税号,税号查询,纳税人识别号查询
    体验万象优图鉴黄服务
    红象云腾
    我眼中的领域驱动设计
    手工DIY:手机变身扫描仪_极客迷
    【CZURET-16】成者科技(CZUR)ET16智能扫描仪OCR文字识别书籍文档票据零边距高速A3A4高拍仪高清1600万像素【行情 报价 价格 评测】-京东
    技术漫谈 | 使用docker-compose进行python开发
    饿了么的 PWA 升级实践
  • 原文地址:https://www.cnblogs.com/new0801/p/6175921.html
Copyright © 2020-2023  润新知