E:\AndroidStudio\sdk\ndk-bundle\ndk-build
SVN:http://192.168.200.30/svn/appdevelopfour/bio.sdk/trunk/BiometricSDK/
http://dragonsea.zhu@code.xmzkteco.com/cooperation-project/new-firmware/PC_adb
(固件一体化)http://code.xmzkteco.com/
https://121.12.147.154/issues/61892 admine dragonsea.zhu 12377777
http://redmine.xmzkteco.com:8000/issues/97075
http://1.1.1.3/ac_portal/20170119172540/pc.html?template=20170119172540&tabs=pwd&vlanid=0&url=http://www.gstatic.com%2fgenerate_204
msdn
======================================================================================================================================================
/usb host支持的系统配置文件 http://blog.csdn.net/trbbadboy/article/details/8929673
同样遇到这样的问题,我的Android设备是原道N12C,官方的4.0.3系统,遇到这个问题,后来找了半天找到的,现在汇总一下吧:
1、创建 android.hardware.usb.host.xml,
内容为:
<permissions>
<feature name="android.hardware.usb.host"/>
</permissions>
将该文件push到/system/etc/permissions目录下
2、在/system/etc/permissions下的handheld_core_hardware.xml或者tablet_core_hardware.xml文件的<permissions>段中添加:
<feature name="android.hardware.usb.host" />
重启设备
3、修改AndroidManifest.xml文件,添加以下权限(很关键):
<uses-permission android:name="android.hardware.usb.host" />
<uses-permission android:name="android.hardware.usb.accessory" />
======================================================================================================================================================
4、枚举设备的代码例子:
[html] view plain copy print?
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Log.e(TAG, "get device list = " + deviceList.size());
Toast.makeText(this, "get device list = " + deviceList.size(), 200).show();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
Log.e(TAG, "device name = " + device.getDeviceName());
}
======================================================================================================================================================
UDK
readUsserInfo 内存分配以写死 6M
======================================================================================================================================================
unsigned char data[4];
int actual_length;
int r = libusb_bulk_transfer(handle, LIBUSB_ENDPOINT_IN, data, sizeof(data), &actual_length, 0);
if (r == 0 && actual_length == sizeof(data)) {
// results of the transaction can now be found in the data buffer
// parse them here and report button press
} else {
error();
}
======================================================================================================================================================
20R sdk 只能用10.0
指静脉 不能缓存
======================================================================================================================================================
tolnet 192.168.0.152
name :root
passwd :solokey
======================================================================================================================================================
lftp -c 'put main -o ftp://root:solokey@192.168.0.152/'
lftp -c 'put test.txt -o ftp://user:password@ftpserver/'
======================================================================================================================================================
googl protocol buf
======================================================================================================================================================
adb push D:\log\log.txt
======================================================================================================================================================
需要在Hello.so前添加lib,否则找不到.so文件(libHello.so),运行的时候需要指定.so的路径:
java -Djava.library.path=/homw/user/so所在目录 -jar Hello.jar
======================================================================================================================================================
sudo ifconfig eth0 hw ether 00:0c:29:c7:85:a3 00:23:9e:03:cc:70
sudo ifconfig eth0 hw ether 00:17:61:D2:54:0D 00:50:56:32:87:8d
00 50 56 32 87 8d
eth0 Link encap:Ethernet HWaddr 00:50:56:32:87:8d (x64)
zkface3.3.2 00:0C:29:AE:19:45
sudo ifconfig eth0 hw ether 00:0C:29:AE:19:45 00:50:56:32:87:8d
======================================================================================================================================================
//15.0 流程图
我以为是10.0的
15.0接口很简单,连接设备后
登记模板的流程(登记是同步接口,按压三次手指返回登记模板)
登记是阻塞函数,按压手指状态通过FingerprintCaptureListener.OnCapture(index)返回第几次按压,一般在线程中调用
2,比对有两种形式
2.1 同步接口 verifyByFeature
上传二代证模板,等待10s知道比对成功或者超时
2.2 异步接口uploadFeature+getVerifyResult
a) 读取身份证成功后 uploadFeature,上传模板
b) 循环调用getVerifyResult (异步接口,立即返回)
1 表示成功
-106 未按压手指
-99 比对失败
其他失败
======================================================================================================================================================
直接链接libzkfv.so 编译源码 生成可执行文件a.out
隐式链接 libMYZKFV.so 隐式链接libzkfv.so 编译生成可执行文件 a2_1.out
隐式链接 libMYZKFV.so (libzkfv.so已经被显示加载) 编译生成可执行文件 a2_2.out
======================================================================================================================================================
15.0算法
USB还是串口?
USB的话可以采集指纹图像,本来二代证15.0模块没支持的
不过协议上有,接口也保留着
imageBuffer = new byte[256 * 360];
imageAttributes = new int[2];
ret = fingerprintSensor.retrieveLastImage(index, imageBuffer, imageAttributes);
if (ret > 0)
{
采集成功
imageAttributes[0]:宽
imageAttributes[1]:高
Bitmap mBitMap = ToolUtils.renderCroppedGreyScaleBitmap(imgBuffer, attributes[0], attributes[1]);
}
比对失败返-106 时调用,可以获取到比对失败的图像
比对过程的其他时候没按压,不用获取
======================================================================================================================================================
身份证指纹数据不能转化为图片。公安部要求不然乱套。
身份证15.0 算法可以一同传1024两个模板
======================================================================================================================================================
指令123 返回-98(FreeDom问题)
======================================================================================================================================================
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;E:\AndroidStudio\sdk\platform-tools\
============================================================================================================================================================================================================================================================================================================
实际长度 k*g*3 ,
解析整个数据 获取先解析头部, 然后解析提取加密后的数据。然后解密数据 然后获取宽高。 然后得出实际数据 3宽高
======================================================================================================================================================
linux 3.0以后 usbfs改为debugfs了
======================================================================================================================================================
15.0模块只用到OnCapture(index)
index表示第几次按压
getVerifyResult
不阻塞
没有按压会立即返回-106 ,没有按压手指
======================================================================================================================================================
System.out.println(System.getProperty("java.library.path"));
检查下Java库目录,放到这里面的目录也行
======================================================================================================================================================
strings /usr/lib/libc.so.6 | grep GLIBC |tail -n 8
======================================================================================================================================================
objdump -T **
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");降低版本依赖
======================================================================================================================================================
sudo dd if=/dev/zero of=/home/dragon/sda2/swap bs=1024 count=1024000
======================================================================================================================================================
前台都用1:1
1:N不适用于浏览器这一端。如果在前台1:N。相当于每次打开页面要同步所有数据到前端
一般B/S 配合后台比对用
======================================================================================================================================================
704b000000000000000000bb0a
704B000000000000000000BB0A
00:17:61:20:03:0A//梁工原来设备id
======================================================================================================================================================
tftp -r thing -g ip
tftp -l thing -p ip
telnet 192.168.215.67
======================================================================================================================================================
http://127.0.01:22001/zkbioonlinux/info
192.168.81.145:22001/zkbioonlinux/info
192.168.81.145:22001/ZKBIOOnline/info
======================================================================================================================================================
./configure CC=mips64el-redhat-linux-gcc --build=x86_64-linux --host=mips64el-redhat-linux --prefix=$PWD/_install
./configure CC=mips64el-redhat-linux-gcc --build=x86_64-linux --host=mips64el-redhat-linux --prefix=$PWD/_install --enable-shared --enable-static
--enable-shared --enable-static :指定是否要生成动态库、静态库、或者la文件
======================================================================================================================================================
ZZZ目录下:(单功能模块)
1,[add模块]
g++ -g -shared -fPIC add/add.* -o libadd.so
2, [sub模块]:(单功能模块)
g++ -g -shared -fPIC sub/sub.* -o libsub.so
3, [calc模块]: clac模块依赖于add和sub模块,用到了两者的头文件,并调用了接口
错误:g++ -g -shared -fPIC -Iadd -Isub calc/calc.* -o libcalc.so
(编译虽然可以过,但是参数不足,这种遗漏依赖库的问题现在不解决,在编译嵌套它的上层库时就会暴露出来)
正确:g++ -g -shared -fPIC -Iadd -Isub -ladd -lsub -L. calc/calc.* -o libcalc.so
4, [pkg模块]:封装calc模块
错误:g++ -g -shared -fPIC -Icalc pkg/pkg.* -o libpkg.so
正确:g++ -g -shared -fPIC -Icalc -lcalc -L. pkg/pkg.* -o libpkg.so
5, [main程序]
g++ -g -Ipkg -lpkg -L. main.cpp -o main
======================================================================================================================================================
在Ubuntu14.04 64位中通过终端安装ndkr10d:
创建文目录ndk 指令为: mkdir ndk
将可执行文件android-ndk-r10d-linux-x86_64.bin 拷贝到 ndk 目录中
在ndk目录下执行输入指令: ./android-ndk-r10d-linux-x86_64.bin
输入指令sudo vi /etc/profile 打开profile文件,在此文件最后加入三行代码 其中的 /home/ndk 替换成ndk目录在你的系统中的真实路径
export NDKROOT=/home/ndk/android-ndk-r10d
export PATH=$NDKROOT:$PATH
export NDKBIN=/home/ndk/android-ndk-r10d/toolchains/aarch64-linux-android-4.9/prebuilt/linux-86_64/bin
退出保存文件 输入指令: source /ect/profile
在任意目录下输入指令: ndk-build 显示android ndk等相关信息,说明配置NDK成功
将Application.mk文件中的APP_ABI赋值为:APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a x86_64 mips64
进入工程jni目录 执行指令: ndk-build
======================================================================================================================================================
有时候会存在jni导致内存怪异,获取数据后,重新分配一个固定的空间然后再可以用memcpy()进行一下内存拷贝。
======================================================================================================================================================
对,9500 的这套SDK跟PC的二代证SDK流模式不一样
这个是探测模式,固件他测到有手指才返回图像,才会触发到这里
如果是用流模式的话,那么没按手指也会返回图像
======================================================================================================================================================
dmesg > boot.messages
======================================================================================================================================================
gcc编译可以不需要头文件,g++编译需要头文件
======================================================================================================================================================
查看5037端口被谁占用了 netstat -aon|findstr "5037" (能看到相关的PID)
我们需要根据后面的PID(2748)来查找占用该端口的应用程序,输入 tasklist|findstr "2748"
结束该进程,输入taskkill /f /t /im 你的进程名,例如adb.exe
======================================================================================================================================================
192.168.81.142 ubunto32
======================================================================================================================================================
然后把设备端时间调一下date -s "2018.04.20-21:58:00"
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================
======================================================================================================================================================