分析代码来源: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)
初始化指令,无需回复
>>> 7b 52 53 45 54 7d
ASCII:{RSET}
进入配置模式,无需回复,如果在发送触摸数据,需要停止
>>> 7b 48 41 4c 54 7d
ASCII:{HALT}
设置 Ratio
>>> {L/R sensor r ratio}
>>> 7b 4c 41 72 32 7d
ASCII:{LAr2}
L/R
:L 是 1p,R 是 2psensor
:触摸点的序号,可参考序号表r
:固定值,可以当作 Ratio 的 cmdratio
:需要设置的目标值,可能的值可以参考下方 sens 值表
回复的格式也相同:
<<< 28 4c 41 72 32 29
ASCII:(LAr2)
设置 Sensitivity
>>> {L/R sensor k sens}
>>> 7b 4c 41 6b 1e 7d
ASCII:{LAk.}
L/R
:L
是 1p,R
是 2psensor
:触摸点的序号,可参考序号表k
:固定值,可以当作 Sensitivity 的 cmdsens
:需要设置的目标值,可能的值可以参考 sens 值表
回复的格式也相同:
<<< 28 4c 41 6b 1e 29
ASCII:(LAk.)
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
代表已按下
触摸区的顺序从 A1
到 E8
,二进制存储从低到高
例如只按下第一个触摸点(A1):
<<< 28 00 00 00 00 00 00 01 29
二进制数据:00000000 00000000 00000000 00000000 00000000 00000000 00000001
A1=0x41 ~ A8=0x48
B1=0x49 ~ B8=0x50
C1=0x51 C2=0x52
D1=0x53 ~ D8=0x5A
E1=0x5B ~ E8=0x62
A1 是 0x41,A2 是 0x42,如此类推...
在触摸测试菜单内可以配置触摸屏的敏感度,敏感度的范围是 -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 是外圈触摸点,敏感度值会比其他的高一点