Ejemplo n.º 1
0
    def __init__(self):
        #############################################################
        # Global Variables
        #############################################################
        #example: self.dx_1_read_position_data = 0
        self.sensor_status = 0
        #############################################################
        # Publisher Parts
        #############################################################
        self.pub_respiration_belt_data = rospy.Publisher(
            "respiration_belt/data", Float32MultiArray, queue_size=10)
        #############################################################
        # Subscriber Parts
        #############################################################
        # Set up your subscriber and define its callback
        self.sub_h10_request_state = rospy.Subscriber(
            "/respiration_belt/status", Bool,
            self.sub_respiration_belt_state_callback)

        #############################################################
        # ROS main loop
        #############################################################
        r = rospy.Rate(sensor_sampling_rate)  # 10hz
        while not rospy.is_shutdown():
            if self.sensor_status == True:
                gdx.start(sensor_sampling_rate)
                arr_resp_belt_data = gdx.read()
                self.pub_respiration_belt_data.publish(
                    Float32MultiArray(data=arr_resp_belt_data))
            else:
                gdx.stop()
                pass

            r.sleep()
        gdx.close()

        rospy.spin()  # Spin until ctrl + c
import csv
import os

#gdx.open_usb()
gdx.open_ble(
)  # Comment this out if you decide to use the gdx.open_usb() function instead.

gdx.select_sensors()

with open('csvexample.csv', 'w', newline='') as my_data_file:
    # The commented-out code below would be used if you want to hard-code in an absolute file path for the location of the csv file...
    #with open('C:/full/path/to/your/documents/folder/csvexample2.csv', 'w', newline='') as my_data_file:
    csv_writer = csv.writer(my_data_file)

    gdx.start(period=200)
    column_headers = gdx.enabled_sensor_info()
    csv_writer.writerow(column_headers)

    for i in range(0, 40):
        measurements = gdx.read()
        if measurements == None:
            break
        csv_writer.writerow(measurements)
        print(measurements)

gdx.stop()
gdx.close()

# If you did not hard-code in an absolute path, this is where the file should be found.
print("location of current working directory = ", os.getcwd())
Ejemplo n.º 3
0
def simulation(q):

    import time
    from gdx import gdx  #The gdx function calls are from a gdx.py file inside the gdx folder, which must be with this program.

    gdx = gdx.gdx()

    time_between_readings_in_seconds = 0.2
    number_of_readings = 500
    digits_of_precision = 2

    gdx.open_usb()
    gdx.select_sensors(
        [1]
    )  # You will be asked to select the sensors to be used. You can select up to three.

    sensor_times = []
    sensor_readings = []
    period_in_ms = time_between_readings_in_seconds * 1000

    gdx.start(period_in_ms)

    # Data Collection:

    collection_complete = False
    while not collection_complete:
        try:
            time = 0
            print('Starting...')

            for i in range(0, number_of_readings):

                # This is where we are reading the list of measurements from the sensors.
                measurements = gdx.read()
                if measurements == None:
                    break

                q.put([time, measurements[0]])

                # Update the time variable with the new time for the next data point
                time = time + time_between_readings_in_seconds

            # The data collection loop is finished
            collection_complete = True
            print('Data collection complete.')

            #stop sensor readings and disconnect device
            gdx.stop()
            gdx.close()

            q.put('Q')
            exit()

        except KeyboardInterrupt:
            collection_complete = True
            gdx.stop()  #Stop sensor readings
            gdx.close()  #Disconnect the device
            print('data  collection stopped by keypress')
            print('Number of readings: ', i + 1)
            q.put('Q')
            exit()
                plot_graph()

            # Update the time variable with the new time for the next data point
            time = time + time_between_readings_in_seconds

        # The data collection loop is finished
        collection_complete = True
        print('data  collection complete')
        print('Number of readings: ', i + 1)
        print('Time between readings: ', time_between_readings_in_seconds,
              " s")
        print('Total time for data collection ', time, ' s')

        # Stop sensor readings and disconnect the device.
        gdx.stop()
        gdx.close()

        # For fast collection we did not print to the graph during data collection. Now that all data
        # have been collected, send the data to the print_table() and plot_graph() function.
        if time_between_readings_in_seconds <= 0.4:
            print_table()
            plt.title(column_headers[0] + ' vs ' +
                      'Time (s)')  #put a title on the top of graph
            plot_graph()

    except KeyboardInterrupt:
        collection_complete = True
        gdx.stop()  #Stop sensor readings
        gdx.close()  #Disconnect the device
        print('data  collection stopped by keypress')
        print('Number of readings: ', i + 1)
def exit(e):
    gdx.close()