在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3539|回复: 24

[原创] LKT5103A Hid接口LINUX系统下JNI开发流程

[复制链接]
发表于 2019-10-16 16:21:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一、什么是JNI
Java以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决Java对本地操作的一种方法就是JNI。JNI是Java native interface的简写,意为Java本地调用,它允许Java代码和其他语言写的代码进行交互,从Java1.1开始,JNI标准成为Java平台的一部分。
     使用Java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,与硬件、操作系统进行交互,或者为了提高程序的性能。
二、平台以及环境
(1)开发平台
Linux系统或者虚拟机。
注意:因为涉及到LINUX下的HID接口,所以保证开发的系统内核在2.6版本以上。
(2)开发包
1):安装gcc和g++,保证两个版本一致。
安装指令:
yum install gcc
yum install gcc-c++
查版本指令:
g++ --version
gcc --version
2):安装jdk环境。具体可以上网上找资料。
以debian系统为例,在终端运行的安装指令如下:
sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install default-jdk
三、开发步骤
1)、创建一个Java程序(如LKT5103AJni.java)定义原生的c/c++函数。
2)、用javac编译(指令:javac LKT5103AJni.java) LKT5103AJni.java生成 LKT5103AJni.class。
3)、用javah带-jni参数编译(指令:javah -jni LKT5103AJni) LKT5103AJni.class生成 LKT5103AJni.h文件,该文件中 定义了c的函数原型。在实现c函数的时候需要。
4)、创建LKT5103AJni.c,实现LKT5103AJni.h定义的函数。
5)、编译LKT5103AJni.c生成libLKT5103AJni.so。
指令:gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include/ -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux -fPIC -shared -o libLKT5103AJni.so LKT5103AJni.c
6)、创建testJni.Java,实现测试jni接口。
7)、编译testJni.java(指令:javac testJni.java)。
8)、运行测试代码。
(指令:export LD_LIBRARY_PATH=./   
java testJni   
或者:
java -Djava.library.path=. testJni)
发表于 2019-10-17 14:33:27 | 显示全部楼层
JNI主要还是举例子,举例子直观
发表于 2019-10-17 15:32:14 来自手机 | 显示全部楼层
LKT5103A好像在网上看到过,具体谁家的产品记不太清了……
发表于 2019-10-17 16:43:55 | 显示全部楼层
凌科芯安的,我们公司就在用呢,技术服务很到位
发表于 2019-10-17 16:47:35 | 显示全部楼层
本帖最后由 苍茫的天涯是 于 2019-10-17 16:49 编辑

这套开发流程挺好的,说的很详细,已经推荐给我们技术部门了

发表于 2019-10-17 16:55:54 | 显示全部楼层
插入图片更形象生动,每一步都配上初始图片和结果图,显得更好。排版建议插入图片。
头像被屏蔽
发表于 2019-10-17 16:58:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-10-17 17:15:42 来自手机 | 显示全部楼层
很不错学习了,但是为什么要求内核是2.6版本以上。低版本也支持HID协议啊?

点评

Linux 2.6内核中包含了HID驱动,能够自动把U*** Key等HID外设识别成“/dev/hiddev0”之类的设备。但是该驱动没有实现write接口,因此无法象Windows平台那样使用 ReadFile和WriteFile来读写HID设备,而只能使用ioc   发表于 2019-10-17 19:36
 楼主| 发表于 2019-10-17 19:34:39 | 显示全部楼层
 Linux 2.6内核中包含了HID驱动,能够自动把USB Key等HID外设识别成“/dev/hiddev0”之类的设备。但是该驱动没有实现write接口,因此无法象Windows平台那样使用 ReadFile和WriteFile来读写HID设备,而只能使用ioctl接口。
发表于 2019-10-18 21:47:00 | 显示全部楼层
文中的LKT5103A 是楼主新推出的一款产品吧,能简单介绍一下功能吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 05:00 , Processed in 0.021305 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表