def checkErr(* flag):
    for index in range(len(flag)):
        if flag[index] != 0:
            SerialManager.read_existing() #clear rx_buffer
            if SerialManager.write('O000'+'\r'):
                relayStatus=SerialManager.read_to('\r')
                print 'relay status is:',relayStatus
def sendCommand(command):
	
	#clear rx_buffer
    SerialManager.read_existing() 
	
    if SerialManager.write(command + '\r'):
        return SerialManager.read_to('\r')
    else:
        return 'error'
def sendCommand(command):

    #clear rx_buffer
    SerialManager.read_existing()

    if SerialManager.write(command + '\r'):
        return SerialManager.read_to('\r')
    else:
        return 'error'
def stopBalancing(stackNum,cellNum):
    balanceCommand='S'+str(stackNum)+str(cellNum)
    SerialManager.read_existing() #clear rx_buffer
    if SerialManager.write( balanceCommand +'\r'):
        balanceStopTime=SerialManager.read_to('\r')
        print 'balance stop time is:',balanceStopTime
        balanceStopTime=SerialManager.read_to('\r')
        print 'balance stop time is:',balanceStopTime
        
if __name__ == '__main__':
    #if not SERIAL_PORT:
    #    SERIAL_PORT = SerialManager.match_device(GUESS_PREFIX, BITSPERSECOND)
    commandGenerator();
    flag=[]
    voltage=[]
    temperature=[]
    relayStatus=0
    SerialManager.connect(SERIAL_PORT, BITSPERSECOND)
    #while SerialManager.is_connected():

    SerialManager.read_existing() #clear rx_buffer
    if SerialManager.write('C000'+'\r'):
        relayStatus=SerialManager.read_to('\r')
        print 'relay status is:',relayStatus

    SerialManager.read_existing() #clear rx_buffer
    if SerialManager.write('R000'+'\r'):
        totalVoltage=SerialManager.read_to('\r')
        print 'total voltage is:',totalVoltage
    
    SerialManager.read_existing() #clear rx_buffer
    if SerialManager.write('I000'+'\r'):
        totalCurrent=SerialManager.read_to('\r')
        print 'total current is:', totalCurrent 

    SerialManager.read_existing() #clear rx_buffer
    if SerialManager.write('F800'+'\r'):
Exemple #6
0
def serialProcessor():
    global quitFlag
    RelayStatus=0
    '''
        process serial command and send response.
        'V'         // UART-command for receiving
        'T'         //UART-command for read temperature
        'F'	        //UART-command for read flag
        'R'		    //UART-command for read total voltage
        'I' 		//UART-command for  read total current
        'C' 		//UART-command for close the relay
        'O' 		//UART-command for open the relay
        'P'		    //UART-command for receiving the PWM rate
        'J'         //UART-command for read time
        'K'         //UART-command for kill the simulation
    '''   
    
    while True:
        try:
            chars = SerialManager.read_to('\r')
            if len(chars) > 0:
                print('Processing Command:' + chars)
                stackNum = int(chars[1])
                cellNum = int(chars[2:4])
                #cellNum=int(chars[2])*10 + int(chars[3])
                index = stackNum*tm.NumberOfCells+cellNum
                #print "stackNum %d, cellNum %d, index %d" %(stackNum,cellNum,index)
                if chars[0] == 'V':
                    SerialManager.write(str(tm.status['voltageList'][index])+ '\r')
                elif chars[0] == 'B':
                    tm.bg[index].balanceRate = 1.0 * int(chars[4:])/100.0
                    #print 'balcenRate is:', tm.bg[index].balanceRate
                elif chars[0] == 'T':
                    SerialManager.write(str(0)+ '\r')
                elif chars[0] == 'R':
                    totalVoltage=sum(tm.status['voltageList'][:])
                    SerialManager.write(str(totalVoltage)+ '\r')
                elif chars[0] == 'I':
                    totalCurrent=sum(tm.status['voltageList'][:])/tm.load
                    SerialManager.write(str(totalCurrent)+ '\r')
                elif chars[0] == 'C':
                    RelayStatus=1
                    SerialManager.write(str(RelayStatus)+ '\r')
                elif chars[0] == 'O':
                    RelayStatus=0
                    SerialManager.write(str(RelayStatus)+ '\r')
                elif chars[0] == 'J':
                    SerialManager.write(str(tm.clock)+ '\r')
                elif chars[0] == 'K':
                    quitFlag = True
                else:
                    print 'Command Not Defined'
                    SerialManager.write('Command Not Defined'+ '\r')
            time.sleep(0.08)
        except:
            print("error when processing command")
            time.sleep(0.1)
        SERIAL_PORT = args.port
        print "Using serial device '" + SERIAL_PORT + "' from command line."
    else:
        print 'Please select a serialport via args'
