def __init__(self, parent=None): super(AvatarEEG, self).__init__() self.free_to_connect = Lock() self.ui = Ui_MainWindow() self.ui.setupUi(self) version = "$Revision: 363 $".replace('$Revision: ', '')[:-2] self.setWindowTitle(tr('Avatar EEG Driver')) t = 'Avatar EEG Driver version 0.%s' % version log(t) self.ui.version_label.setText(t) self.ui.tableWidget.setColumnWidth(1, 120) self.ui.csvCheckBox.setChecked(write_to_csv_init) self.ui.bdfCheckBox.setChecked(write_to_bdf_init) self.ui.impedanceCheckButton.setVisible(False) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(('localhost', 8336)) except: log("Neuroserver not running") else: log("Neuroserver detected") s.close() self.stimer = QtCore.QTimer() self.device_list = {} log("Starting discovery thread") self.discover_thread = DiscoverWorker(self, self.ui.discoverCheckBox) self.connect(self.discover_thread, QtCore.SIGNAL('discover_complete_event(PyQt_PyObject)'), self.discover_complete_event) self.discover_thread.start()
def __init__(self, parent=None): super(AvatarEEG, self).__init__() self.free_to_connect = Lock() self.ui = Ui_MainWindow() self.ui.setupUi(self) version = "$Revision: 144 $".replace( '$Revision: ', '' )[:-2] self.setWindowTitle(tr('Avatar EEG Driver')) t = 'Avatar EEG Driver version 0.%s' % version log(t) self.ui.version_label.setText(t) self.ui.tableWidget.setColumnWidth(1,120) self.ui.csvCheckBox.setChecked(write_to_csv_init) self.ui.bdfCheckBox.setChecked(write_to_bdf_init) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(('localhost', 8336)) except: log("Neuroserver not running") else: log("Neuroserver detected") s.close() self.stimer = QtCore.QTimer() self.device_list = {} log("Starting discovery thread") self.discover_thread = DiscoverWorker(self, self.ui.discoverCheckBox) self.connect(self.discover_thread, QtCore.SIGNAL('discover_complete_event(PyQt_PyObject)'), self.discover_complete_event) self.discover_thread.start()
class AvatarEEG(QtGui.QMainWindow): def __init__(self, parent=None): super(AvatarEEG, self).__init__() self.free_to_connect = Lock() self.ui = Ui_MainWindow() self.ui.setupUi(self) version = "$Revision: 144 $".replace( '$Revision: ', '' )[:-2] self.setWindowTitle(tr('Avatar EEG Driver')) t = 'Avatar EEG Driver version 0.%s' % version log(t) self.ui.version_label.setText(t) self.ui.tableWidget.setColumnWidth(1,120) self.ui.csvCheckBox.setChecked(write_to_csv_init) self.ui.bdfCheckBox.setChecked(write_to_bdf_init) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(('localhost', 8336)) except: log("Neuroserver not running") else: log("Neuroserver detected") s.close() self.stimer = QtCore.QTimer() self.device_list = {} log("Starting discovery thread") self.discover_thread = DiscoverWorker(self, self.ui.discoverCheckBox) self.connect(self.discover_thread, QtCore.SIGNAL('discover_complete_event(PyQt_PyObject)'), self.discover_complete_event) self.discover_thread.start() def closeEvent(self, event): log('Avatar EEG Driver Exiting') del self.discover_thread for v in self.device_list.values(): if v[1]: v[1].stop() def discover_complete_event(self, devices): # check for new devices for bt_addr in devices: if bt_addr[:len(avatar_address_prefix)] == avatar_address_prefix: # this is an Avatar EEG Laird BTM device if bt_addr not in self.device_list.keys(): self.device_found(True, bt_addr) elif self.get_status(bt_addr) == 'Not Present'\ or self.get_status(bt_addr) == 'Disconnected': self.device_found(True, bt_addr) # refound # check for devices that are no longer present for bt_addr in self.device_list.keys(): if bt_addr not in devices: if self.get_status(bt_addr) != 'Not Present': self.device_found(False, bt_addr) def device_found(self, add, bt_addr): if add: if bt_addr not in self.device_list.keys(): row = self.ui.tableWidget.rowCount() self.device_list[bt_addr] = [row, None] self.ui.tableWidget.insertRow(row) self.ui.tableWidget.setItem(row, 0, TableItem(serial_numbers[bt_addr])) self.ui.tableWidget.setItem(row, 2, TableItem('0')) self.update_status('Discovered', bt_addr) r = ReceiveDataWorker(self, bt_addr, self.ui.csvCheckBox.isChecked(), self.ui.bdfCheckBox.isChecked()) self.connect(r, QtCore.SIGNAL('device_connection_event(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)'), self.device_connection_event) self.connect(r, QtCore.SIGNAL('device_rx_event(PyQt_PyObject,PyQt_PyObject)'), self.device_rx_event) self.connect(r, QtCore.SIGNAL('frame_lost_event(PyQt_PyObject,PyQt_PyObject)'), self.frame_lost_event) QtCore.QObject.connect(self.ui.setTimeButton,QtCore.SIGNAL("clicked()"), r.send_set_time) QtCore.QObject.connect(self.ui.setInputShortButton,QtCore.SIGNAL("clicked()"), r.send_input_short) QtCore.QObject.connect(self.ui.setInputSquareWaveButton,QtCore.SIGNAL("clicked()"), r.send_input_square_wave) QtCore.QObject.connect(self.ui.setInputElectrodesButton,QtCore.SIGNAL("clicked()"), r.send_input_electrodes) r.start() self.device_list[bt_addr][1] = r else: # if status is Connected let receive thread detect disconnection # this handles the case where an erroneous discover may miss the device if self.get_status(bt_addr) != 'Connected': self.update_status('Not Present', bt_addr) def device_connection_event(self, connected, bt_addr, filename): if connected: self.update_status('Connected', bt_addr) row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 4, TableItem(filename)) else: # can only transition to Not Present from disconnected assert self.get_status(bt_addr) != 'Not Present', self.get_status(bt_addr) r = self.device_list[bt_addr][1] r.stop() self.device_list[bt_addr][1] = None self.update_status('Disconnected', bt_addr) def device_rx_event(self, samples, bt_addr): row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 2, TableItem(str(samples))) def frame_lost_event(self, frames_lost, bt_addr): row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 3, TableItem(str(frames_lost))) def update_status(self, status, bt_addr): log(status, bt_addr) row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 1, TableItem(status)) def get_status(self, bt_addr): row = self.device_list[bt_addr][0] return self.ui.tableWidget.item(row, 1).text()
class AvatarEEG(QtGui.QMainWindow): def __init__(self, parent=None): super(AvatarEEG, self).__init__() self.free_to_connect = Lock() self.ui = Ui_MainWindow() self.ui.setupUi(self) version = "$Revision: 363 $".replace('$Revision: ', '')[:-2] self.setWindowTitle(tr('Avatar EEG Driver')) t = 'Avatar EEG Driver version 0.%s' % version log(t) self.ui.version_label.setText(t) self.ui.tableWidget.setColumnWidth(1, 120) self.ui.csvCheckBox.setChecked(write_to_csv_init) self.ui.bdfCheckBox.setChecked(write_to_bdf_init) self.ui.impedanceCheckButton.setVisible(False) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(('localhost', 8336)) except: log("Neuroserver not running") else: log("Neuroserver detected") s.close() self.stimer = QtCore.QTimer() self.device_list = {} log("Starting discovery thread") self.discover_thread = DiscoverWorker(self, self.ui.discoverCheckBox) self.connect(self.discover_thread, QtCore.SIGNAL('discover_complete_event(PyQt_PyObject)'), self.discover_complete_event) self.discover_thread.start() def closeEvent(self, event): log('Avatar EEG Driver Exiting') del self.discover_thread for v in self.device_list.values(): if v[1]: v[1].stop() def discover_complete_event(self, devices): bt_addr_list = [] # check for new devices for bt_addr, name in devices: bt_addr_list.append(bt_addr) if name[:11] == 'Avatar EEG ' or name[:11] == 'Laird BTM 0': # this is an Avatar EEG device if bt_addr not in self.device_list.keys(): self.device_found(True, name[11:], bt_addr) elif self.get_status(bt_addr) == 'Not Present'\ or self.get_status(bt_addr) == 'Disconnected': self.device_found(True, name[11:], bt_addr) # refound # check for devices that are no longer present for bt_addr in self.device_list.keys(): if bt_addr not in bt_addr_list: # print bt_addr, devices if self.get_status(bt_addr) != 'Not Present': self.device_found(False, None, bt_addr) def device_found(self, add, serial_num, bt_addr): if add: if bt_addr not in self.device_list.keys(): row = self.ui.tableWidget.rowCount() self.device_list[bt_addr] = [row, None] self.ui.tableWidget.insertRow(row) self.ui.tableWidget.setItem(row, 0, TableItem(serial_num)) self.ui.tableWidget.setItem(row, 2, TableItem('0')) self.update_status('Discovered', serial_num, bt_addr) r = ReceiveDataWorker(self, serial_num, bt_addr, self.ui.csvCheckBox.isChecked(), self.ui.bdfCheckBox.isChecked()) self.connect( r, QtCore.SIGNAL( 'device_connection_event(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)' ), self.device_connection_event) self.connect( r, QtCore.SIGNAL('device_rx_event(PyQt_PyObject,PyQt_PyObject)'), self.device_rx_event) self.connect( r, QtCore.SIGNAL('frame_lost_event(PyQt_PyObject,PyQt_PyObject)'), self.frame_lost_event) QtCore.QObject.connect(self.ui.impedanceCheckButton, QtCore.SIGNAL("clicked()"), r.send_impedance_check) QtCore.QObject.connect(self.ui.setTimeButton, QtCore.SIGNAL("clicked()"), r.send_set_time) QtCore.QObject.connect(self.ui.setInputShortButton, QtCore.SIGNAL("clicked()"), r.send_input_short) QtCore.QObject.connect(self.ui.setInputSquareWaveButton, QtCore.SIGNAL("clicked()"), r.send_input_square_wave) QtCore.QObject.connect(self.ui.setInputElectrodesButton, QtCore.SIGNAL("clicked()"), r.send_input_electrodes) r.start() self.device_list[bt_addr][1] = r else: # if status is Connected let receive thread detect disconnection # this handles the case where an erroneous discover may miss the device if self.get_status(bt_addr) != 'Connected': self.update_status('Not Present', serial_num, bt_addr) def device_connection_event(self, connected, serial_num, bt_addr, filename): if connected: self.update_status('Connected', serial_num, bt_addr) row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 4, TableItem(filename)) else: # can only transition to Not Present from disconnected assert self.get_status(bt_addr) != 'Not Present', self.get_status( bt_addr) r = self.device_list[bt_addr][1] r.stop() self.device_list[bt_addr][1] = None self.update_status('Disconnected', serial_num, bt_addr) def device_rx_event(self, samples, bt_addr): row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 2, TableItem(str(samples))) def frame_lost_event(self, frames_lost, bt_addr): row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 3, TableItem(str(frames_lost))) def update_status(self, status, serial_num, bt_addr): log(status, serial_num) row = self.device_list[bt_addr][0] self.ui.tableWidget.setItem(row, 1, TableItem(status)) def get_status(self, bt_addr): row = self.device_list[bt_addr][0] return self.ui.tableWidget.item(row, 1).text()