2010年9月28日 星期二

測試Scratch Board Serial Communication Protocol

根據ScratchBoard_Tech_InfoR2.pdf技術說明文件,Scratch會主動詢問感應板,而感應板會丟出長度為18個Byte的封包,內含韌體版本ID及8個偵測器值,以下的Python程式可以模擬Scratch詢問目前感應板偵測值
1:  import serial
2:  def testScratchBoard():
3:      ser = serial.Serial('/dev/ttyUSB0', 38400, timeout=1)
4:      ser.write(chr(0x01))
5:      b=ser.read(18)
6:      ser.close()
7:      print "Packet : "
8:      for l in xrange(len(b)):
9:          print bin(ord(b[l]))
10: if __name__=='__main__':
11:     testScratchBoard()
以下是感應板送出的封包資料,共有18個Byte,每個偵測器值由一對HighByte & LowByte組成,而HighByte最左端位元為1,而LowByte最左端位元為0,封包的最前面兩個Byte為韌體版本ID
 Packet :
0b11111000
0b00000100
0b10000111
0b00001000
0b10001110
0b01111000
0b10010110
0b01111101
0b10011000
0b01111111
0b10100111
0b00000010
0b10101100
0b00001110
0b10110000
0b00000000
0b10111110
0b01011000
寫到這裡,當初ScratchBoard的設計理念,好像沒打算讓小朋友理解電腦最基礎的0與1的概念,否則應該加進幾個小LED,讓小朋友在某個位元設0或1,就能看到光滅或光亮,不過或許與Scratch沒有位元操作的Block也有關

沒有留言:

張貼留言