if os.name == 'nt':  #sys.platform == 'win32':
    GUESS_PREFIX = "Arduino"
elif os.name == 'posix':
    if sys.platform == "linux" or sys.platform == "linux2":
        GUESS_PREFIX = "2341"  # match by arduino VID
    else:
        GUESS_PREFIX = "tty.usbmodem"
else:
    GUESS_PREFIX = "no prefix"

if __name__ == '__main__':
    #if not SERIAL_PORT:
    #    SERIAL_PORT = SerialManager.match_device(GUESS_PREFIX, BITSPERSECOND)

    SerialManager.connect(SERIAL_PORT, BITSPERSECOND)
    while SerialManager.is_connected():
        command = raw_input("Input your command>>>")
        if len(command) != 0:
            SerialManager.read_existing()  #clear rx_buffer
            if SerialManager.write(command + '\r'):
                str = SerialManager.read_to('\r')
                print(str)
            else:
                print("write error!")
                break
    print("Port closed!")
Exemple #8
0
def serialProcessor():
    global quitFlag
    RelayStatus = 0
    '''
        process serial command and send response.
        'V'         // UART-command for receiving
        'T'         //UART-command for read temperature
        'F'	        //UART-command for read flag
        'R'		    //UART-command for read total voltage
        'I' 		//UART-command for  read total current
        'C' 		//UART-command for close the relay
        'O' 		//UART-command for open the relay
        'P'		    //UART-command for receiving the PWM rate
        'J'         //UART-command for read time
        'K'         //UART-command for kill the simulation
    '''

    while True:
        try:
            chars = SerialManager.read_to('\r')
            if len(chars) > 0:
                print('Processing Command:' + chars)
                stackNum = int(chars[1])
                cellNum = int(chars[2:4])
                #cellNum=int(chars[2])*10 + int(chars[3])
                index = stackNum * tm.NumberOfCells + cellNum
                #print "stackNum %d, cellNum %d, index %d" %(stackNum,cellNum,index)
                if chars[0] == 'V':
                    SerialManager.write(
                        str(tm.status['voltageList'][index]) + '\r')
                elif chars[0] == 'B':
                    tm.bg[index].balanceRate = 1.0 * int(chars[4:]) / 100.0
                    #print 'balcenRate is:', tm.bg[index].balanceRate
                elif chars[0] == 'T':
                    SerialManager.write(str(0) + '\r')
                elif chars[0] == 'R':
                    totalVoltage = sum(tm.status['voltageList'][:])
                    SerialManager.write(str(totalVoltage) + '\r')
                elif chars[0] == 'I':
                    totalCurrent = sum(tm.status['voltageList'][:]) / tm.load
                    SerialManager.write(str(totalCurrent) + '\r')
                elif chars[0] == 'C':
                    RelayStatus = 1
                    SerialManager.write(str(RelayStatus) + '\r')
                elif chars[0] == 'O':
                    RelayStatus = 0
                    SerialManager.write(str(RelayStatus) + '\r')
                elif chars[0] == 'J':
                    SerialManager.write(str(tm.clock) + '\r')
                elif chars[0] == 'K':
                    quitFlag = True
                else:
                    print 'Command Not Defined'
                    SerialManager.write('Command Not Defined' + '\r')
            time.sleep(0.08)
        except:
            print("error when processing command")
            time.sleep(0.1)
	print 'Setting up Pololu 1'
	e_elev = PololuController(manager2, 2)
	print 'Setting up Pololu 2'

	e_elev.move_to(0)
	time.sleep(1)

	last_voltages = []
	hold_counter = 0
	s2_array = [2.5, 0.8, 2.5, 4]
	s5_array = [2.0, 1, 2.0, 3]
	e_rot_array = [0, 30, 0, -30]
	e_elev_array = [0, 20, 0, -20]

	while(alive):
		manager1.write("@MARM?")
		if marm.pack_into_received(manager1.serial_io.read(17)):
			if not controlled(last_voltages, marm.voltages):
				hold_counter += 1
			else:
				hold_counter = 0
			if hold_counter < 50:
				s5_angle = (marm.voltages[5] - 2550) / 900.0 + 2
				s2_angle = (2350 - marm.voltages[6]) / 300.0 + 2.5
				e_rot_angle = (marm.voltages[4] - 2600) / 20
				e_elev_angle = (marm.voltages[1] - 2400) / 25
			'''else:
				if hold_counter >= 250: hold_counter = 50
				print 'Starting auto routine'
				arr_i = (hold_counter / 50) % 4
				print arr_i