Skip to content
This repository has been archived by the owner on Sep 13, 2024. It is now read-only.

Latest commit

 

History

History
120 lines (106 loc) · 3.02 KB

README.md

File metadata and controls

120 lines (106 loc) · 3.02 KB

Mai2Touch 数据分析

分析代码来源:Assembly-CSharp.dll,IO.NewTouchPanel.cs

以下数据包用 ASCII 表示,数值则是 16 进制,包体格式:

  • 主机发送的数据包以 { 开始,}结束
  • 设备回复的数据包以 ( 开始,)结束
  • 没有长度和校验位

下面是数据包示例,>>> 是主机发送的内容,<<< 是设备回复的内容

>>> 7b 4c 41 72 32 7d
ASCII 值:{LAr2}
<<< 28 4c 41 72 32 29
ASCII 值:(LAr2)

>>> 7b 4c 42 72 32 7d
ASCII 值:{LBr2}
<<< 28 4c 42 72 32 29
ASCII 值:(LBr2)

命令的具体解释

Reset

初始化指令,无需回复

>>> 7b 52 53 45 54 7d
ASCII:{RSET}

Start Conditioning Mode

进入配置模式,无需回复,如果在发送触摸数据,需要停止

>>> 7b 48 41 4c 54 7d
ASCII:{HALT}

Set Touch Panel Ratio

设置 Ratio

>>> {L/R sensor r ratio}
>>> 7b 4c 41 72 32 7d
ASCII:{LAr2}
  • L/R:L 是 1p,R 是 2p
  • sensor:触摸点的序号,可参考序号表
  • r:固定值,可以当作 Ratio 的 cmd
  • ratio:需要设置的目标值,可能的值可以参考下方 sens 值表

回复的格式也相同:

<<< 28 4c 41 72 32 29
ASCII:(LAr2)

Set Touch Panel Sensitivity

设置 Sensitivity

>>> {L/R sensor k sens}
>>> 7b 4c 41 6b 1e 7d
ASCII:{LAk.}
  • L/RL 是 1p,R 是 2p
  • sensor:触摸点的序号,可参考序号表
  • k:固定值,可以当作 Sensitivity 的 cmd
  • sens:需要设置的目标值,可能的值可以参考 sens 值表

回复的格式也相同:

<<< 28 4c 41 6b 1e 29
ASCII:(LAk.)

End Conditioning Mode

7b 53 54 41 54 7d ASCII:{STAT} 退出配置模式,无需回复,可以开始发送触摸数据

触摸数据

发送触摸数据,在收到 {STAT} 后才允许发送,主机不会回复 可以一直发,也可以在变更后才发送,如果收到 {HALT} 则需要停止发送

>>> 28 1f 1f 1f 1f 1f 1f 1f 29
ASCII:(.......)

中间 7 个 byte 值是触摸数据,每个 byte 值用二进制低 5 位 bit 存储,1 代表已按下
触摸区的顺序从 A1E8,二进制存储从低到高
例如只按下第一个触摸点(A1):

<<< 28 00 00 00 00 00 00 01 29
二进制数据:00000000 00000000 00000000 00000000 00000000 00000000 00000001

sensor 触摸点序号表

A1=0x41 ~ A8=0x48
B1=0x49 ~ B8=0x50
C1=0x51   C2=0x52
D1=0x53 ~ D8=0x5A
E1=0x5B ~ E8=0x62

A1 是 0x41,A2 是 0x42,如此类推...

sens 值表

在触摸测试菜单内可以配置触摸屏的敏感度,敏感度的范围是 -5+5,对应的值如下:

敏感度值 = ratio 值,A1-A8 触摸点的 sens 值,B1-E8 的 sens 值
-5 = 32,5a,46
-4 = 32,50,3c
-3 = 32,46,32
-2 = 32,3c,28
-1 = 32,32,1e
 0 = 32,28,14
+1 = 32,1e,0f
+2 = 32,1a,0a
+3 = 32,17,05
+4 = 32,14,01
+5 = 32,0a,01

A1-A8 是外圈触摸点,敏感度值会比其他的高一点