Ejemplo n.º 1
0
def detect_ultrasonic():
    global flag_obstacle, capteur, count_obstacle
    #print("flag_obstacle ",flag_obstacle)
    capteur = read_i8(serial_file)  # recupere la positison du capteur
    #print(capteur)
    if capteur == 4 and flag_obstacle == 0:  # s'il y a un obstaccle
        flag_obstacle = 1  # on bloque jusqu'à ce qu'il n'y ait plus d'obstacle
        print("obstacle detecte ...")
        write_order(serial_file, Order.STOP)
        time.sleep(5)
##        msg={"from":name,"info":"obstacle"}
##        reqsock.send_pyobj(msg)
##        rep=reqsock.recv_pyobj()
    if capteur == 4 and flag_obstacle == 1 and path != 8:
        change_path()
        demi_tour()

    if (capteur == 100 and flag_obstacle
            == 1):  # si on est sur qu'il n'y a plus d'obstacle
        flag_obstacle = 0  # on debloque jusqu'au nouvel obstacle
Ejemplo n.º 2
0
def receive_messages():
    """
    Receive messages (server side)
    """
    server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    server_sock.bind(("", CHANNEL))
    print("Waiting for client...")
    # Wait for client
    server_sock.listen(1)

    client_sock, client_address = server_sock.accept()
    print("Accepted connection from {}".format(client_address))
    # Rename function to work with the lib
    client_sock.read = client_sock.recv

    for i in range(10):
        print("Received (i8): {}".format(read_i8(client_sock)))
    big_number = read_i32(client_sock)

    print("Received (i32): {}".format(big_number))

    client_sock.close()
    server_sock.close()
Ejemplo n.º 3
0
def receive_messages():
    """
    Receive messages (server side)
    """
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(('', PORT))
    print("Waiting for client...")
    # Wait for client
    server_socket.listen(1)

    client_sock, client_address = server_socket.accept()
    print("Accepted connection from {}".format(client_address))
    # Wrap socket to work with the lib
    client_sock = SocketAdapter(client_sock)

    for i in range(10):
        print("Received (i8): {}".format(read_i8(client_sock)))
    big_number = read_i32(client_sock)

    print("Received (i32): {}".format(big_number))

    print("Server exiting...")
    client_sock.close()
    server_socket.close()
Ejemplo n.º 4
0
def test_read_write_orders():
    motor_speed = -57
    servo_angle = 512  # 2^9
    big_number = -32768  # -2^15

    f = TemporaryFile()

    # Equivalent to write_i8(f, Order.MOTOR.value)
    write_order(f, Order.MOTOR)
    write_i8(f, motor_speed)

    write_order(f, Order.SERVO)
    write_i16(f, servo_angle)

    write_order(f, Order.ERROR)
    write_i32(f, big_number)

    f.seek(0, 0)
    # Equivalent to Order(read_i8(f))
    read_1st_order = read_order(f)
    read_motor_speed = read_i8(f)

    read_2nd_order = read_order(f)
    read_servo_angle = read_i16(f)

    read_3rd_order = read_order(f)
    read_big_number = read_i32(f)

    assert_eq(read_1st_order, Order.MOTOR)
    assert_eq(read_motor_speed, motor_speed)

    assert_eq(read_2nd_order, Order.SERVO)
    assert_eq(read_servo_angle, servo_angle)

    assert_eq(read_3rd_order, Order.ERROR)
    assert_eq(read_big_number, big_number)
Ejemplo n.º 5
0
def setSpeed(ard, motor, speed):
    write_order(ard.conn, Order.MOTOR)
    write_i8(ard.conn, motor)
    write_i8(ard.conn, speed // 10)
    print(read_i8(ard.conn))
Ejemplo n.º 6
0
def readAll(ardList):
    for ard in ardList:
        ard.conn.reset_output_buffer()
        print(ard)
        print(read_i8(ard.conn))
Ejemplo n.º 7
0
def main():
	for arduino_port in arduinoPorts:
		try:
			ser = open_serial_port(serial_port=arduino_port.device ,baudrate=baudRate, timeout=1)
			serial_file.append(ser)
			
		except (OSError, serial.SerialException):
			pass
	# Wait 3 seconds until Arduino is ready because Arduino resets after serial USB connection
	time.sleep(3)
	# create a list of all no compatible Arduinos and no Arduinos
	serDel = []
	IDS = []
	# Send a command to verify if it is a compatible Arduino
	for ser in serial_file:
		write_order(ser, Order.HELLO)
		try:
			dataIn = read_i8(ser)
			if dataIn>0 and dataIn<10:
				# It is a compatible Arduino
				print("Compatible Arduino ID: "+str(dataIn)+" -> "+str(ser.port))	
				IDS.append(str(dataIn))
			else:
				# No return a valid Data so it is not a compatible arduino	
				ser.close()
				serDel.append(ser)	
				print("No compatible Arduino -> "+str(ser.port))
		except (struct.error, OverflowError):
    #There is no new data from slave, so it is not an Arduino
			ser.close()
			serDel.append(ser)
			#print("No Arduino -> "+str(ser.port))
			pass
	# Delete all no compatibe Arduinos and no Arduinos from serial_file
	for delete in serDel:
		serial_file.remove(delete)

	if not len(serial_file)>0:
		print ("There are not compatible Arduinos connected !!")
	else:
		while True:
			print("===============================================================")
			print("Arduinos Available: ", IDS)
			user_input = input("Choose Arduino ID: ")
			try:
				index_ids=IDS.index(str(user_input))					
				break				
			except ValueError:
				print("Invalid ID.")
		
		continuos=False	
		try:
			while True:
				print("===============================================================")
				print("	SPEED TEST")
				print("Caution: If you have already calibrated ESC and want another calibration, first desconnect ESC  from power source")
				print("0: Normal Operation, if you calibrated before")
				print("1: Calibration")
				print("2: Quit")
				print("===============================================================")
				user_input = input("Enter mode number and then enter: ")
				try:
					mode= int(user_input)
					if mode == 2:
						break
					elif mode == 0:
						write_order(serial_file[index_ids],Order.START)
						createCSV()
						time.sleep(5)
						continuos=True
						break
					elif mode == 1:
						write_order(serial_file[index_ids],Order.CALIBRATION)
						createCSV()
						print("Now connect the ESC to power and wait some seconds")
						time.sleep(12)
						continuos=True
						break
					else:
						print("No valid mode")
						continue
				except ValueError:
					print("Invalid Value.")
			pass
		except KeyboardInterrupt:
			pass

		try:
			print("Arduino data are been collected at "+inputCSV)
			print("Press KeyboardInterrupt Ctl+c for quit")
			count=0
			line1 = []
			while continuos==True:
				write_order(serial_file[index_ids], Order.DATA)
				speed = read_i16(serial_file[index_ids])
				setpoint = read_i16(serial_file[index_ids])	
				control = read_i16(serial_file[index_ids])		
				data = {csvHeaderIndex: count,
								csvHeaderTime: datetime.datetime.now(),
								csvHeaderRPM: speed,
								csvHeaderSetpoint: setpoint,
								csvHeaderControl: control
								}
				line1 = appeandNewRow(data, line1)
				count=count+1
			pass
		except KeyboardInterrupt:
			pass
		write_order(serial_file[index_ids],Order.STOP)
		serial_file[index_ids].close()