1 |
#!/usr/bin/python |
1 |
#!/usr/bin/python |
2 |
|
2 |
|
3 |
# Python driver for MLAB MAG01A module with HMC5888L Magnetometer sensor wrapper class |
3 |
# Python driver for MLAB MAG01A module with HMC5888L Magnetometer sensor wrapper class |
4 |
|
4 |
|
5 |
import time |
5 |
import time |
6 |
import datetime |
6 |
import datetime |
7 |
import sys |
7 |
import sys |
- |
|
8 |
import serial |
8 |
|
9 |
|
9 |
from pymlab import config |
10 |
from pymlab import config |
10 |
|
11 |
|
11 |
|
12 |
|
12 |
#### Script Arguments ############################################### |
13 |
#### Script Arguments ############################################### |
13 |
|
14 |
|
14 |
if len(sys.argv) != 2: |
15 |
if len(sys.argv) != 2: |
15 |
sys.stderr.write("Invalid number of arguments.\n") |
16 |
sys.stderr.write("Invalid number of arguments.\n") |
16 |
sys.stderr.write("Usage: %s #I2CPORT\n" % (sys.argv[0], )) |
17 |
sys.stderr.write("Usage: %s #I2CPORT\n" % (sys.argv[0], )) |
17 |
sys.exit(1) |
18 |
sys.exit(1) |
18 |
|
19 |
|
19 |
port = eval(sys.argv[1]) |
20 |
port = eval(sys.argv[1]) |
20 |
|
21 |
|
21 |
|
22 |
|
22 |
#### Sensor Configuration ########################################### |
23 |
#### Sensor Configuration ########################################### |
23 |
|
24 |
|
24 |
cfg = config.Config( |
25 |
cfg = config.Config( |
25 |
port = port, |
26 |
port = port, |
26 |
bus = [ |
27 |
bus = [ |
27 |
{ |
28 |
{ |
28 |
"type": "i2chub", |
29 |
"type": "i2chub", |
29 |
"address": 0x72, |
30 |
"address": 0x72, |
30 |
|
31 |
|
31 |
"children": [ |
32 |
"children": [ |
32 |
{ |
33 |
{ |
33 |
"type": "i2chub", |
34 |
"type": "i2chub", |
34 |
"address": 0x70, |
35 |
"address": 0x70, |
35 |
"channel": 3, |
36 |
"channel": 3, |
36 |
"children": [ |
37 |
"children": [ |
37 |
{"name": "altimet1", "type": "altimet01" , "channel": 0, }, |
38 |
{"name": "altimet1", "type": "altimet01" , "channel": 0, }, |
38 |
{"name": "altimet2", "type": "altimet01" , "channel": 3, }, |
39 |
{"name": "altimet2", "type": "altimet01" , "channel": 3, }, |
39 |
{"name": "altimet3", "type": "altimet01" , "channel": 4, }, |
40 |
{"name": "altimet3", "type": "altimet01" , "channel": 4, }, |
40 |
{"name": "altimet4", "type": "altimet01" , "channel": 5, }, |
41 |
{"name": "altimet4", "type": "altimet01" , "channel": 5, }, |
41 |
{"name": "altimet5", "type": "altimet01" , "channel": 6, }, |
42 |
{"name": "altimet5", "type": "altimet01" , "channel": 6, }, |
42 |
{"name": "altimet6", "type": "altimet01" , "channel": 7, }, |
43 |
{"name": "altimet6", "type": "altimet01" , "channel": 7, }, |
43 |
], |
44 |
], |
44 |
}, |
45 |
}, |
45 |
{"name": "altimet8", "type": "altimet01" , "channel": 6, }, |
46 |
{"name": "altimet8", "type": "altimet01" , "channel": 6, }, |
46 |
], |
47 |
], |
47 |
}, |
48 |
}, |
48 |
|
49 |
|
49 |
# { |
50 |
# { |
50 |
# "type": "i2chub", |
51 |
# "type": "i2chub", |
51 |
# "address": 0x72, |
52 |
# "address": 0x72, |
52 |
# "children": [ |
53 |
# "children": [ |
53 |
# {"name": "altimet", "type": "altimet01" , "channel": 6, }, |
54 |
# {"name": "altimet", "type": "altimet01" , "channel": 6, }, |
54 |
# ], |
55 |
# ], |
55 |
# }, |
56 |
# }, |
56 |
|
57 |
|
57 |
|
58 |
|
58 |
], |
59 |
], |
59 |
) |
60 |
) |
60 |
cfg.initialize() |
61 |
cfg.initialize() |
61 |
|
62 |
|
62 |
gauge1 = cfg.get_device("altimet1") |
63 |
gauge1 = cfg.get_device("altimet1") |
63 |
gauge2 = cfg.get_device("altimet2") |
64 |
gauge2 = cfg.get_device("altimet2") |
64 |
gauge3 = cfg.get_device("altimet3") |
65 |
gauge3 = cfg.get_device("altimet3") |
65 |
gauge4 = cfg.get_device("altimet4") |
66 |
gauge4 = cfg.get_device("altimet4") |
66 |
gauge5 = cfg.get_device("altimet5") |
67 |
gauge5 = cfg.get_device("altimet5") |
67 |
gauge6 = cfg.get_device("altimet6") |
68 |
gauge6 = cfg.get_device("altimet6") |
68 |
|
69 |
|
69 |
gauge8 = cfg.get_device("altimet8") |
70 |
gauge8 = cfg.get_device("altimet8") |
70 |
time.sleep(0.5) |
71 |
time.sleep(0.5) |
71 |
|
72 |
|
72 |
#### Data Logging ################################################### |
73 |
#### Data Logging ################################################### |
73 |
|
74 |
|
- |
|
75 |
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) |
- |
|
76 |
print ser.name |
- |
|
77 |
ser.write("hello") |
- |
|
78 |
#http://pyserial.sourceforge.net/shortintro.html |
- |
|
79 |
line = ser.readline() # read a '\n' terminated line |
- |
|
80 |
ser.close() |
74 |
|
81 |
|
75 |
try: |
82 |
try: |
76 |
with open("temperature.log", "a") as f: |
83 |
with open("temperature.log", "a") as f: |
77 |
while True: |
84 |
while True: |
78 |
sys.stdout.write("Start measurement now? [ENTER]") |
85 |
sys.stdout.write("Start measurement now? [ENTER]") |
79 |
sys.stdin.readline() |
86 |
sys.stdin.readline() |
80 |
gauge1.route() |
87 |
gauge1.route() |
81 |
(t1, p1) = gauge1.get_tp() |
88 |
(t1, p1) = gauge1.get_tp() |
82 |
gauge2.route() |
89 |
gauge2.route() |
83 |
(t2, p2) = gauge2.get_tp() |
90 |
(t2, p2) = gauge2.get_tp() |
84 |
gauge3.route() |
91 |
gauge3.route() |
85 |
(t3, p3) = gauge3.get_tp() |
92 |
(t3, p3) = gauge3.get_tp() |
86 |
gauge4.route() |
93 |
gauge4.route() |
87 |
(t4, p4) = gauge4.get_tp() |
94 |
(t4, p4) = gauge4.get_tp() |
88 |
gauge5.route() |
95 |
gauge5.route() |
89 |
(t5, p5) = gauge5.get_tp() |
96 |
(t5, p5) = gauge5.get_tp() |
90 |
gauge6.route() |
97 |
gauge6.route() |
91 |
(t6, p6) = gauge6.get_tp() |
98 |
(t6, p6) = gauge6.get_tp() |
92 |
# gauge7.route() |
99 |
# gauge7.route() |
93 |
# (t7, p7) = gauge7.get_tp() |
100 |
# (t7, p7) = gauge7.get_tp() |
94 |
gauge8.route() |
101 |
gauge8.route() |
95 |
(t8, p8) = gauge8.get_tp() |
102 |
(t8, p8) = gauge8.get_tp() |
96 |
|
103 |
|
97 |
sys.stdout.write(" Temperature: %.2f %.2f %.2f %.2f %.2f %.2f %.2f Pressure: %d %d %d %d %d %d %d Note: " % (t1, t2, t3, t4, t5, t6, t8, p1, p2, p3, p4, p5, p6, p8, )) |
104 |
sys.stdout.write(" Temperature: %.2f %.2f %.2f %.2f %.2f %.2f %.2f Pressure: %d %d %d %d %d %d %d Note: " % (t1, t2, t3, t4, t5, t6, t8, p1, p2, p3, p4, p5, p6, p8, )) |
98 |
note = sys.stdin.readline() |
105 |
note = sys.stdin.readline() |
99 |
f.write("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s\n" % (time.time(), datetime.datetime.now().isoformat(),t1, t2, t3, t4, t5, t6, t8, p1, p2, p3, p4, p5, p6, p8, note, )) |
106 |
f.write("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s\n" % (time.time(), datetime.datetime.now().isoformat(),t1, t2, t3, t4, t5, t6, t8, p1, p2, p3, p4, p5, p6, p8, note, )) |
100 |
sys.stdout.flush() |
107 |
sys.stdout.flush() |
101 |
time.sleep(0.5) |
108 |
time.sleep(0.5) |
102 |
except KeyboardInterrupt: |
109 |
except KeyboardInterrupt: |
103 |
sys.exit(0) |
110 |
sys.exit(0) |
104 |
|
111 |
|