# jwd
**Repository Path**: qzcwxh/jwd
## Basic Information
- **Project Name**: jwd
- **Description**: deepin unicode ide
默认启动一个jaVA工程,计算一个整数经纬度坐标输出为小数
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-25
- **Last Updated**: 2026-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# deepin unicode ide
默认启动一个jaVA工程,计算一个整数经纬度坐标输出为小数
# 默认打包不能运行,pom文件没有指定主类
在pom里增加插件
maven-assembly-plugin
com.example.App
jar-with-dependencies
package
single
org.apache.maven.plugins
maven-jar-plugin
3.2.0
true
com.example.App
secmServerService.deviceAuthorize
# 编译
mvn clean package -DskipTests
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类
mvn clean package -Dmaven.test.skip=true
# 然后下面命令可以运行
javac com/example/App.java
cd target/classes
jar -cvfm jwd2.jar ../../MANIFEST.MF com/example/App.class
错误: 找不到或无法加载主类 ..jwd2.jar
java -jar -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar ./target/jwd2-1.0.jar 34.846427 32.099219
java -jar -cp ./location-1.0.jar:./gson-2.8.9.jar ./jwd2.jar 34.846427 32.099219
下面是正确的命令
java -cp ./jwd2.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 34.846427 32.099219
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 34.846427 32.099219
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 34.760048 32.056119
# 或者命令行也可以
cd ./target/classes
java com.example.App
或者
sudo java -cp ./target/classes com.example.App
加参数运行
java -cp ./target/classes com.example.App 034846427 032099219 034407651 031358343
java -cp ./target/classes com.example.App 032099219034846427 034407651 031358343
java -cp ./target/classes com.example.App 默认坐标点是zone外 能返回fail
java -cp ./target/classes com.example.App 34.846427 32.099219 zone内能返回 OK
增加了第三方依赖jar
mvn install:install-file -Dfile=./location-1.0.jar -DgroupId=com.ewivt.redline -DartifactId=location -Dversion=1.0 -Dpackaging=jar
mvn install:install-file -Dfile=./gson-2.8.9.jar -DgroupId=com.google.code.gson -DartifactId=gson -Dversion=2.8.5 -Dpackaging=jar
java -cp /home/qiaozc/Documents/dsly/addc/jwd/target/classes:/home/qiaozc/Documents/dsly/addc/jwd/location-1.0.jar:/home/qiaozc/Documents/dsly/addc/jwd/gson-2.8.9.jar com.example.App 34.846427 32.099219
java --class-path /home/qiaozc/Documents/dsly/addc/jwd/target/classes:/home/qiaozc/Documents/dsly/addc/jwd/location-1.0.jar:/home/qiaozc/Documents/dsly/addc/jwd/gson-2.8.9.jar com.example.App 34.846427 32.099219
cd ./target/classes
java -cp .:./../../location-1.0.jar:./../../gson-2.8.9.jar com.example.App 34.846427 32.099219
# c语言实现编译
gcc -o jwd ./jwd.c -lm
double lat1 = 37.86236; // 第一个点的纬度
double lon1 = 113.58762378623; // 第一个点的经度
double lat2 = 38; // 第二个点的纬度,例如:北京的纬度大约为39.9042°N,这里为了示例简单,我们使用一个简化的值。实际应用中应使用具体的经纬度坐标。
double lon2 = 116; // 第二个点的经度,例如:北京的经度大约为116.4074°E。同样,这里使用了一个简化的值。
./jwd 37.86236 113.58762 38 116
./jwd 031358343 034407651 032099219034846427
增加转long到hex
./jwd 2033371883
# 其他保留2位小数
https://www.jb51.net/program/32466648o.htm
# 999范围内的坐标点
30.083244,28.17804, ok
0 29.630135,29.108542, f
0 29.829503,31.146234, ok
0 30.019809,31.91094, ok
0 30.699471,32.187456, ok
0 31.714433,32.179787, ok
0 32.576393,32.089563, ok
0 33.201322,33.009803, ok
0 33.424165,33.388486, ok
0 33.821406,33.881181, ok
0 34.276781,34.272079, OK
0 34.737,34.268007, OK
0 35.793081,34.088845, OK
0 36.318012,33.881518, OK
0 37.912953,33.693227, OK
0 38.52918,33.322979, OK
0 38.619802,32.409597, F
0 38.52918,31.602722, F
0 38.130445,30.156156, F
0 37.822332,29.084786, F
0 37.296726,28.305774, F
0 35.212428,27.986153, F
0 33.735296,27.986153, F
0 31.188828,27.986153, F
0 30.083244,28.17804 OK
符合的坐标点
30.083244 28.17804
0 29.630135 29.108542
不符合的坐标点
38.619802 32.409597
35.212428 27.986153
33.735296 27.986153
31.188828 27.986153
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 30.083244,28.17804 29.630135,29.108542 29.829503,31.146234 30.019809,31.91094 30.699471,32.187456
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 31.714433,32.179787 32.576393,32.089563 33.201322,33.009803 33.424165,33.388486 33.821406,33.881181
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 34.276781,34.272079 34.737,34.268007 35.793081,34.088845 36.318012,33.881518 37.912953,33.693227
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 38.52918,33.322979 38.619802,32.409597 38.52918,31.602722 38.130445,30.156156 37.822332,29.084786
java -cp ./target/jwd2-1.0.jar:./location-1.0.jar:./gson-2.8.9.jar com.example.App 37.296726,28.305774 35.212428,27.986153 33.735296,27.986153 31.188828,27.986153 30.083244,28.17804
更新1.1 注意java的参数和c参数顺序不同
java -cp ./target/jwd2-1.0.jar:./location-1.1.jar:./gson-2.8.9.jar com.example.App 37.296726,28.305774
java -cp ./target/jwd2-1.0.jar:./location-1.1.jar:./gson-2.8.9.jar com.example.App 35.212428,27.986153
java -cp ./target/jwd2-1.0.jar:./location-1.1.jar:./gson-2.8.9.jar com.example.App 032099219034846427 034983092 032805341
java -cp ./target/jwd2-1.0.jar:./location-1.1.jar:./gson-2.8.9.jar com.example.App 032805341034983092 034983092 032805341
# 增加lazarus版本计算
./pcoordinate/project1 34.846427 32.099219 34.983092 32.805341
./pcoordinate/project1 032805341 034983092 032099219034846427
编辑器 颜色 背景色 更新钱绿
环境 对象查看器 背景更新钱绿
停靠窗体编辑器 背景更新钱绿
字体 更新为等宽文泉译 微米黑
编辑器 显示 右边界 从 80改为140
vscode 终端也能定制颜色 修改 ctrl+shit+p 打开open user settings(json )
vscode xml文件也能格式化,安装插件xml tools,重启即可下次保存时自动格式化
# 增加test.java
运行 java -cp ./target/jwd2-1.0.jar test 或者 java -cp ./target/classes test
或者加参数 java -cp ./target/classes test 3237560245
增加parsedata 分析卡事件数据 java -cp ./target/classes ParseData
# 增加检票事件解析
编译 mvn clean package -Dmaven.test.skip=true
运行 java -cp ./target/classes ParseData 1 02c683a208e7e34411cfcee4eeeeeaea1ce000208a2f32337324096020 检票
java -cp ./target/classes ParseData 1 03063ba1f9de1343f3b51ee4eeeee207e9000000000000000000000000 加载合约事件
java -cp ./target/classes ParseData 1 02c29ba208f6d34411eda4e4eeeeea2a1da788ff937000000000000000 红线加载合约事件
java -cp ./target/classes ParseData 0 06ec0a316dc8be3d54391962010100000000000000000944aa1c000000 卡环境
java -cp ./target/classes ParseData 2 0C4C8B2C69D9BC440181039A323C0000000000000000000000000000BF 合约
java -cp ./target/classes ParseData 2 0B9B0B202A326D20030228C99428FC00000000000000000000000000C1 日合约
java -cp ./target/classes ParseData 2 0B9B0B202A326D20040228E790283C00000000000000000000000000C3 月合约
java -cp ./target/classes ParseData 2 0B9B0B281A326D20028103901CBC0000000000000000000000000000C5 计次
20241104 完善事件解析
java -cp ./target/classes ParseData 1 00a423a2c3ea134587d4240eeeeeea6c5a00024cb13220800000000000
java -cp ./target/classes ParseData 1 00a423a2c1113b458222740eeeeeea7076e0014f103220800000000000
java -cp ./target/classes ParseData 1 02c283a2c420f3458841e4eeeeeeea69f5f0d42618b233732412c04000
最后验算 (locationMap & 4) > 0 才要 ValidOnEntry
java -cp ./target/classes ParseData 1 02c483a2bbe9eb4577d3d40eeeeeeaea1ca000206a117fb37000000020
java -cp ./target/classes ParseData 1 01e23ba2c41a2000000004eeeeeee207e9000000000000000000000000
java -cp ./target/classes ParseData 1 02c293a2c420e800000004eeeeeee229f5e61893700000000000000000
java -cp ./target/classes ParseData 1 00A623A2F8565B45F0ACB440EEEEEA72C880052FBE3220800000000000
# 增加解析6个事件原始数据 20250730
java -cp ./target/classes ParseData 3
根据/home/qzc/Documents/dsly/addc/jwd/src/events.txt
生成/home/qzc/Documents/dsly/addc/jwd/src/events.csv
20250802 更新解析合约
# 增加uno8串口通信
linux开发机器编译 gcc -o detect ./detect.c
android编译 /home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o detect ./detect.c -llog -landroid -lusb-1.0 -lusbaccess
报错 Android 5.0 a
d later only support position-independent executables (-fPIE)
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o detectemv ./detect.c -fPIE -pie
adb push detectemv /data/data/detectemv
adb shell chmod 777 /sdcard/detectemv
# 有效的控制命令
2 detect ravkav card (DF 7E ):02 0A 00 3E DF 7E 01 03 95 03
答复 0225003eff011cfc1adf160142df1304
c0f93fb5df140c50c0f93fb500000000
007171c803 卡号 c0f93fb5 (3237560245)
1 detect emv card (FD 11):02 19 00 3E FD 11 9F 02 06 00 00 00 00 02 00 9A 03 24 10 12 9C 01 00 72 03
答复 数据较少长度81打头(大于127小于256)
0208003e00003403
0281b4003eff0181a9fc81a6500b5669
73612043726564697457134557430402
258014d29122011991593312003f8202
0020950500000000009a032410129c01
005f2002202f5f3401009f0206000000
0002009f100706041203a020009f1a02
08409f26082b7e241b2a7ca5d19f2701
809f33030068c09f34033f00009f3501
259f3602003c9f370440dbd78f9f3901
079f6e0420700000df690180df812d01
088407a00000000310105f360102df69
01802603 卡号 4557430402258014 有效期 2912
另外一种答复 数据更多超过256 长度是82打头
02 08 00 3E 00 00 34 03 02 27 00 3E FF 01 1E DF
46 1B 41 6D 6F 75 6E 74 3A 20 32 2E 30 30 20 0D
0A 50 72 65 73 65 6E 74 20 63 61 72 64 0B 03 02
82 01 3C 00 3E FF 01 82 01 2F FC 82 01 2B 4F 07
A0 00 00 00 03 10 10 50 0B 56 69 73 61 20 43 72
65 64 69 74 57 13 45 57 43 04 02 25 80 14 D2 91
22 01 19 91 59 33 12 00 3F 5A 08 45 57 43 04 02
25 80 14 82 02 20 20 84 07 A0 00 00 00 03 10 10
95 05 00 00 00 00 00 9A 03 24 10 12 9B 02 00 00
9C 01 00 5F 24 03 29 12 31 5F 34 01 00 9F 02 06
00 00 00 00 02 00 9F 09 02 00 8C 9F 10 07 06 04
12 03 A0 00 00 9F 16 0F 41 42 43 44 45 46 47 48
49 4A 4B 4C 4D 4E 4F 9F 1A 02 03 76 9F 26 08 1E
AF FE 0C B1 34 E6 38 9F 27 01 80 9F 33 03 00 08
40 9F 34 03 3F 00 00 9F 35 01 25 9F 36 02 00 67
9F 37 04 AD 6E 14 99 9F 39 01 07 9F 40 05 40 00
00 10 00 9F
FF 01 成功
DF 46 1B External Display (Amount: 2.00 Present card )
(41 6D 6F 75 6E 74 3A 20 32 2E 30 30 20 0D 0A 50 72 65 73 65 6E 74 20 63 61 72 64)
4f 07 aid 和长度 (A0 00 00 00 03 10 10 )
50 0B Application Label 和长度 (56 69 73 61 20 43 72 65 64 69 74) Visa Credit
57 13 Track 2 Equivalent Data 45 57 43 04 02 25 80 14 D2 91 22 01 19 91 59 33 12 00 3F
5A 08 Application PAN 和长度(45 57 43 04 02 25 80 14)
82 02 Application Interchange Profile 和长度 (20 20)
84 07 DF Name 和长度 (A0 00 00 00 03 10 10)
95 05 Terminal Verification Results 和长度(00 00 00 00 00)
9A 03 Transaction Date 和长度 (24 10 12)
9B 02 Transaction status info 和长度(00 00)
9C 01 Transaction Type 和长度(00 )
5F 20 03 Cardholder Name 和长度(20 2F )
5F 24 03 Application Expiration Date 和长度(29 12 31 )
5F 34 01 Application PAN Sequence Number 和长度(00 )
9F 02 06 Amount 和长度(00 00 00 00 02 00 )
9F 09 02 Application Version Number (Reader) 和长度(00 8C)=140
9F 10 07 Issuer Application Data和长度(06 04 12 03 A0 00 00 )
9F 16 0F Merchant Identifier 和长度( 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F)
9F 1A 02 Terminal Country Code 和长度(03 76)代表iseral 886
9F 26 08 Application Cryptogram 和长度(1E AF FE 0C B1 34 E6 38)
9F 27 01 Cryptogram Information Data 和长度( 80 )
9F 33 03 Terminal Capabilities 和长度 00 08 40
9F 34 03 CVM Results 3F 00 00
9F 35 01 Terminal Type 25
9F 36 02 Application Transaction Counter 00 67
9F 37 04 Unpredictable Number AD 6E 14 99
9F 39 01 POS Entry Mode 07
9F 40 05 Additional Terminal Capabilities 和长度 40 00 00 10 00
9f 6e 04 Third Party Data 和长度 20 70 00 00
df 69 Card Authentication Related Data 80
84 DF Name (A0 00 00 00 03 10 10)
5F 36 Transaction Currency Exponent (02)
DF8168 02 0010 //Partial PAN
4 得到序列号命令 (DF 4D) 02 09 00 3D DF 4D 00 A4 03
答复 02 14 00 3D FF 01 0B DF 4D 08 00 13 02 26 00 1C 9C B3 40 03
序列号 00 13 02 26 00 1C 9C B3 (BOM version )13 (Partial PN)02 26 (Unique ID) 00 1C 9C B3
经验证成功 文档中校验A6不是A4 所以失败 最后是 no_ack 02070015031303
0 得到ActiveApplicationVersion版本 (DF 4E) 02 0A 00 3D DF 4E 01 01 A4 03
答复 02 16 00 3D FF 01 0D DF 4E 0A 53 38 5F 76 30 35 33 31 32 38 0E 03
有效数据 S8_v053128 (53 38 5F 76 30 35 33 31 32 38)
S8_v054151 (53 38 5F 76 30 35 34 31 35 31)
参数不用01用00 得到通信版本
得到通信版本命令 02 02 0A 00 3D DF 4E 01 00 A5 03 校验位需要修正
答复(DF 4E 2A后面内容长度42):(OTI Host-PCD Communication Protocol: 02.55)
02 08 00 3D 00 00 37 03
02 36 00 3D FF 01 2D DF 4E 2A 4F 54 49 20 48 6F
73 74 2D 50 43 44 20 43 6F 6D 6D 75 6E 69 63 61
74 69 6F 6E 20 50 72 6F 74 6F 63 6F 6C 3A 20 30
32 2E 35 35 09 03
3 控制led灯 (DF 83 60)(patterns.TXT 配置才有正确执行)
3号灯闪5下 Blink LED 02 10 00 3E DF 83 60 06 03 01 00 32 0A 05 29 03
答复 02 0D 00 3E FF 01 04 DF 83 60 00 F7 03
失败答复 02 0E 00 3E FF 03 05 DF 83 60 01 02 F4 03
6 Buzzer Start Pattern (DF 83 61)
蜂鸣器开始播放 0x02, 0x12, 0x00, 0x3e, 0xdf, 0x83, 0x61, 0x08, 0x01, 0x01, 0x0A, 0x00, 0x3A, 0x14, 0x32, 0x02, 0x0F, 0x03
答复
5 得到targetid (02 08 00 3D C2 00 F5 03 ) 7.1
经验证 02 08 00 3D 00 00 37 03
02 23 00 3D FF 01 1A C2 18 30 00 20 00 40 00 80 01 00 00 90 00 20 10 10
60 00 81 30 40 20 10 10 01 F3 03
得到id eln=24(30 00 20 00 40 00 80 01 00 00 90 00 20 10 10 60 00 81 30 40 20 10 10 01)
(3 00 02 00 04 00 08 00 10 00 0 90 00 2010 10 60 00 81 30 40 20 10 10 01)
3 Formatversion 2 (Product family=8xxx) 4(Product variant=8700) 8(CPU model=F405) 10(1 PCB version=v1.0 or v1.1=2)
(0 00 90 00 20 10 10 60 00 81 30 40 20 10 10 01)( OTI Internal Data)
7 进入升级模式
0209003EDF4000AA03
答复 02 08 00 3E 00 00 34 03
02 0C 00 3E FF 01 03 DF 40 00 52 03
8 应用更新的固件包
0209003EDF6E008403
答复 会有一声响
02 08 00 3E 00 00 34 03
9 重置pcd
0x02, 0x09, 0x00, 0x3e, 0xdf, 0x19, 0x00, 0xf3, 0x03
10 GetFileSystemInfo 5.2.17 page45
020B003EDF8302011F7703
答复
02 08 00 3E 00 00 34 03 02 81 88 00 3E FF 01 7E
DF 83 02 7A 46 53 20 49 6E 66 6F 72 6D 61 74 69
6F 6E 3A 20 53 45 47 47 45 52 0D 56 65 72 73 69
6F 6E 3A 20 31 30 30 30 31 0D 53 69 7A 65 20 5B
4B 42 5D 3A 20 36 37 30 35 20 0D 46 72 65 65 20
5B 4B 42 5D 3A 20 35 30 37 30 20 0D 44 69 72 74
79 20 73 65 63 74 6F 72 73 3A 20 39 31 0D 46 61
73 74 20 43 68 65 63 6B 20 46 6F 72 20 45 6D 70
74 79 20 53 65 63 74 6F 72 73 3A 20 59 0D FF 03
翻译出来:
FS Information: SEGGER
Version: 10001
Size [KB]: 6705
Free [KB]: 5070
Dirty sectors: 91
Fast Check For Empty Sectors: Y
11 Main App module version 8.2 page51
020B003DDF822501084503
得到回复 Application_v054151
02 08 00 3D 00 00 37 03 02 20 00 3D FF 01 17 DF
82 25 13 41 70 70 6C 69 63 61 74 69 6F 6E 5F 76 30 35 34 31 35 31 EA 03
30 35 34 31 35 31 EA 03
020B003DDF822501034E03
回复 FrameWork_v54149_RF_SIMUL
02 08 00 3D 00 00 37 03 02 26 00 3D FF 01 1D DF
82 25 19 46 72 61 6D 65 57 6F 72 6B 5F 76 35 34
31 34 39 5F 52 46 5F 53 49 4D 55 4C A9 03
020B003DDF822501004D03
回复 Base_v050104
02 08 00 3D 00 00 37 03
02 19 00 3D FF 01 10 DF82 25 0C 42 61 73 65 5F 76 30 35 30 31 30 34 A0 03
020B003DDF822501014C03
回复 Boot_Loader_v051723
02 08 00 3D 00 00 37 03
02 20 00 3D FF 01 17 DF 82 25 13 42 6F 6F 74 5F 4C 6F 61 64 65 72 5F 76 30 35 31 37 32 33 EE 03
020B003DDF822501024F03
回复 Boot_Changer_v051723
02 08 00 3D 00 00 37 03
02 21 00 3D FF 01 18 DF 82 25 14 42 6F 6F 74 5F 43 68 61 6E 67 65 72 5F 76 30 35 31 37 32 33 82 03
020B003DDF822501044903
回复 EntryPoint_v050131
02 08 00 3D 00 00 37 03
02 1F 00 3D FF 01 16 DF 82 25 12 45 6E 74 72 79 50 6F 69 6E 74 5F 76 30 35 30 31 33 31 95 03
020B003DDF822501054803
回复 EmvCommon_v050116
02 08 00 3D 00 00 37 03
02 1E 00 3D FF 01 15 DF 82 25 11 45 6D 76 43 6F 6D 6D 6F 6E 5F 76 30 35 30 31 31 36 FA 03
020B003DDF822501064B03
回复 TagHandler_v050114
02 08 00 3D 00 00 37 03
02 1F 00 3D FF 01 16 DF 82 25 12 54 61 67 48 61 6E 64 6C 65 72 5F 76 30 35 30 31 31 34 80 03
020B003DDF822501074A03
回复 L1_Cless_v051007RF_SIMUL
02 08 00 3D 00 00 37 03
02 25 00 3D FF 01 1C DF 82 25 18 4C 31 5F 43 6C 65 73 73 5F 76 30 35 31 30 30 37 52 46 5F 53 49 4D 55 4C DF 03
020B003DDF822501094403
回复 Test_Kernel_1_v050123
02 08 00 3D 00 00 37 03
02 22 00 3D FF 01 19 DF 82 25 15 54 65 73 74 5F 4B 65 72 6E 65 6C 5F 31 5F 76 30 35 30 31 32 33 87 03
020B003DDF8225010A4703
回复 Test_Kernel_2_v050123
020B003DDF8225010B4603
回复 Payment_Kernel2_v050122 MasterCard
02 08 00 3D 00 00 37 03
020B003DDF8225010C4103
回复 Payment_Kernel3_v050123 Visa
12 Get Device Status
020A003DDFA10E004503
回复 00:Readytowork 01:SafeMode-undefined reason 02:Toomanycombinations 03:HardFault 04:Outofheap(MallocFailure) 05:StackOverflow 06:Watchdog 07:Canaiesoverwritten 08:Bootmode
02 08 00 3D 00 00 37 03 02 0E 00 3D FF 01 05 DF A1 0E 01 00 BB 03
13 PICC Presence Check
先polling ravkav卡,再用此命令,假如卡移走,则有回复,卡还在没有df a2 08的回复,只有一个ack
020A003EDFA208004303
02 08 00 3E 00 00 34 03 (02 0D 00 3E FF 01 04 DF A2 08 00 BE 03)
14 Get Directory List Command
0214003EDF822F0A5C5C434F4E4649475C5C5A03
回复 DEFCFG05.UCF DEFCFG05.DCF MESSAGES.TXT PATTERNS.TXT
02 08 00 3E 00 00 34 03 02 46 00 3E FF 01 3D DF
82 2F 39 2E 0A 2E 2E 0A 44 45 46 43 46 47 30 35
2E 55 43 46 0A 44 45 46 43 46 47 30 35 2E 44 43
46 0A 4D 45 53 53 41 47 45 53 2E 54 58 54 0A 50
41 54 54 45 52 4E 53 2E 54 58 54 0A CE 03
15 Get File Size Command (\\CONFIG\\DEFCFG05.UCF)
0220003EDF8231165C5C434F4E4649475C5C44454643464730352E5543461203
回复 (00 00 9E 83 ) 40579
02 08 00 3E 00 00 34 03
02 11 00 3E FF 01 08 DF 82 31 04 00 00 9E 83 AE 03
5.2.10 Get File Information 与getfilesize相似 回复长度多一位
0220003EDF8238165C5C434F4E4649475C5C44454643464730352E5543461B03
回复 Getfilesize length= 5 Attributes=20(1 READ_ONLY,2 HIDDEN,3 SYSTEM,4 DIRECTORY,20 ARCHIVE) size= 40579 data=( 20 00 00 9E 83)
02 08 00 3E 00 00 34 03
02 12 00 3E FF 01 09 DF 82 38 05 20 00 00 9E 83 84 03
16 写配置文件 page36
打开文件5.2.4 写入数据5.2.7 关闭文件5.2.5
打开 0220003EDF823216015C5C434F4E4649475C5C534856415F33312E5543464103
回复 02 0D 00 3E FF 01 04 DF 82 32 00 A4 03
关闭 020A003EDF8233005803
回复 如果有打开文件则回复 ff 01,如果没有 FF 03
02 0D 00 3E FF 01 04 DF 82 33 00 A5 03
18 删除文件 page39 5.2.8 Delete File (\\CONFIG\\USR_BAK.BIN)
021F003EDF8236155C5C434F4E4649475C5C5553525F42414B2E42494E7F03
回复 02 0D 00 3E FF 01 03 DF 82 36 00 A8 03
02 08 00 3E 00 00 34 03
02 0D 00 3E FF 01 04 DF 82 36 00 A0 03
19 恢复配置默认值 page46 6.1.2 Restore Factory Defaults
0209003EDF4C00A603
回复
0208003E00003403
22 GET ‘External Display’ (DF46)
23 SET ‘External Display’ (DF46)
22和23 执行完成,读卡没有明显变化,执行resetcd命令,读卡有回复,显示‘External Display’
24 研究通用串口指令来读写配置
fwupdate 24 value command (value 0-set 0x3c, 1-get 0x3d,2-do 0x3e) (command通用串口指令 )
比如 执行22得到扩展数据 ./fwupdate 24 1 df4600
执行23设置扩展数据 ./fwupdate 24 0 df460102
得到 Visa Crypto Sub-scheme ./fwupdate 24 1 df4900
回复 02 0D 00 3D FF 01 04 DF 49 01 03 5C 03 这里03是代表dcvv+cvn7
设置 Visa Crypto Sub-scheme ./fwupdate 24 0 df490101 01是dcvv 02是从cvn17
得到 Application Version Number ./fwupdate 24 1 9f0900
得到 Terminal Country Code ./fwupdate 24 1 9f1a00
回复 02 0E 00 3D FF 01 05 9F 1A 02 03 76 38 03 这里 0376代表israel的886
声音 ./fwupdate 24 2 df83610801010a003a140001
# 开始升级固件代码验证
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o fwupdate ./fwupdate.c -fPIE -pie
adb push fwupdate /data/data/fwupdate
adb shell chmod 777 /sdcard/fwupdate
运行 升级固件 /data/data/fwupdate 30 /sdcard/data/S8_v054151.OEF
升级配置 ./fwupdate 31 /sdcard/data/SHVA_31.UCF
./fwupdate 31 /sdcard/data/MESSAGES.TXT
./fwupdate 31 /sdcard/data/PATTERNS.TXT
得到文件大小
./fwupdate 15 /sdcard/data/MESSAGES.TXT
./fwupdate 15 /sdcard/data/PATTERNS.TXT
# 优化文件结构组织,提取部分函数到另一个文件
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o fwupdate ./frames.c ./fwupdate.c -fPIE -pie
经验证可以,上传文件和其他接口命令统一用这一个了
# 编译增加版本号
sed -i "53c #define SW_VERSION \"$(date +%Y%m%d%H%M%S)\"" ./frames.h
放在脚本里可能因为空格不行,所以把要替换的放在一个变量,换种写法
-i参数代表修改原文内容而不是输出
# 增加用库方法读emv卡
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o libfwupdate.so ./frames.c ./fwupdate.c -fPIE -shared
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc ./detectemv.c -L. -lfwupdate -fPIE -pie -o detectemv
adb push libfwupdate.so /data/data/libfwupdate.so
adb push detectemv /data/data/detectemv
运行 LD_LIBRARY_PATH=/data/data:$LD_LIBRARY_PATH ./detectemv 25
编译脚本 fwpush.sh
# 验证通用串口数据
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o libfwupdate.so ./frames.c ./fwupdate.c -fPIE -shared
# 验证用库方法更新固件
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o fwupdate ./fwupdate.c -fPIE -pie
adb push fwupdate /data/data/fwupdate
adb shell chmod 777 /sdcard/fwupdate
运行 升级固件 /data/data/fwupdate 30 /sdcard/data/S8_v054151.OEF
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o libfwupdate.so ./frames.c ./fwupdate.c -fPIE -shared
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc ./detectemv.c -L. -lfwupdate -fPIE -pie -o detectemv
adb push libfwupdate.so /data/data/libfwupdate.so
adb push detectemv /data/data/detectemv
运行 LD_LIBRARY_PATH=/data/data:$LD_LIBRARY_PATH /data/data/detectemv 30 /sdcard/data/S8_v054151.OEF
编译脚本 fwpush.sh
# 把Nayax的问题都补充到这个文档里。
https://docs.qq.com/sheet/DRHBBZXp4b0NIZEZm?electronTabTitle=%E9%97%AE%E9%A2%98%E8%A1%A8-Nayax&tab=25siey
# 分析成功的更新串口数据与原本自己的区别
成功的数据包一个1024+17=1041,数据部分就1024? 最后一个包725 这个需要确认下
成功的每发一次就收一次答复(8+0d=21长度) 02 08 00 3E 00 00 34 03 02 0D 00 3E FF 01 04 DF 6C 01 00 78 03
最后一包稍有变化(02代表所有包传完 00代表一个包传完) 02 0D 00 3E FF 01 04 DF 6C 01 01 78 03
经比较我发的返回03,可能有什么没算对,后来发现是每发一个包,要等正确回复才发下一个包,第一个包时间长,要创建文件
# 增加日志功能
/home/qiaozc/program/aarch64-android-toolchain/bin/aarch64-linux-android-gcc -o fwupdate ./log.c ./frames.c ./fwupdate.c -fPIE -pie
运行 升级固件 /data/data/fwupdate 30 /sdcard/data/S8_v054065.Oef
/data/data/fwupdate 30 /sdcard/data/S8_v053128.Oef
/data/data/fwupdate 30 /sdcard/data/S8_v054151.OEF
查看版本 /data/data/fwupdate 0
# 增加读配置文件列表
编译脚本 fwpush.sh
# 运行 LD_LIBRARY_PATH=/data/data:$LD_LIBRARY_PATH /data/data/detectemv 14
# 增加解压缩
编译 mvn clean package -Dmaven.test.skip=true
运行 java -cp ./target/classes test
# 配置kotlin
找到androidstudio的kotlin配到路径
export KOTLIN_HOME=/home/qiaozc/program/android-studio/plugins/Kotlin/kotlinc/bin
export PATH=$PATH:$KOTLIN_HOME
然后启用 source ~/.bashrc
zai vscode里安装插件 Kotlin Language和code runner
然后在项目里新建kotlin文件,就可以写kotlin了
如果run code提示没有找到kotlinc
在vscode的setting.json文件里面添加
"code-runner.executorMap": {
"kotlin": "cd $dir && kotlinc $fileName -include-runtime -d $fileNameWithoutExt.jar && java -jar $fileNameWithoutExt.jar"
}
# 验证更新配置文件
更新文件 /data/data/fwupdate 31 /sdcard/data/CONFIG/SHVA_15.UCF
得到设备里配置文件列表 /data/data/fwupdate 14
20250123 上传配置支持8+3和7+3 增加创建CONFIG文件夹
# 设备配置与新配置可能不匹配导致不读卡
19-Restore Factory Defaults
/data/data/fwupdate 12 正常查看设备状态是 0 准备工作,配置损坏是2
/data/data/fwupdate 14 查看文件配置列表,有没有配置文件
26格式化,然后28创建文件夹,然后上传配置,这样才算修复
/data/data/fwupdate 31 /sdcard/data/MESSAGES.TXT
/data/data/fwupdate 31 /sdcard/data/PATTERNS.TXT
/data/data/fwupdate 31 /sdcard/data/DEFCFG05.DCF
/data/data/fwupdate 31 /sdcard/data/SHVA_15.UCF
/data/data/fwupdate 31 /sdcard/data/SHVA_31.UCF
/data/data/fwupdate 30 /sdcard/data/S8_v054065.Oef
/data/data/fwupdate 30 /sdcard/data/S8_v054151.OEF
得到文件大小 /data/data/fwupdate 15 /sdcard/data/SHVA_15.UCF
删除文件 /data/data/fwupdate 18 /sdcard/data/SHVA_15.UCF
# qubie
雄帝串口通道失败的打印 020E023EDF82358202020200E0098107534856415F3133E1820506DF821082050000009C0000390001009F010000490006009F090000490002009F150000490002009F16000049000F009F1A00003D0002009F1B0000490006009F1C0000490008009F1D0000480008009F1E00012D0008009F330000490003009F3500114D0001009F390000190001009F3C00003D0002009F3D00003D0001009F400000490005009F4E000048003C009F5800013D0001009F590000390003009F5D0000490006009F5E0000390002009F660000410004009F6D000049000200DF05000427000100DF0600002D000100
不用雄帝直接串口升级成功 02820210003EDF82358202020200E0098107534856415F3133E1820506DF821082050000009C0000390001009F010000490006009F090000490002009F150000490002009F16000049000F009F1A00003D0002009F1B0000490006009F1C0000490008009F1D0000480008009F1E00012D0008009F330000490003009F3500114D0001009F390000190001009F3C00003D0002009F3D00003D
固件最后一包
data=0281A7003EDF6C819C0267EBEAD4D2248F22D1F114C0FAB8FC306BAED38161E031330B1CF6AF960D0F05425C9507F1F48A4540EFFC02CA6CBA563A02B472FE07307483172918C48137D57A77FC5002455E686978330F46160033079D135E31182F34082AC162BD4799F15872B6FDE5193D18A633FC82B55374C19D8AB87B03D7D28B07A96454EF9D4471F5B424A8ABB49077DA3B64A2927C2029DBA95F17463C6DACA4B6B5C903
固件普通包
02820411003EDF6C8204040266799F00004A020000C01C3C81DF004AFF0E000114150000004A020000FC04170000004A020000FC041B0000004A020000FC04F10000004A02000080073D81DF004A02000101143E81DF004A02000101143F81DF004AFF0E00FC044081DF004AFF0E00FC044181DF004A02000808144C81DF004AFF0E00FC044381DF0083FF020006144A81DF008AFF020101044681DF004AFF0E00FC044881DF004A02000810044981DF004A02000810042A9F00008A000400080868DF00008AFF0E010104019F000083FF0E060604179F00004BFF0E0101085881DF008A02000101045981DF008A02000101043981DF004AFF0E012204399F00004A84000101042D81DF004A04000101044D81DF004A02000130048A000000480800020204809F00004A22000103086A81DF004AFF0E1010146981DF0042FF0E0101146881DF004AFF0E020204139F00004A0002020208990000008AFF0E01FF14980000004A0002141404970000004A000200FC082D9F00004A000200FF082E9F00004A000200FF082F9F00004A000200FF08880000008A00040001087081DF008AFF0E0108147181DF008AFF0E0101107281DF008AFF0E0530047381DF008AFF0E05300470DF00004AFF0E0101046F81DF004AFF0E0103146781DF004AFF0E00FC147981DF004AFF0E1111147F81DF004AFF0E000104710000004AFF0E00FF14720000004AFF0E00FF142082DF008AFF0E080A1416A1DF008AFF0E16180430A1DF008AFF0E000A0431A1DF008AFF0E00060432A1DF008AFF0E0004040000000000000000000018000000FFFFFFFF000000000000000064000000FFFFFFFF00000000000000000C0000009C7E070800C40120040000007C5D0708A07E07082CC401207C0000007C5D07081C7F0708FCC70120040000007C5D07081C7F0708A8C40120100200008C5D07086655BBAA00000000D400000000000000B4C40120D500000000000000BEC40120D600000000000000D4C401207100000000000000EAC40120720000000000000008C50120910000000000000026C50120E10000000000000044C50120E20000000000000062C501200000000000000000190000000000000000000000000000006655BBAA3AF8680CF982016EDF3D20E1181FEC34F46530179D766B90EFD50A8F0EBDD618560B1FA9BF901956BA48E7DF3E200583862C833F9FAEB9E9028C72ACBB20B0777EB93E9AA05A476AB3755B4A623EDF3F200A07AECCC199499D9296BE86D1AEED8669ACB6C57BC18F5410B5CC4FD418DA94DF378201000CEA734635587C6AE6B6D8CB7A4BB97D1F9D22A7CE00B3D20E46656335434CD48140CD00AEFDAB5721E81F1103C46E065FABD17A21629C196880C87FB0FB1570FA84937BA64EBBE376D537159C5118B3DEE35698DE533F204F4A7C549919BDEC7E46739A0D999BFF949DFF03
# 得到文件大小
df 82 31 15 5c 5c 43 4f 4e 46 49 47 5c 5c 2f 73 64 63 61 72 64 2f 64 61 74 61 2f 53 48 56 41 5f 31 35 2e 55 43 46
021F003EDF8231155C5C434F4E4649475C5C534856415F31352E5543467903
# 升级固件失败
UploadFirmware cmdArray=df 6c 82 04 04 00 00 ff 83 01 83 09 eb b1 ff 83 02 65 df 35 02 01 00 df 33 08 53 43 49 20 38 37 30 30 c2 18 30 00 20 00 40 00 70 00 70 00 f0 70 20 10 10 70 00 10 10 30 20 01 30 07 c3 18 f0 0f f0 0f f0 00 10 00 70 01 f0 30 30 30 10 00 00 10 10 30 30 01 30 00 df 78 04 00 00 01 e0 df 38 07 01 53 61 74 75 72 6e df 39 02 00 00 df 50 03 01 02 03 df 55 02 00 00 84 83 00 04 c0 41 70 70 6c 69 63 61 74 69 6f 6e 00 00 00 00 00 00 00 00 00 30 35 34 31 35 31 00 00 3a 05 00 00 e0 41 0c 08 10 96 10 bb 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6f 6f 74 5f 43 68 61 6e 67 65 72 00 00 00 00 00 00 00 00 30 35 31 37 32 33 00 00 b6 5c 01 00 e0 c1 00 08 56 e2 5f 24 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 6f 6f 74 5f 4c 6f 61 64 65 72 00 00 00 00 00 00 00 00 00 30 35 31 37 32 33 00 00 3a 8c 01 00 e0 81 00 08 61 a5 c0 48 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 6d 76 43 6f 6d 6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00 30 35 30 31 31 36 00 00 ba cb 01 00 e0 3d 06 08 12 08 20 cd 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 6e 74 72 79 50 6f 69 6e 74 00 00 00 00 00 00 00 00 00 00 30 35 30 31 33 31 00 00 6e 19 02 00 e0 01 06 08 91 f9 24 d5 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 46 72 61 6d 65 57 6f 72 6b 00 00 00 00 00 00 00 00 00 00 00 35 34 31 34 39 00 00 00 da 51 02 00 e0 01 01 08 0d 9b b6 c6 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4c 31 5f 43 6c 65 73 73 00 00 00 00 00 00 00 00 00 00 00 00 30 35 31 30 30 37 00 00 ea 19 06 00 e0 e5 06 08 4c 75 29 16 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 47 69 72 6f 00 00 00 00 00 00 00 00 30 35 30 31 30 39 00 00 a2 3f 06 00 e0 49 0b 08 52 fa 3f e0 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 49 6e 74 65 72 61 63 00 00 00 00 00 30 35 30 31 30 33 00 00 ea 22 07 00 e0 d9 09 08 e1 91 3c 80 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 4b 65 72 6e 65 6c 32 00 00 00 00 00 30 35 30 31 32 32 00 00 0a 59 07 00 e0 99 07 08 9a de f3 73 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 4b 65 72 6e 65 6c 33 00 00 00 00 00 30 35 30 31 32 33 00 00 26 be 07 00 e0 89 08 08 52 21 a0 9f 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 4b 65 72 6e 65 6c 34 00 00 00 00 00 30 35 30 31 31 31 00 00 56 f9 07 00 e0 09 09 08 76 43 83 3e 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 4b 65 72 6e 65 6c 35 00 00 00 00 00 30 35 30 31 31 39 00 00 6a 49 08 00 e0 79 0a 08 c5 6f 00 0b 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 4b 65 72 6e 65 6c 36 00 00 00 00 00 30 35 30 31 32 39 00 00 c6 87 08 00 e0 89 09 08 97 d9 a3 aa 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 61 79 6d 65 6e 74 5f 4b 65 72 a5 64 cmdsize=1033
2025-03-12 07:18:38.563 15056-15327 CCodecBufferChannel com.zhiyun.validator D [c2.android.raw.decoder#86] MediaCodec discarded an unknown buffer
# Gtk-WARNING **: 无法在模块路径中找到主题引擎:“adwaita”
sudo apt-get install gnome-themes-standard
sudo apt-get install gnome-themes-extra
新版deepin里没有这个,那就没办法了
# 增加了界面
mvn clean package -Dmaven.test.skip=true
java -cp ./target/classes sample.Main2
增加解析雄帝合约数据 FFC10000A30000160000000028D408B70201000000000000870028D4000000000002000001000000
下面是电脑连接多个android设备方便使用命令
java -cp ./target/classes sample.Main3