Rev 3376 Rev 3381
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