コード例 #1
0
def background_task():
    global experiment
    while experiment.fitSessions > 0:
        socketio.sleep(0.1)
        res = experiment.trainThreadStep1()
        if res == "wait":
            continue
        if type(res) is str:
            print(res)
            socketio.emit('my_response', success({"finish": 1, "message": res}), namespace="/res")
            break
        socketio.emit('my_response', success({"finish": 0, "sessions": res[0], "trials": res[1]}), namespace="/res")
    if experiment.fitSessions > 0:
        res = experiment.trainThreadStep2()
        socketio.emit('my_response', success({"finish": 1, "message": res}), namespace="/res")
    while True:
        socketio.sleep(0.1)
        res = experiment.predictThread()
        if res == "wait":
            continue
        if type(res) is str:
            print(res)
            socketio.emit('my_response', success({"finish": 1, "message": res}), namespace="/res")
            break
        socketio.emit('my_response', success({"finish": 0, "predict": res[0], "true": res[1]}), namespace="/res")
コード例 #2
0
ファイル: server.py プロジェクト: zyf970617/hduBCI
def backgroun_task(user_socket):
    global experiment
    while True:
        res = experiment.predictThread()
        if type(res) is str:
            break
        user_socket.send(success(res))
コード例 #3
0
def createTcp():
    global experiment
    if experiment is None:
        return fail("请先创建实验")
    try:
        host = request.args.get("host")
        port = request.args.get("port")
        tcpname = request.args.get("tcpname")
        if host is None:
            host = "127.0.0.1"  # 测试用 正常改成localhost
        if port is None:
            port = 8844
        if tcpname is None:
            tcpname = "dsi"
        else:
            port = int(port)
        TCPParser = experiment.getParse()
        tcp = TCPParser(host=host, port=port, name=tcpname)
        ch_nums = experiment.device_channels
        print("tcp ", tcp)
        tcp.create_batch(ch_nums)
        experiment.set_dataIn(tcp)
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success()
コード例 #4
0
def getResult():
    global experiment
    try:
        res = experiment.predictOnce()
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success({"result": int(res)})
コード例 #5
0
def upload():
    if request.method == 'POST':
        f = request.files['file']
        basepath = os.path.dirname(__file__)
        upload_path = os.path.join(basepath, 'models', secure_filename(f.filename))
        f.save(upload_path)
        # print(f.filename)
        return success({"filename": f.filename})
    return fail("必须使用post方法上传文件")
コード例 #6
0
def stopTcp():
    global experiment
    if experiment is None:
        return fail("请先创建实验")
    try:
        experiment.stop_tcp()
    except Exception as e:
        print(e.with_traceback())
        return fail(str(e))
    return success()
コード例 #7
0
def startTcp():
    global experiment
    if experiment is None:
        return fail("请先创建实验")
    try:
        experiment.start_tcp()
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success()
コード例 #8
0
def connect():
    global experiment, _thread
    try:
        experiment.start()
        print("实验开始")
        # 此处可以添加socket端口,用于将结果发送到在其他终端的程序,建议设置全局变量,或者传输到background_task中
        with thread_lock:
            if _thread is None:
                _thread = socketio.start_background_task(target=background_task)
    except Exception as e:
        traceback.print_exc()
        emit('my_response', fail(str(e)), namespace="/res")
    emit('my_response', success(), namespace="/res")
コード例 #9
0
ファイル: server.py プロジェクト: zyf970617/hduBCI
def createTcp():
    global experiment
    if experiment == None:
        return fail("请先创建实验")
    try:
        tcp = TCPParser('localhost', 8712)
        ch_nums = experiment.device_channels
        tcp.crate_batch(ch_nums)
        experiment.set_dataIn(tcp)
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success()
コード例 #10
0
def getdata():
    global experiment
    # print("TCP END WHEN GET DATA",experiment.tcp.end)
    try:
        timeend = int(request.args.get('timeend'))
        arr, rend = experiment.getData(timeend, show=True)
        # print(arr.tolist())
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    # print("返回数据维度:", np.array(arr).shape)
    # print(np.array(arr).shape)
    # ['Fz','Cz','Pz','P3','P4','P7','P8','Oz','O1','O2','T7','T8']
    return success({"data": arr.tolist(), 'ch_names': experiment.channels, 'timeend': rend})
コード例 #11
0
def createClassfier():
    global experiment
    if experiment is None:
        return fail("请先创建实验")
    try:
        module = importlib.import_module("models.classfier")
        for name in module.getClassName():
            content = "globals()['" + name + "']=module." + name
            exec(content)
        experiment.set_classfier(module.getModel())
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success()
コード例 #12
0
def createExperiment():
    global experiment
    try:
        experiment = Experiment()
        sessions = int(request.args.get('sessions'))
        fitSessions = int(request.args.get("fitsessions"))
        trials = int(request.args.get('trials'))
        duration = int(request.args.get('duration'))
        interval = int(request.args.get('interval'))
        tmin = int(request.args.get('tmin'))
        tmax = int(request.args.get('tmax'))
        device = int(request.args.get('device'))
        experiment.setParameters(sessions, fitSessions, trials, duration, interval, tmin, tmax, device)
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success()
コード例 #13
0
def getDataMean():
    global experiment
    # print("TCP END WHEN GET DATA",experiment.tcp.end)
    try:
        timeend = int(request.args.get('timeend'))
        arr, rend = experiment.getData(timeend, windows=1000, tcpid=-1, median=True, normalize=True)
        # print(arr.tolist())
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    # TESTBEGIN
    # lchs=len(experiment.channels) #单机测试双脑 所以除以2 正常情况不除
    # TESTEND
    # arr1=arr[:lchs].mean(axis=0)
    # arr2=arr[lchs:].mean(axis=0)
    # ls=np.vstack([arr1, arr2]).tolist()
    # print(arr.shape)
    return success({"data": arr.tolist(), 'ch_names': ['S1', 'S2'], 'timeend': rend})
コード例 #14
0
ファイル: server.py プロジェクト: zyf970617/hduBCI
def startExperiment():
    global experiment, _thread
    user_socket = request.environ.get("wsgi.websocket")
    if not user_socket:
        return fail("请以WEBSOCKET方式连接")
    try:
        experiment.start()
        print("实验开始")
        with lock:
            if _thread is None:
                _thread = threading.Thread(target=backgroun_task,
                                           args=(user_socket, ))
                _thread.start()
                _thread.join()
        _thread = None
        return success("实验结束")
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
コード例 #15
0
def createFilter():
    global experiment
    if experiment is None:
        return fail("请先创建实验")
    low = 1
    high = 40
    sampleRateFrom = 300
    sampleRateTo = 1000
    try:
        low = float(request.args.get('low'))
        high = float(request.args.get('high'))
        sampleRateTo = int(request.args.get('sampleRate'))
        channels = eval(request.args.get('channels'))
        idxs = experiment.set_channel(channels)
        mfilter = BciFilter(low, high, sampleRateFrom, sampleRateTo, idxs)
        experiment.set_filter(mfilter)
    except Exception as e:
        traceback.print_exc()
        return fail(str(e))
    return success()
コード例 #16
0
def savedata():
    global experiment
    experiment.saveData()
    return success()