# 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