source: trigger/CommunicateWithVME.py@ 63

Last change on this file since 63 was 52, checked in by rissim, 15 years ago
trigger software (VME) v1
File size: 7.1 KB
Line 
1#!/usr/bin/python
2##############################################################
3#
4# CommunicateWithVME.py
5# Handles the communication with the VME crate
6# can send commands to the VME crate
7#
8#
9# Michael Rissi 05/2009
10#
11#############################################################
12
13import GlobalVariables
14import threading
15import _VME
16import time
17def GetRate(module,channel):
18 _VME.V560_Clear_Scales( module)
19 beginCounter=_VME. V560_Read_Counter( module, channel)
20 print "Evaluating rates (2 seconds)..."
21 time.sleep(2)
22 endCounter = _VME. V560_Read_Counter( module, channel)
23 return (endCounter-beginCounter)/2000.
24
25def GetRates(module):
26 _VME.V560_Clear_Scales( module)
27 beginCounter =[0,0,0,0,
28 0,0,0,0,
29 0,0,0,0,
30 0,0,0,0]
31 endCounter = [0,0,0,0,
32 0,0,0,0,
33 0,0,0,0,
34 0,0,0,0]
35 rates = [0,0,0,0,
36 0,0,0,0,
37 0,0,0,0,
38 0,0,0,0]
39
40 for i in range(0,16):
41 beginCounter[i]=_VME. V560_Read_Counter( module, i)
42 print beginCounter[i]
43 print "Evaluating rates..."
44 time.sleep(2)
45 for i in range(0,16):
46 endCounter[i] = _VME. V560_Read_Counter( module, i)
47 print endCounter[i]
48 rates[i] =(endCounter[i]-beginCounter[i])/2000.
49 return rates
50
51class ParseUserInput(threading.Thread):
52 def Parse(self,Command):
53 print "PARSING: ",Command
54 sCommand=Command.split()
55 error_code=0
56 #python lacks switch...
57 try:
58 VMEModule=sCommand[0]
59 if(VMEModule == "help"): print "please use \'<V812|V560|Triggerboard> help\' "
60
61 # now do the stuff for the V560:
62 if(VMEModule == "V560"):
63 V560Command=sCommand[1]
64 if(V560Command=="help"):
65 print "available functions are: "
66 print "V560 GetRate <module#> <channel#>"
67 print "V560 GetRates <module#> "
68
69 if(V560Command=="GetRate"):
70 print "trying to get rate"
71 try:
72 module = sCommand[2]
73 channel= sCommand[3]
74 print GetRate(int(module),int(channel))
75 except:
76 print "Syntax Error (GetRate)"
77 #GlobalVariables.Rates[int(channel)] = GetRates(int(module),int(channel))
78
79 if(V560Command=="GetRates"):
80 print "trying to get rates"
81 try:
82 module = sCommand[2]
83
84 print GetRates(int(module))
85 except:
86 print "Syntax Error (GetRates)"
87 #GlobalVariables.Rates[int(channel)] = GetRates(int(module),int(channel))
88
89
90 # now do the stuff for the V812:
91 elif(VMEModule == "V812"):
92 V812Command=sCommand[1]
93 if(V812Command=="help"):
94 print "available functions are: "
95 print "V812 SetHexPat <module#[1-10]> <HexPattern[0x0000-0xFFFF>"
96 print "V812 SetThresh <module#[1-10]> <channel#[0-15]> <thresh[0-255]>"
97 print "V812 SetMajLevel <module#[1-10]> <MajLev[1-20]>"
98 print "V812 SetMajThresh <module#[1-10]> <MajThr[0-255]>"
99 print "V812 SetDeadTime <module#[1-10]> <Block [0-1]> <DeadTime[0-255]>"
100
101 #set the hexpattern:
102 elif(V812Command=="SetHexPat"):
103 print "trying to set the hexpattern:"
104 try:
105 module = int(sCommand[2])
106 hexpat = int(sCommand[3],16)
107 #hexpat="ddd"
108 print "setting module ",module," to hexpat: ",hex(hexpat)
109 try:
110 error_code=_VME.V812_Set_Pattern_Inhibit_Hex(module, hexpat)
111 print "success! "
112
113 except:
114 VME_ErrorPrint(error_code)
115 except:
116 print "Syntax error (SetHexPat)"
117
118
119 elif(V812Command=="SetThresh"):
120 print "trying to set the threshold:"
121 try:
122 module = int(sCommand[2])
123 channel = int(sCommand[3])
124 thresh = int(sCommand[4])
125 print "setting threshold of channel: ",channel, " in module ",module," to: ",thresh
126 print "success: ",_VME.V812_Set_Threshold(module, channel, thresh)
127 except:
128 print "Syntax error (SetThresh) "
129
130 elif(V812Command=="SetMajLevel"):
131 print "trying to set the majority level:"
132 try:
133 module = int(sCommand[2])
134 level = int(sCommand[3])
135 print "setting maj. level of module ",module," to: ",level
136 print "success: ",_VME.V812_Set_Majority_Level(module,level)
137 except:
138 print "Syntax error (SetMajLevel)"
139
140 elif(V812Command=="SetMajThresh"):
141 print "trying to set the majority threshold:"
142 try:
143 module = int(sCommand[2])
144 thresh = int(sCommand[3])
145 print "setting maj. level of module ",module," to: ",thresh
146 print "success: ",_VME.V812_Set_Majority_Threshold(module, thresh)
147 except:
148 print "Syntax error (SetMajThresh)"
149
150 elif(V812Command=="SetDeadTime"):
151 print "trying to set the majority threshold:"
152 try:
153 module = int(sCommand[2])
154 block = int(sCommand[3])
155 deadtime= int(sCommand[4])
156 print "setting deadtime of module ",module," block: ",block, " to: ",deadtime
157 print "success: ",_VME.V812_Set_Dead_Time(module, block, deadtime);
158 except:
159 print "Syntax error (SetMajThresh)"
160
161 else:
162 print "Syntax Error (V812)"
163
164 except:
165 print "syntax error"
166 #_VME.V812_Set_Threshold(1, 0, 255)
167
168 def __init__(self):
169 threading.Thread.__init__(self)
170 def run(self):
171 oldcommand=GlobalVariables.UserInput
172 while(GlobalVariables.UserInput!="exit" and GlobalVariables.UserInput != "EXIT"):
173 CommandToParse=GlobalVariables.UserInput
174 if(oldcommand!=CommandToParse):
175 self.Parse(CommandToParse)
176 oldcommand=CommandToParse
177 time.sleep(0.05)
178
179
180
181 print "EXITING PARSER...press <enter> to exit"
182
Note: See TracBrowser for help on using the repository browser.