def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] colors = [ QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua') ] self.gyro_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.gyro_parent.setCheckState(0, 2) self.gyro_parent.setText(0, 'Gyro') self.gyro_parent.addChild( self.createPlotLine(0, colors[0], 'Gyro X Axis')) self.gyro_parent.addChild( self.createPlotLine(1, colors[1], 'Gyro Y Axis')) self.gyro_parent.addChild( self.createPlotLine(2, colors[2], 'Gyro Z Axis')) self.ui.tree_widget.expandItem(self.gyro_parent) self.accel_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.accel_parent.setCheckState(0, 2) self.accel_parent.setText(0, 'Accel') self.accel_parent.addChild( self.createPlotLine(3, colors[3], 'Accel X Axis')) self.accel_parent.addChild( self.createPlotLine(4, colors[4], 'Accel Y Axis')) self.accel_parent.addChild( self.createPlotLine(5, colors[5], 'Accel Z Axis')) self.ui.tree_widget.expandItem(self.accel_parent) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register( self._gyro_raw_data_receved, VehicleEventDispatcher.GYRO_DATA_EVENT) vehicle_event_dispatcher.register( self._accel_raw_data_receved, VehicleEventDispatcher.ACCEL_DATA_EVENT) vehicle_event_dispatcher.register( self._mag_raw_data_receved, VehicleEventDispatcher.MAGNETOMETER_DATA_EVENT)
def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] self._tree_nodes = [] vehicle_event_dispatcher.register( self._receiver_nb_channels_received, VehicleEventDispatcher.RECEIVER_NB_CHANNEL_EVENT) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register( self._receiver_roll_event, VehicleEventDispatcher.RECEIVER_ROLL_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_pitch_event, VehicleEventDispatcher.RECEIVER_PITCH_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_yaw_event, VehicleEventDispatcher.RECEIVER_YAW_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_throttle_event, VehicleEventDispatcher.RECEIVER_THROTTLE_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_mode_event, VehicleEventDispatcher.RECEIVER_MODE_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux1_event, VehicleEventDispatcher.RECEIVER_AUX1_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux2_event, VehicleEventDispatcher.RECEIVER_AUX2_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux3_event, VehicleEventDispatcher.RECEIVER_AUX3_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux4_event, VehicleEventDispatcher.RECEIVER_AUX4_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux5_event, VehicleEventDispatcher.RECEIVER_AUX5_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux6_event, VehicleEventDispatcher.RECEIVER_AUX6_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux7_event, VehicleEventDispatcher.RECEIVER_AUX7_PROPERTY_EVENT)
def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] self._tree_nodes = [] vehicle_event_dispatcher.register(self._receiver_nb_channels_received, VehicleEventDispatcher.RECEIVER_NB_CHANNEL_EVENT) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register(self._receiver_roll_event, VehicleEventDispatcher.RECEIVER_ROLL_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_pitch_event, VehicleEventDispatcher.RECEIVER_PITCH_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_yaw_event, VehicleEventDispatcher.RECEIVER_YAW_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_throttle_event, VehicleEventDispatcher.RECEIVER_THROTTLE_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_mode_event, VehicleEventDispatcher.RECEIVER_MODE_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux1_event, VehicleEventDispatcher.RECEIVER_AUX1_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux2_event, VehicleEventDispatcher.RECEIVER_AUX2_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux3_event, VehicleEventDispatcher.RECEIVER_AUX3_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux4_event, VehicleEventDispatcher.RECEIVER_AUX4_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux5_event, VehicleEventDispatcher.RECEIVER_AUX5_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux6_event, VehicleEventDispatcher.RECEIVER_AUX6_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux7_event, VehicleEventDispatcher.RECEIVER_AUX7_PROPERTY_EVENT)
def __init__(self, vehicle_model, message_sender): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.vehicle_model = vehicle_model self.message_sender = message_sender self.ui = Ui_DataPlotPanel() self.ui.setupUi(self)
def __init__(self, vehicle_model, protocol_handler): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self._vehicle_model = vehicle_model self._protocol_handler = protocol_handler self.ui = Ui_DataPlotPanel() self.ui.setupUi(self)
def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] self._colors = [ QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua')] self.gyro_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.gyro_parent.setCheckState(0, 2) self.gyro_parent.setText(0, 'Gyro') self.gyro_parent.addChild (self.createPlotLine(0, self._colors[0], 'Gyro X Axis')) self.gyro_parent.addChild (self.createPlotLine(1, self._colors[1], 'Gyro Y Axis')) self.gyro_parent.addChild (self.createPlotLine(2, self._colors[2], 'Gyro Z Axis')) self.ui.tree_widget.expandItem(self.gyro_parent) self.accel_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.accel_parent.setCheckState(0, 2) self.accel_parent.setText(0, 'Accel') self.accel_parent.addChild (self.createPlotLine(3, self._colors[3], 'Accel X Axis')) self.accel_parent.addChild (self.createPlotLine(4, self._colors[4], 'Accel Y Axis')) self.accel_parent.addChild (self.createPlotLine(5, self._colors[5], 'Accel Z Axis')) self.ui.tree_widget.expandItem(self.accel_parent) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register(self._gyro_raw_data_receved, VehicleEventDispatcher.GYRO_DATA_EVENT) vehicle_event_dispatcher.register(self._accel_raw_data_receved, VehicleEventDispatcher.ACCEL_DATA_EVENT) vehicle_event_dispatcher.register(self._mag_raw_data_receved, VehicleEventDispatcher.MAGNETOMETER_DATA_EVENT) vehicle_event_dispatcher.register(self._is_magnetometer_detected_event, VehicleEventDispatcher.MAGNETOMETER_DETECTED_EVENT)
class ReceiverDataPlotContoller(QtGui.QWidget, BasePanelController): def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] self._tree_nodes = [] vehicle_event_dispatcher.register( self._receiver_nb_channels_received, VehicleEventDispatcher.RECEIVER_NB_CHANNEL_EVENT) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register( self._receiver_roll_event, VehicleEventDispatcher.RECEIVER_ROLL_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_pitch_event, VehicleEventDispatcher.RECEIVER_PITCH_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_yaw_event, VehicleEventDispatcher.RECEIVER_YAW_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_throttle_event, VehicleEventDispatcher.RECEIVER_THROTTLE_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_mode_event, VehicleEventDispatcher.RECEIVER_MODE_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux1_event, VehicleEventDispatcher.RECEIVER_AUX1_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux2_event, VehicleEventDispatcher.RECEIVER_AUX2_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux3_event, VehicleEventDispatcher.RECEIVER_AUX3_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux4_event, VehicleEventDispatcher.RECEIVER_AUX4_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux5_event, VehicleEventDispatcher.RECEIVER_AUX5_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux6_event, VehicleEventDispatcher.RECEIVER_AUX6_PROPERTY_EVENT) vehicle_event_dispatcher.register( self._receiver_aux7_event, VehicleEventDispatcher.RECEIVER_AUX7_PROPERTY_EVENT) def _receiver_nb_channels_received(self, header, nb_channel): channel_array_names = [ 'Roll', 'Pitch', 'Yaw', 'Throttle', 'Mode', 'AUX1', 'AUX2', 'AUX3', 'AUX4', 'AUX5', 'AUX6', 'AUX7', 'AUX8' ] colors = [ QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua') ] for i in range(0, int(nb_channel)): self._tree_nodes.append(QtGui.QTreeWidgetItem(self.ui.tree_widget)) self._tree_nodes[i].setCheckState(0, 2) self._tree_nodes[i].setText(1, channel_array_names[i]) self._tree_nodes[i].setBackgroundColor(0, colors[i]) self._tree_nodes[i].setText(2, '0.000') self._plot_datas_arrays.append([0.0] * 128) self._curves.append( PlotCurveItem(self._plot_datas_arrays[i], pen={ 'color': colors[i], 'width': 2 })) self.ui.plot_view.addItem(self._curves[i]) def _protocol_handler_changed_event(self, event, protocol_handler): self._protocol_handler = protocol_handler def start(self): self._protocol_handler.subscribe_receiver_data() def stop(self): self._protocol_handler.unsubscribe_command() def _receiver_roll_event(self, event, roll): self._update_panel_data(0, roll) def _receiver_pitch_event(self, event, pitch): self._update_panel_data(1, pitch) def _receiver_yaw_event(self, event, yaw): self._update_panel_data(2, yaw) def _receiver_throttle_event(self, event, throttle): self._update_panel_data(3, throttle) def _receiver_mode_event(self, event, mode): self._update_panel_data(4, mode) def _receiver_aux1_event(self, event, aux1): self._update_panel_data(5, aux1) def _receiver_aux2_event(self, event, aux2): self._update_panel_data(6, aux2) def _receiver_aux3_event(self, event, aux3): self._update_panel_data(7, aux3) def _receiver_aux4_event(self, event, aux4): self._update_panel_data(8, aux4) def _receiver_aux5_event(self, event, aux5): self._update_panel_data(9, aux5) def _receiver_aux6_event(self, event, aux6): self._update_panel_data(10, aux6) def _receiver_aux7_event(self, event, aux7): self._update_panel_data(11, aux7) def _update_panel_data(self, index, value): if self._tree_nodes[index].checkState(0) == 2: self._plot_datas_arrays[index].insert(0, value) self._plot_datas_arrays[index].pop() self._tree_nodes[index].setText(2, str(value)) self._curves[index].setData(self._plot_datas_arrays[index]) if self._curves[index] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[index]) elif self._curves[index] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[index])
class SensorsDataPlotContoller(QtGui.QWidget, BasePanelController): def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] colors = [ QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua')] self.gyro_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.gyro_parent.setCheckState(0, 2) self.gyro_parent.setText(0, 'Gyro') self.gyro_parent.addChild (self.createPlotLine(0, colors[0], 'Gyro X Axis')) self.gyro_parent.addChild (self.createPlotLine(1, colors[1], 'Gyro Y Axis')) self.gyro_parent.addChild (self.createPlotLine(2, colors[2], 'Gyro Z Axis')) self.ui.tree_widget.expandItem(self.gyro_parent) self.accel_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.accel_parent.setCheckState(0, 2) self.accel_parent.setText(0, 'Accel') self.accel_parent.addChild (self.createPlotLine(3, colors[3], 'Accel X Axis')) self.accel_parent.addChild (self.createPlotLine(4, colors[4], 'Accel Y Axis')) self.accel_parent.addChild (self.createPlotLine(5, colors[5], 'Accel Z Axis')) self.ui.tree_widget.expandItem(self.accel_parent) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register(self._gyro_raw_data_receved, VehicleEventDispatcher.GYRO_DATA_EVENT) vehicle_event_dispatcher.register(self._accel_raw_data_receved, VehicleEventDispatcher.ACCEL_DATA_EVENT) vehicle_event_dispatcher.register(self._mag_raw_data_receved, VehicleEventDispatcher.MAGNETOMETER_DATA_EVENT) def createPlotLine(self, idx, color, plotName): self._plot_datas_arrays.append([0.0] * 128) self._curves.append( PlotCurveItem(self._plot_datas_arrays[idx], pen={'color':color, 'width': 2}) ) self.ui.plot_view.addItem(self._curves[idx]) newLine = QtGui.QTreeWidgetItem() newLine.setCheckState(0, 2) newLine.setBackgroundColor(0, color) newLine.setText(1, plotName + ' ') newLine.setText(2, '0.000') return newLine def _protocol_handler_changed_event(self, event, protocol_handler): self._protocol_handler = protocol_handler; def start(self): self._protocol_handler.subscribe_sensors_data(); def stop(self): self._protocol_handler.unsubscribe_command() def _gyro_raw_data_receved(self, event, gyro_vector): if self.gyro_parent.checkState(0) != 2: for i in range(0, 3): if self._curves[i] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i]) return gyro_data_array = [gyro_vector.get_x(),gyro_vector.get_y(),gyro_vector.get_z()] for i in range(0, 3): gyro_child_node = self.gyro_parent.child(i) if gyro_child_node.checkState(0) == 2: self._plot_datas_arrays[i].insert(0, float(gyro_data_array[i])) self._plot_datas_arrays[i].pop() gyro_child_node.setText(2, gyro_data_array[i]) self._curves[i].setData(self._plot_datas_arrays[i]) if self._curves[i] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[i]) elif self._curves[i] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i]) def _accel_raw_data_receved(self, event, accel_vector): if self.accel_parent.checkState(0) != 2: for i in range(0, 3): if self._curves[i+3] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i+3]) return accel_data_array = [accel_vector.get_x(),accel_vector.get_y(),accel_vector.get_z()] for i in range(0, 3): accel_child_node = self.accel_parent.child(i) if accel_child_node.checkState(0) == 2: self._plot_datas_arrays[i+3].insert(0, float(accel_data_array[i])) self._plot_datas_arrays[i+3].pop() accel_child_node.setText(2, accel_data_array[i]) self._curves[i+3].setData(self._plot_datas_arrays[i+3]) if self._curves[i+3] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[i+3]) elif self._curves[i+3] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i+3]) def _mag_raw_data_receved(self, event, mag_vector): return
class SensorsDataPlotContoller(QtGui.QWidget, BasePanelController): def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] self._colors = [ QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua')] self.gyro_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.gyro_parent.setCheckState(0, 2) self.gyro_parent.setText(0, 'Gyro') self.gyro_parent.addChild (self.createPlotLine(0, self._colors[0], 'Gyro X Axis')) self.gyro_parent.addChild (self.createPlotLine(1, self._colors[1], 'Gyro Y Axis')) self.gyro_parent.addChild (self.createPlotLine(2, self._colors[2], 'Gyro Z Axis')) self.ui.tree_widget.expandItem(self.gyro_parent) self.accel_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.accel_parent.setCheckState(0, 2) self.accel_parent.setText(0, 'Accel') self.accel_parent.addChild (self.createPlotLine(3, self._colors[3], 'Accel X Axis')) self.accel_parent.addChild (self.createPlotLine(4, self._colors[4], 'Accel Y Axis')) self.accel_parent.addChild (self.createPlotLine(5, self._colors[5], 'Accel Z Axis')) self.ui.tree_widget.expandItem(self.accel_parent) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register(self._gyro_raw_data_receved, VehicleEventDispatcher.GYRO_DATA_EVENT) vehicle_event_dispatcher.register(self._accel_raw_data_receved, VehicleEventDispatcher.ACCEL_DATA_EVENT) vehicle_event_dispatcher.register(self._mag_raw_data_receved, VehicleEventDispatcher.MAGNETOMETER_DATA_EVENT) vehicle_event_dispatcher.register(self._is_magnetometer_detected_event, VehicleEventDispatcher.MAGNETOMETER_DETECTED_EVENT) def createPlotLine(self, idx, color, plotName): self._plot_datas_arrays.append([0.0] * 128) self._curves.append( PlotCurveItem(self._plot_datas_arrays[idx], pen={'color':color, 'width': 2}) ) self.ui.plot_view.addItem(self._curves[idx]) newLine = QtGui.QTreeWidgetItem() newLine.setCheckState(0, 2) newLine.setBackgroundColor(0, color) newLine.setText(1, plotName + ' ') newLine.setText(2, '0.000') return newLine def _protocol_handler_changed_event(self, event, protocol_handler): self._protocol_handler = protocol_handler; def _is_magnetometer_detected_event(self, header, is_detected): if is_detected == 'Detected': self.mag_parent = QtGui.QTreeWidgetItem(self.ui.tree_widget) self.mag_parent.setCheckState(0, 2) self.mag_parent.setText(0, 'Magnetometer') self.mag_parent.addChild (self.createPlotLine(6, self._colors[6], 'Mag X Axis')) self.mag_parent.addChild (self.createPlotLine(7, self._colors[7], 'Mag Y Axis')) self.mag_parent.addChild (self.createPlotLine(8, self._colors[8], 'Mag Z Axis')) self.ui.tree_widget.expandItem(self.mag_parent) def start(self): self._protocol_handler.subscribe_sensors_data(); def stop(self): self._protocol_handler.unsubscribe_command(); def _gyro_raw_data_receved(self, event, gyro_vector): if self.gyro_parent.checkState(0) != 2: for i in range(0, 3): if self._curves[i] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i]) return gyro_data_array = [gyro_vector.get_x(),gyro_vector.get_y(),gyro_vector.get_z()] for i in range(0, 3): gyro_child_node = self.gyro_parent.child(i) if gyro_child_node.checkState(0) == 2: self._plot_datas_arrays[i].insert(0, float(gyro_data_array[i])) self._plot_datas_arrays[i].pop() gyro_child_node.setText(2, gyro_data_array[i]) self._curves[i].setData(self._plot_datas_arrays[i]) if self._curves[i] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[i]) elif self._curves[i] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i]) def _accel_raw_data_receved(self, event, accel_vector): if self.accel_parent.checkState(0) != 2: for i in range(0, 3): if self._curves[i+3] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i+3]) return accel_data_array = [accel_vector.get_x(),accel_vector.get_y(),accel_vector.get_z()] for i in range(0, 3): accel_child_node = self.accel_parent.child(i) if accel_child_node.checkState(0) == 2: self._plot_datas_arrays[i+3].insert(0, float(accel_data_array[i])) self._plot_datas_arrays[i+3].pop() accel_child_node.setText(2, accel_data_array[i]) self._curves[i+3].setData(self._plot_datas_arrays[i+3]) if self._curves[i+3] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[i+3]) elif self._curves[i+3] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i+3]) def _mag_raw_data_receved(self, event, mag_vector): if self.mag_parent.checkState(0) != 2: for i in range(0, 3): if self._curves[i+6] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i+6]) return mag_data_array = [mag_vector.get_x(),mag_vector.get_y(),mag_vector.get_z()] for i in range(0, 3): mag_child_node = self.mag_parent.child(i) if mag_child_node.checkState(0) == 2: self._plot_datas_arrays[i+6].insert(0, float(mag_data_array[i])) self._plot_datas_arrays[i+6].pop() mag_child_node.setText(2, mag_data_array[i]) self._curves[i+6].setData(self._plot_datas_arrays[i+6]) if self._curves[i+6] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[i+6]) elif self._curves[i+6] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[i+6])
class ReceiverDataPlotContoller(QtGui.QWidget, BasePanelController): def __init__(self, vehicle_event_dispatcher, ui_event_dispatcher): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) self.ui.plot_view.setRange(xRange=(0, 128), padding=0.0) self.ui.plot_view.clear() self.ui.plot_view.setBackground(QtGui.QColor('white')) self.ui.tree_widget.clear() self._plot_index = 0 self._plot_datas_arrays = [] self._curves = [] self._tree_nodes = [] vehicle_event_dispatcher.register(self._receiver_nb_channels_received, VehicleEventDispatcher.RECEIVER_NB_CHANNEL_EVENT) ui_event_dispatcher.register(self._protocol_handler_changed_event, UIEventDispatcher.PROTOCOL_HANDLER_EVENT) vehicle_event_dispatcher.register(self._receiver_roll_event, VehicleEventDispatcher.RECEIVER_ROLL_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_pitch_event, VehicleEventDispatcher.RECEIVER_PITCH_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_yaw_event, VehicleEventDispatcher.RECEIVER_YAW_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_throttle_event, VehicleEventDispatcher.RECEIVER_THROTTLE_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_mode_event, VehicleEventDispatcher.RECEIVER_MODE_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux1_event, VehicleEventDispatcher.RECEIVER_AUX1_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux2_event, VehicleEventDispatcher.RECEIVER_AUX2_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux3_event, VehicleEventDispatcher.RECEIVER_AUX3_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux4_event, VehicleEventDispatcher.RECEIVER_AUX4_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux5_event, VehicleEventDispatcher.RECEIVER_AUX5_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux6_event, VehicleEventDispatcher.RECEIVER_AUX6_PROPERTY_EVENT) vehicle_event_dispatcher.register(self._receiver_aux7_event, VehicleEventDispatcher.RECEIVER_AUX7_PROPERTY_EVENT) def _receiver_nb_channels_received(self, header, nb_channel): channel_array_names = ['Roll','Pitch','Yaw','Throttle','Mode','AUX1','AUX2','AUX3','AUX4','AUX5','AUX6','AUX7','AUX8'] colors = [QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua')] for i in range(0, int(nb_channel)) : self._tree_nodes.append(QtGui.QTreeWidgetItem(self.ui.tree_widget)) self._tree_nodes[i].setCheckState(0, 2) self._tree_nodes[i].setText(1, channel_array_names[i]) self._tree_nodes[i].setBackgroundColor(0, colors[i]) self._tree_nodes[i].setText(2, '0.000') self._plot_datas_arrays.append([0.0] * 128) self._curves.append( PlotCurveItem(self._plot_datas_arrays[i], pen={'color':colors[i], 'width': 2}) ) self.ui.plot_view.addItem(self._curves[i]) def _protocol_handler_changed_event(self, event, protocol_handler): self._protocol_handler = protocol_handler; def start(self): self._protocol_handler.subscribe_receiver_data(); def stop(self): self._protocol_handler.unsubscribe_command() def _receiver_roll_event(self, event, roll): self._update_panel_data(0, roll) def _receiver_pitch_event(self, event, pitch): self._update_panel_data(1, pitch) def _receiver_yaw_event(self, event, yaw): self._update_panel_data(2, yaw) def _receiver_throttle_event(self, event, throttle): self._update_panel_data(3, throttle) def _receiver_mode_event(self, event, mode): self._update_panel_data(4, mode) def _receiver_aux1_event(self, event, aux1): self._update_panel_data(5, aux1) def _receiver_aux2_event(self, event, aux2): self._update_panel_data(6, aux2) def _receiver_aux3_event(self, event, aux3): self._update_panel_data(7, aux3) def _receiver_aux4_event(self, event, aux4): self._update_panel_data(8, aux4) def _receiver_aux5_event(self, event, aux5): self._update_panel_data(9, aux5) def _receiver_aux6_event(self, event, aux6): self._update_panel_data(10, aux6) def _receiver_aux7_event(self, event, aux7): self._update_panel_data(11, aux7) def _update_panel_data(self, index, value): if self._tree_nodes[index].checkState(0) == 2: self._plot_datas_arrays[index].insert(0, value) self._plot_datas_arrays[index].pop() self._tree_nodes[index].setText(2, str(value)) self._curves[index].setData(self._plot_datas_arrays[index]) if self._curves[index] not in self.ui.plot_view.items(): self.ui.plot_view.addItem(self._curves[index]) elif self._curves[index] in self.ui.plot_view.items(): self.ui.plot_view.removeItem(self._curves[index])
class DataPlotController(QtGui.QWidget, BasePanelController): def __init__(self, vehicle_model, message_sender): QtGui.QWidget.__init__(self) BasePanelController.__init__(self) self.vehicle_model = vehicle_model self.message_sender = message_sender self.ui = Ui_DataPlotPanel() self.ui.setupUi(self) def start(self, xmlSubPanel, boardConfiguration): '''This method starts a timer used for any long running loops in a subpanel''' self.xmlSubPanel = xmlSubPanel self.boardConfiguration = boardConfiguration self.plotIndex = int(self.xml.find(self.xmlSubPanel + '/Index').text) plotSize = int(self.xml.find(self.xmlSubPanel + '/PlotSize').text) plotNames = self.xml.findall(self.xmlSubPanel + '/PlotName') self.plotCount = len(plotNames) self.ui.graphicsView.setRange(xRange=(0, plotSize), padding=0.0) self.ui.graphicsView.clear() self.ui.treeWidget.clear() self.data, self.curves, colors = [], [], [ QtGui.QColor('blue'), QtGui.QColor('red'), QtGui.QColor('lime'), QtGui.QColor('cornflowerblue'), QtGui.QColor('greenyellow'), QtGui.QColor('violet'), QtGui.QColor('orange'), QtGui.QColor('deepskyblue'), QtGui.QColor('firebrick'), QtGui.QColor('aqua') ] for i in xrange(self.plotCount): self.data.append([0.0] * plotSize) self.curves.append( PlotCurveItem(self.data[i], pen={'color':colors[i], 'width': 2}) ) self.ui.graphicsView.addItem(self.curves[i]) plotName = plotNames[i].text newLine = QtGui.QTreeWidgetItem(self.ui.treeWidget) newLine.setCheckState(0, 2) newLine.setBackgroundColor(0, colors[i]) newLine.setText(1, plotName + ' ') newLine.setText(2, '0.000') self.ui.treeWidget.resizeColumnToContents(0) self.ui.treeWidget.resizeColumnToContents(1) self.legend = self.ui.treeWidget.invisibleRootItem() if self.comm.isConnected() == True: telemetry = self.xml.find(self.xmlSubPanel + '/Telemetry').text if telemetry != '': self.comm.write(telemetry) self.timer = QtCore.QTimer() self.timer.timeout.connect(self.readContinuousData) self.timer.start(50) self.startCommThread() self.plot_timer = QtCore.QTimer() self.plot_timer.timeout.connect(self.update_plot) self.plot_timer.start(100) def readContinuousData(self): '''This method continually reads telemetry from the AeroQuad''' if self.comm.isConnected() and not self.commData.empty(): rawData = self.commData.get() data = rawData.split(',') for i in xrange(self.plotCount): legendRow = self.legend.child(i) if legendRow.checkState(0) == 2: try: dataValue = data[i + self.plotIndex] self.data[i].insert(0, float(dataValue)) self.data[i].pop() legendRow.setText(2, dataValue) except: pass # Do not update output data if invalid number detected from comm read def update_plot(self): for i in xrange(self.plotCount): legendRow = self.legend.child(i) if legendRow.checkState(0) == 2: self.curves[i].setData(self.data[i]) if self.curves[i] not in self.ui.graphicsView.items(): self.ui.graphicsView.addItem(self.curves[i]) else: if self.curves[i] in self.ui.graphicsView.items(): self.ui.graphicsView.removeItem(self.curves[i]) self.ui.graphicsView.autoRange()