铯_猪哥恐鸣 发表于 2011-5-11 20:00:52

写给计时器程序员——StackMat计时器输出音频信号分析

当时暑假自己分析出来的,不过下面内容还是大部分转载自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”表示:
当前计时器已拍下,计时器上显示的时间为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
先写这么多,可能有点乱- -

魔一方549393033 发表于 2011-5-11 20:06:12

神马都看不懂.....反正我知道ss二代和奶奶家的cct接不上

iac0137 发表于 2011-5-11 20:45:41

lz大牛!!!!!!!

yeees 发表于 2011-5-11 20:47:22

http://hackvalue.de/hv_atmel_stackmat
这个网站上那个人写的有错误,应该是先后,我分析过

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

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

铯_猪哥恐鸣 发表于 2011-5-11 20:51:05

回复 4# 的帖子

他自己都写了两种。。然后我就按照他给的波形分析了= =

chenqing12003 发表于 2011-5-11 21:02:45

楼主纯技术大牛!!!!!!!!!!!!!!

42752277 发表于 2011-5-11 21:07:04

楼主技术很厉害


.

Wilson007 发表于 2011-5-11 21:28:54

楼主技术很厉害啊!我都看不懂喔~

小峰 发表于 2011-5-11 21:39:08

不懂程序  但是想学编程啊。。。。。。。。

则卷同学 发表于 2011-5-11 21:50:46

我还纠结在1602................

[ 本帖最后由 则卷同学 于 2011-5-11 22:29 编辑 ]
页: [1] 2
查看完整版本: 写给计时器程序员——StackMat计时器输出音频信号分析