import cobibiopacimport csv, atexit,Chartimport socketimport sightlab_utils.sightlab as slfrom sightlab_utils.settings import *
TCP_IP = 'localhost'TCP_PORT = 6343
sightlab = sl.SightLab()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind((TCP_IP, TCP_PORT))s.listen(1)conn, addr = s.accept()conn.sendall(b'1')
# Create FNIR device objectdev1 = cobibiopac.fNIR()
# Connect to device (defaults to localhost)# Run this only once COBI is ready to broadcast:dev1.connect(port=TCP_PORT,timeout=2.0) # make sure the port matches COBI
fnir_data = dev1.getHemoglobinData()
if fnir_data:    oxy1 = 0    i = 0    channel = 0 # select which channel to graph and then obtain data from that channel:    oxy1 = fnir_data[channel][1]    deoxy1 = fnir_data[channel][0]
for data_column in ["oxy", "deoxy", "cobi_flag"]:    sightlab.addCustomTrialDataColumn(data_column)
def sightLabExperiment():	while True:		yield viztask.waitKeyDown(' ')				def get_additional_data():			fnir_data = dev1.getHemoglobinData()			if fnir_data:				oxy1 = 0				i = 0				channel = 0 # select which channel to graph and then obtain data from that channel:								oxy1 = fnir_data[channel][1]				deoxy1 = fnir_data[channel][0]								print(deoxy1)				print(oxy1)			else:				print("No data yet")			sightlab.setCustomTrialData(str(oxy1), 'oxy1')			sightlab.setCustomTrialData(str(deoxy1), 'deoxy1')
		update_action = vizact.onupdate(0, get_additional_data)				yield sightlab.startTrial()				gazeFixatedmessage = 'gaze fixated: ' + e.name		gazeStoppedmessage = 'gaze ended: ' + e.name		gazeStartedmessage = 'gaze started: ' + e.name				def onGazeFixated(e):			sightlab.setCustomTrialData(conn.sendall(b'/' + gazeFixatedmessage.encode()), 'cobi_flag')						def onGazeStopped(e):			sightlab.setCustomTrialData(conn.sendall(b'/' + gazeStoppedmessage.encode()), 'cobi_flag')					def onGazeStarted(e):			sightlab.setCustomTrialData(conn.sendall(b'/' + gazeStartedmessage.encode()), 'cobi_flag')				vizact.addCallback(sightlab.GAZE_TIME_EVENT, onGazeFixated)    		vizact.addCallback(sightlab.GAZE_END_EVENT, onGazeStopped)		vizact.addCallback(sightlab.GAZE_BEGIN_EVENT, onGazeStarted)						yield viztask.waitKeyDown(' ')		yield sightlab.endTrial()	viztask.schedule(sightlab.runExperiment)viztask.schedule(sightLabExperiment)viz.callback(viz.getEventID('ResetPosition'), sightlab.resetViewPoint)