""" Python test control script """ import serial import sys #from Tkinter import * #root = Tk() #def callback(): # print "called the callback!" # ## create a toolbar #toolbar = Frame(root) #b = Button(toolbar, text="new", width=6, command=callback) #b.pack(side=LEFT, padx=2, pady=2) #b = Button(toolbar, text="open", width=6, command=callback) #b.pack(side=LEFT, padx=2, pady=2) #toolbar.pack(side=TOP, fill=X) #mainloop() NUM_DATA_CHARS = 2 ################################################################################ # # Function to write to a register. # ################################################################################ def RegWrite(regAddr, regData): regAddrStr = chr(regAddr) ser.write(regAddrStr) mask = 0xFF00 ser.write(chr((regData & mask) >> 8)) mask = 0x00FF ser.write(chr(regData & mask)) ################################################################################ # # Function to read a register. # ################################################################################ def RegRead(regAddr): retList = [] # create an empty list for returning status & data regAddr += 0x80 # MSB set for a read regAddrStr = chr(regAddr) ser.write(regAddrStr) regDataStr = ser.read(NUM_DATA_CHARS) if (len(regDataStr) == NUM_DATA_CHARS): i = 0 regData = ['','','',''] regData[0] = ord(regDataStr[0]) regData[1] = ord(regDataStr[1]) regDataLong = (regData[0] << 8) + regData[1] retList.append(1) retList.append(regDataLong) return retList else: #print "No data received!" retList.append(0) return retList ################################################################################ # # Function prompts for register address & reads register # ################################################################################ def ReadRegVal(): regStr = raw_input("Enter register (0-7F):") regAddr = int(regStr,16) if (regAddr < 0) or (regAddr > 127): print "Invalid register!" else: retList = RegRead(regAddr) if (retList[0]): regDataLong = retList[1] print "Register %02x = %04x" % (regAddr, regDataLong) else: print "" # Blank line print "Timed Out! No data received" print "" # Blank line ################################################################################ # # Function prompts for register address / data & writes register # ################################################################################ def WriteRegVal(): regStr = raw_input("Enter register (0-7F):") regAddr = int(regStr,16) if (regAddr < 0) or (regAddr > 127): print "Invalid register!" else: regDataHexStr = raw_input("Enter data (0-FFFFFFFF):") if (len(regDataHexStr) == 0): regData = 0 else: regData = int(regDataHexStr, 16) RegWrite(regAddr, regData) ################################################################################ # # Function to flush the RS232 buffers # ################################################################################ def FlushSerial(): ser.flushInput() ################################################################################ # # Function to read one of the DS1821 Temp sensor outputs # ################################################################################ def ReadTemp(sensor): Addr = 0x000F + sensor RetList = RegRead(Addr) Temp = RetList[1] if (Temp == 0x00C9): print "Sensor not present \n" else : print "Sensor %2x reads %2d DegC\n" % (sensor, Temp) ################################################################################ # # Function to set a DAC output # ################################################################################ def SetDAC(): print "\nSetting DAC outputs..." address = 0x00 if (address != 0xff): choice = raw_input("Enter value to write:") data = int(choice,16) wrdata = data << 2 for i in range(0, 8): address = i wraddr = address << 12 wrval = wraddr + wrdata print "Writing %03x to address %02x" % (data, address) print "Writing %04x \n" % (wrval) RegWrite(0, wrval) ################################################################################ # # Main program # ################################################################################ ser = serial.Serial(0, 115200, timeout=1) #print ser assert (ser.isOpen() == True) ser.flushInput() choice = "" while (choice != "q") and (choice != "Q") : print "Test menu:\n" print "\td - Set all DAC outputs" print "\tr - read register" print "\tt - Read Temperature" print "\tw - write register" print "\ts - Flush serial input buffer" print "\t1 - Read ADC Ch 1" print "\t2 - Read ADC Ch 2" print "\t3 - Read temp sensor 1" print "\t4 - Read temp sensor 2" print "\t5 - Read temp sensor 3" print "\n\tq - quit\n" choice = raw_input("Enter choice:") if (choice == "d"): SetDAC() elif (choice == "r"): ReadRegVal() elif (choice == "w"): WriteRegVal() elif (choice == "s"): FlushSerial() elif (choice == "1"): retList = RegRead(0x01) regDataLong = retList[1] print "\nCh1 = %04x\n" % (regDataLong) elif (choice == "2"): retList = RegRead(0x02) regDataLong = retList[1] print "\nCh2 = %04x\n" % (regDataLong) elif (choice == "3"): ReadTemp(1) elif (choice == "4"): ReadTemp(2) elif (choice == "5"): ReadTemp(3) elif (choice == "q"): print "AAAAARRRRRGGGGGhhhhhh...." else: print "Invalid choice: try again.\n" #except StandardError: ser.close()