def VmeWrite(Addr, Data): MyString = 'W '+hex(Addr)[2:].strip('L')+' '+hex(Data)[2:].strip('L')+'\n' fd_Out=open('../simulation/Py2V.fifo', 'w') fd_Out.write(MyString) fd_Out.close() fd_In=open('../simulation/V2Py.fifo', 'r') Strings=fd_In.readlines() ExitCode=int(Strings[0], 16) if ExitCode==1 : print "Write Action Timed Out @ Addr ", hex(Addr) elif ExitCode==1 : print "Bus Error during Write cycle @ Addr ", hex(Addr) elif ExitCode==1 : print "Retry request for Write @ Addr ", hex(Addr) def VmeRead(Addr): MyString = 'R '+hex(Addr)[2:].strip('L')+'\n' fd_Out=open('../simulation/Py2V.fifo', 'w') fd_Out.write(MyString) fd_Out.close() fd_In=open('../simulation/V2Py.fifo', 'r') Strings =fd_In.readlines() fd_In.close() [ExitCode, Value] =Strings[0:2] ExitCode = int(ExitCode, 16) try: Value = int(Value, 16) except: Value = 0 print "Read out a not a number" if (ExitCode==1): print "Read Action Timed Out @ Addr ", hex(Addr).strip('L') elif (ExitCode==1): print "Bus Error during Read cycle @ Addr ", hex(Addr).strip('L') elif (ExitCode==1): print "Retry request for Read @ Addr ", hex(Addr).strip('L') return Value def VmeWaitInterrupt(): MyString = 'I\n' fd_Out=open('../simulation/Py2V.fifo', 'w') fd_Out.write(MyString) fd_Out.close() fd_In=open('../simulation/V2Py.fifo', 'r') Strings=fd_In.readlines() fd_In.close() [IntLevel, IntVector]=['0', '0'] ExitCode= int(Strings[0], 16) if (ExitCode==0): [IntLevel, IntVector]=Strings[1:3] elif (ExitCode==1): print "Timeout: no interrupt received" elif (ExitCode==2): print "Bus Error" else: print "Unknown status response from Wait Interrupt : "+ Strings[0] return [int(IntLevel, 16), int(IntVector, 16)] def VmeReset(): MyString = 'X\n' fd_Out=open('../simulation/Py2V.fifo', 'w') fd_Out.write(MyString) fd_Out.close()