魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 3961|回复: 12

写给计时器程序员——StackMat计时器输出音频信号分析 [复制链接]

Rank: 7Rank: 7Rank: 7

积分
3923
帖子
2556
精华
6
UID
15558
性别
保密
WCA ID
2008CHEN27
兴趣爱好
理论

魔方理论探索者 国家(地区)纪录(NR) 十年元老

发表于 2011-5-11 20:00:52 |显示全部楼层
当时暑假自己分析出来的,不过下面内容还是大部分转载自http://hackvalue.de/hv_atmel_stackmat
不多废话,直接切入主题。
1、StackMat的输出信号为2进制基带信号,所以如果把输出信号接到耳机,听起来会很不舒服(可类比用modem上网,虽然原理完全不同)
2、输出信号采用RS-232串行线的编码方式,每个数据帧一共10位,一个开始位,一个结束位,8位数据位。
    2.1、StackMat不输出信号时,信道(即那个耳机线)处于“闲置”状态,电平为高(也许不同机器不一样,这里可以类比取反即可)
    2.2、每个数据帧发送的第一位为“开始”位,与闲置电平相反。
    2.3、数据帧的中间8位为数据位,低位先传。
        ---低位先传:比如我要传一个数字5,其2进制表示为00000101,则先传最低位的1,然后0,然后1,然后0......
    2.4、每一帧的最后一位为“结束”位,与闲置电平相同。
3、StackMat会连续发送9个数据帧,总长90bit(也可以认为89bit),除去上述开始与结束位,总共传送9字节(72bit)数据,不妨按先后顺序记为A0~A8,则它们分别有以下意义:
A0:ascii码,详细意义如下:
   ‘I’:初始化,即计时器刚打开,两只手悬空
   ‘A’:计时器已经准备好开始计时,两只手都已放上直到绿灯亮
   ‘ ’:正在计时中,且两只手均悬空
   ‘S’:计时完毕,且两只手均悬空
   ‘L’:左手放在了计时器上
   ‘R’:右手放在了计时器上
   ‘C’:两只手都放在了计时器上(但是绿灯还没亮)
A1~A5:显示时间的ascii码,即计时器上当前显示的时间为:A1 : A2 A3 : A4 A5
A6:校验和,将A1~A5表示的数字加起来即为A6。更精确的,A6=‘A1’+‘A2’+‘A3’+‘A4’+‘A5’+64,其中'Ai'表示该位代表的数字,而非其ascii
A7,A8:两个固定的ascii“CR”“LF”(这两个连续的ascii在windows下表示回车)
举例:
“S02527P[LF][CR]”表示:
当前计时器已拍下,计时器上显示的时间为0:25:27。注:
其中S表示当前处于计时完毕状态,02527表示当前显示的时间,‘P’为该时间的校验和,‘P'=64+0+2+5+2+7

整体举例:
不妨设在某个时刻通过监听耳机端口,我们获得了一下二进制信号群(从左往右为收到信号的顺序):
...1111011001010101000110010001011001001001100100001110010100011001000001010100101000010101100001111...
则根据前面所述数据帧规则,可以将这一串信号做如下划分:
...1111|0110010101|0100011001|0001011001|0010011001|0000111001|0100011001|0000010101|0010100001|0101100001|111...
可以看到总共可以得到9个数据帧,每帧长10bit,0开始,1结束。由于最后一定是连续的1,所以有时候会忽略最后的1,认为信道已经处于悬空状态。
将这9个数据帧分别提取其中的数据:(注意是低位先传,所以要逆序)
01010011 => 'S'
00110001 => '1'
00110100 => '4'
00110010 => '2'
00111000 => '8'
00110001 => '1'
01010000 => 'P'(=64+1+4+2+8+1)
00001010 => 'LF'
00001101 => 'CR'
于是我们可以得到如下信息:
计时器处于停止计时状态,计时器显示1:42.81
先写这么多,可能有点乱- -
已有 4 人评分经验 收起 理由
谢老师 + 10 整体举例容易让人明白计时器工作流程和原理.
ggglgq + 10 加分支持!
yeees + 10 分析的很到位!
魔一方549393033 + 10 高人啊......

总评分: 经验 + 40   查看全部评分

魔方爱好者,三字班小朋友。

透魔

方方

Rank: 6Rank: 6

积分
6973
帖子
5808
精华
0
UID
1242585

六年元老 八年元老

发表于 2011-5-11 20:06:12 |显示全部楼层
神马都看不懂.....反正我知道ss二代和奶奶家的cct接不上
心态决定命运

使用道具 举报

Rank: 1

积分
100
帖子
91
精华
0
UID
1241742
性别
保密

两年元老

发表于 2011-5-11 20:45:41 |显示全部楼层
lz大牛!!!!!!!

使用道具 举报

铜魔

铂金魔

Rank: 8Rank: 8

积分
8624
帖子
2523
精华
4
UID
1241401

收藏爱好者 魔方改造大师 论坛建设奖 爱心大使 八年元老 十年元老 十二年元老 十四年元老

发表于 2011-5-11 20:47:22 |显示全部楼层
http://hackvalue.de/hv_atmel_stackmat
这个网站上那个人写的有错误,应该是先[LF]后[CR],我分析过

例如:
S02527P[LF][CR]
时间: 0:25:27
校验数据: 64 + 0 + 2 + 5 + 2 + 7 = 64 + 16 = 80 = 'P' (校验通过)

[ 本帖最后由 yeees 于 2011-5-11 20:51 编辑 ]

使用道具 举报

Rank: 7Rank: 7Rank: 7

积分
3923
帖子
2556
精华
6
UID
15558
性别
保密
WCA ID
2008CHEN27
兴趣爱好
理论

魔方理论探索者 国家(地区)纪录(NR) 十年元老

发表于 2011-5-11 20:51:05 |显示全部楼层

回复 4# 的帖子

他自己都写了两种。。然后我就按照他给的波形分析了= =
魔方爱好者,三字班小朋友。

使用道具 举报

Rank: 4

积分
2552
帖子
2484
精华
0
UID
1250685
性别
保密

两年元老

发表于 2011-5-11 21:02:45 |显示全部楼层
楼主纯技术大牛!!!!!!!!!!!!!!
兴趣是最好的老师

使用道具 举报

透魔

阿V

Rank: 6Rank: 6

积分
7732
帖子
6459
精华
2
UID
1253084
WCA ID
2010ZHAN17

论坛建设奖 爱心大使 十年元老 十二年元老

发表于 2011-5-11 21:07:04 |显示全部楼层
楼主技术很厉害


.
静坐常思己过,闲谈莫论人非

使用道具 举报

粉魔

【BLD】

Rank: 5Rank: 5

积分
3582
帖子
2767
精华
0
UID
1253011
性别

四年元老

发表于 2011-5-11 21:28:54 |显示全部楼层
楼主技术很厉害啊!我都看不懂喔~
Practice Makes Perfect - 007~

使用道具 举报

Rank: 2

积分
510
帖子
490
精华
0
UID
1248750
性别
保密
发表于 2011-5-11 21:39:08 |显示全部楼层
不懂程序  但是想学编程啊。。。。。。。。
交友Q群88733229 限制焦作地区

使用道具 举报

粉魔

则卷N囧

Rank: 5Rank: 5

积分
3660
帖子
1972
精华
1
UID
85309

中国纪录 四年元老

发表于 2011-5-11 21:50:46 |显示全部楼层
我还纠结在1602................

[ 本帖最后由 则卷同学 于 2011-5-11 22:29 编辑 ]
计划十一去嘉定旅游~(百分之九十九的人呢会想错地方)

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-3-29 04:07

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部