1
+ #! /usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ import serial
5
+ import time
6
+ import numpy as np
7
+ def hexShow (argv ):
8
+ result = ''
9
+ hLen = len (argv )
10
+ for i in xrange (hLen ):
11
+ hvol = ord (argv [i ])
12
+ hhex = '%02x' % hvol
13
+ result += hhex + ' '
14
+ print ':' ,result
15
+
16
+
17
+ def com_init ():
18
+ com = serial .Serial ('COM3' ,115200 ,timeout = 0 )
19
+ return com
20
+
21
+
22
+ def get_num (input ):
23
+ val = 0
24
+ if (input > 0x7fff ):
25
+ val = - ((~ input )& 0x7fff - 1 ) ## 获取负数补码
26
+ else :
27
+ val = input
28
+ return val
29
+
30
+ def decode_erula (data_src ):
31
+ off_set = 29
32
+ raw_data = data_src [off_set :]
33
+ data = []
34
+ for x in xrange (0 ,7 ):
35
+ data .append (ord (raw_data [x ]))
36
+ if (data [0 ]== 0xd0 ):
37
+ erual_x = (data [1 ]+ data [2 ]* 256 )
38
+ erual_y = (data [3 ]+ data [4 ]* 256 )
39
+ erual_z = (data [5 ]+ data [6 ]* 256 )
40
+ return np .array ([get_num (erual_x )/ 100.0 ,get_num (erual_y )/ 100.0 ,get_num (erual_z )/ 10.0 ])
41
+
42
+
43
+
44
+ def decode_acc (data_src ):
45
+ off_set = 8
46
+ raw_data = data_src [off_set :]
47
+ data = []
48
+ for x in xrange (0 ,7 ):
49
+ data .append (ord (raw_data [x ]))
50
+ if (data [0 ]== 0xa0 ):
51
+ data_x = (data [1 ]+ data [2 ]* 256 )
52
+ data_y = (data [3 ]+ data [4 ]* 256 )
53
+ data_z = (data [5 ]+ data [6 ]* 256 )
54
+ else :
55
+ data_x = 0
56
+ data_y = 0
57
+ data_z = 0
58
+ return np .array ([get_num (data_x ),get_num (data_y ),get_num (data_z )])
59
+
60
+ def decode_gyro (data_src ):
61
+ off_set = 15
62
+ raw_data = data_src [off_set :]
63
+ data = []
64
+ for x in xrange (0 ,7 ):
65
+ data .append (ord (raw_data [x ]))
66
+ if (data [0 ]== 0xb0 ):
67
+ data_x = (data [1 ]+ data [2 ]* 256 )
68
+ data_y = (data [3 ]+ data [4 ]* 256 )
69
+ data_z = (data [5 ]+ data [6 ]* 256 )
70
+ else :
71
+ data_x = 0
72
+ data_y = 0
73
+ data_z = 0
74
+ return np .array ([get_num (data_x ),get_num (data_y ),get_num (data_z )])
75
+
76
+
77
+ def get_data (com ):
78
+ while (com .inWaiting ()< 36 ):
79
+ time .sleep (0.0005 )
80
+ # time.sleep(0.001)
81
+ data = com .readall ()
82
+ #return
83
+ #return hexShow(data)
84
+ return np .append (decode_acc (data ),[decode_gyro (data ),decode_erula (data )])
85
+ # print str
86
+ if __name__ == '__main__' :
87
+ comp = com_init ()
88
+ import time as tm
89
+ time_str = tm .strftime ('%Y-%m-%d-%H-%M-%S' ,tm .localtime (tm .time ()))
90
+ file_name = 'arhs-' + time_str + '.txt'
91
+ # fo = open(file_name, "wb")
92
+ np .set_printoptions (precision = 6 ,suppress = True )
93
+ while 1 :
94
+ data = get_data (comp )
95
+ stra = str (data )+ '\n '
96
+ print stra
97
+ # get_data(comp)
98
+ #fo.write(stra);
0 commit comments