void NEUROBITOBJ::update_channelinfo(void) { NDGETVAL gv; int chans,i; float max_sr; if (DevCtx<0) { write_logfile ("could not open Neurobit device context"); return; } if (NdGetParam(ND_PAR_CHAN_NUM, 0, &gv) || (gv.type&~ND_T_LIST)!=ND_T_INT) return; max_sr=0; chans = gv.val.i; outports = chans; strcpy(out_ports[0].out_dim,"uV"); chncol[0]=CI_GREEN; for (i=1; i<5; i++) chncol[i]=CI_GRAY; for (i=0; i<chans; i++) { /* Update channel indicator field info */ if (!NdGetParam(ND_PAR_CH_LABEL, i, &gv)) { strcpy( out_ports[i].out_name,gv.val.t); } if (!NdGetParam(ND_PAR_CH_RANGE_MAX, i, &gv)) { out_ports[i].out_max = gv.val.f; } if (!NdGetParam(ND_PAR_CH_RANGE_MIN, i, &gv)) { out_ports[i].out_min = gv.val.f; } if (!NdGetParam(ND_PAR_CH_SR, i, &gv)) { if (gv.val.f>max_sr) max_sr=gv.val.f; } strcpy(out_ports[i].out_dim,NdParamInfo(ND_PAR_CH_RANGE_MAX, i)->unit); /* if (!NdGetParam(ND_PAR_CH_FUNC, i, &gv)) { if (!strcmp(gv.val.t,"Voltage")) strcpy(out_ports[i].out_dim,"uV"); if (!strcmp(gv.val.t,"Temperature")) strcpy(out_ports[i].out_dim,"Deg"); if (!strcmp(gv.val.t,"Conductance")) strcpy(out_ports[i].out_dim,"uS"); if (!strcmp(gv.val.t,"Resistance")) strcpy(out_ports[i].out_dim,"kOhm"); }*/ if (!NdGetParam(ND_PAR_CH_EN, i, &gv)) { if (gv.val.b) chncol[i+1]= CI_GREEN; else chncol[i+1]=CI_GRAY; } } if (max_sr>0) update_samplingrate((int)max_sr); dev_chans=0; update_dimensions(); reset_oscilloscopes(); InvalidateRect(ghWndMain,NULL,TRUE); InvalidateRect(ghWndDesign,NULL,TRUE); if (ghWndToolbox == hDlg) InvalidateRect(ghWndToolbox,NULL,FALSE); }
void close_captfile(void) { CAPTFILE.do_read=0; CAPTFILE.do_write=0; CAPTFILE.file_action=0; if (CAPTFILE.filehandle!=INVALID_HANDLE_VALUE) { if (!CloseHandle(CAPTFILE.filehandle)) report_error("could not close Archive file"); CAPTFILE.filehandle=INVALID_HANDLE_VALUE; strcpy(CAPTFILE.filename,"none"); PACKET.readstate=0; PACKET.number=0; PACKET.old_number=0; //init_system_time(); reset_oscilloscopes(); } get_session_length(); }
void process_packets(void) { static double calc; int t; TIMING.ppscounter++; TIMING.packetcounter++; if (TIMING.dialog_update++ >= GLOBAL.dialog_interval) TIMING.dialog_update=0; if (TIMING.draw_update++ >= GLOBAL.draw_interval) TIMING.draw_update=0; if (GLOBAL.session_length && (TIMING.packetcounter>=GLOBAL.session_end)) { int sav_fly=GLOBAL.fly; SendMessage(ghWndStatusbox,WM_COMMAND,IDC_STOPSESSION,0); TIMING.packetcounter= GLOBAL.session_start; for (t=0; t<GLOBAL.objects; t++) objects[t]->session_pos(TIMING.packetcounter); if ((!sav_fly)&&(GLOBAL.session_loop) ) { reset_oscilloscopes(); SendMessage(ghWndStatusbox,WM_COMMAND,IDC_RUNSESSION,0); } } else { for (t=0; t<GLOBAL.objects; t++) if (objects[t]) objects[t]->work(); } if (!TIMING.dialog_update) update_statusinfo(); }
void set_session_pos(long pos) { int t,barpos; char szdata[20]; int runflag=0; if (GLOBAL.running) {runflag=1; stop_timer();} TIMING.packetcounter= pos; barpos= (int) ((float)pos/(float)GLOBAL.session_length*1000.0f); for (t=0;t<GLOBAL.objects;t++) objects[t]->session_pos(pos); print_time(szdata,(float)pos/(float)PACKETSPERSECOND,1); SetDlgItemText(ghWndStatusbox,IDC_TIME,szdata); // SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,barpos); // SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,barpos); // SetDlgItemText(ghWndStatusbox,IDC_JUMPPOS,szdata); reset_oscilloscopes(); if (runflag) start_timer(); }
BOOL load_configfile(LPCTSTR pszFileName) { HANDLE hFile; int t, act_samplingrate=DEF_PACKETSPERSECOND; int act_type,num_objects, save_toolbox, save_connected, try_connect; const char * d_name; char new_name[256],szdata[20]; write_logfile("loading design configuration: %s",(char *)pszFileName); hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if(hFile != INVALID_HANDLE_VALUE) { GLOBAL.loading=1; d_name=pszFileName; while (strstr(d_name,"\\")) d_name=strstr(d_name,"\\")+1; strcpy(new_name,"BrainBay - ");strcat(new_name,d_name); SetWindowText(ghWndMain,new_name); strcpy(GLOBAL.configfile,pszFileName); save_settings(); save_toolbox=-1; save_connected=TTY.CONNECTED; SendMessage(ghWndStatusbox,WM_COMMAND, IDC_STOPSESSION,0); //TTY.read_pause=1; close_captfile(); if (ghWndAnimation!=NULL) SendMessage(ghWndAnimation,WM_CLOSE,0,0); ghWndAnimation=NULL; close_toolbox();actobject=NULL; //InvalidateRect(ghWndMain, NULL, TRUE); while (GLOBAL.objects>0) free_object(0); GLOBAL.run_exception=0; GLOBAL.minimized=FALSE; load_next_config_buffer(hFile); load_property("objects",P_INT,&GLOBAL.objects); load_property("main-top",P_INT,&GLOBAL.top); load_property("main-left",P_INT,&GLOBAL.left); load_property("main-right",P_INT,&GLOBAL.right); load_property("main-bottom",P_INT,&GLOBAL.bottom); load_property("anim-top",P_INT,&GLOBAL.anim_top); load_property("anim-left",P_INT,&GLOBAL.anim_left); load_property("anim-right",P_INT,&GLOBAL.anim_right); load_property("anim-bottom",P_INT,&GLOBAL.anim_bottom); load_property("design-top",P_INT,&GLOBAL.design_top); load_property("design-left",P_INT,&GLOBAL.design_left); load_property("design-right",P_INT,&GLOBAL.design_right); load_property("design-bottom",P_INT,&GLOBAL.design_bottom); load_property("tool-top",P_INT,&GLOBAL.tool_top); load_property("tool-left",P_INT,&GLOBAL.tool_left); load_property("tool-right",P_INT,&GLOBAL.tool_right); load_property("tool-bottom",P_INT,&GLOBAL.tool_bottom); load_property("showdesign",P_INT,&GLOBAL.showdesign); load_property("hidestatus",P_INT,&GLOBAL.hidestatus); load_property("showtoolbox",P_INT,&GLOBAL.showtoolbox); load_property("autorun",P_INT,&GLOBAL.autorun); load_property("minimized",P_INT,&GLOBAL.minimized); save_toolbox=GLOBAL.showtoolbox; TTY.PORT=0;try_connect=0; load_property("comport",P_INT,&TTY.PORT); load_property("connected",P_INT,&try_connect); load_property("bidirect",P_INT,&TTY.BIDIRECT); load_property("devicetype",P_INT,&TTY.devicetype); load_property("samplingtype",P_INT,&TTY.samplingrate); load_property("baudtype",P_INT,&TTY.BAUDRATE); load_property("flow_control",P_INT,&TTY.FLOW_CONTROL); if (save_connected) { update_p21state(); save_connected=TTY.CONNECTED; } BreakDownCommPort(); if (try_connect) { TTY.CONNECTED=SetupCommPort(TTY.PORT); update_p21state(); } load_property("captfilename",P_STRING,CAPTFILE.filename); load_property("captfiletype",P_INT,&CAPTFILE.filetype); load_property("captfileoffset",P_INT,&CAPTFILE.offset); load_property("dialoginterval",P_INT,&GLOBAL.dialog_interval); load_property("drawinterval",P_INT,&GLOBAL.draw_interval); load_property("samplingrate",P_INT,&act_samplingrate); PACKETSPERSECOND=act_samplingrate; MoveWindow(ghWndMain,GLOBAL.left,GLOBAL.top,GLOBAL.right-GLOBAL.left,GLOBAL.bottom-GLOBAL.top,TRUE); MoveWindow(ghWndDesign,GLOBAL.design_left,GLOBAL.design_top,GLOBAL.design_right-GLOBAL.design_left,GLOBAL.design_bottom-GLOBAL.design_top,TRUE); if (!GLOBAL.showdesign) { ShowWindow(ghWndDesign, FALSE); SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Show Design"); } else { ShowWindow(ghWndDesign,TRUE); SetWindowPos(ghWndDesign,0,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE); SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Hide Design"); } if (!GLOBAL.hidestatus) ShowWindow(ghWndStatusbox, TRUE); else ShowWindow(ghWndStatusbox,FALSE); num_objects=GLOBAL.objects; GLOBAL.objects=0; for (t=0;t<num_objects;t++) { act_type=load_next_config_buffer(hFile); if (act_type>=0) { create_object(act_type); if (actobject != NULL ) { actobject->load(hFile); link_object(actobject); } else critical_error("Could not load all objects, quitting ...\ndelete brainbay.cfg to prevent this at program startup ... "); } } CloseHandle(hFile); for (t=0;t<num_objects;t++) objects[t]->update_inports(); update_dimensions(); CAPTFILE.filehandle=INVALID_HANDLE_VALUE; CAPTFILE.do_read=0; if (strcmp(CAPTFILE.filename,"none")) { char st[150]; reduce_filepath(st,CAPTFILE.filename); strcpy(CAPTFILE.filename,GLOBAL.resourcepath); strcat(CAPTFILE.filename,"ARCHIVES\\"); strcat(CAPTFILE.filename,st); open_captfile(CAPTFILE.filename); } init_system_time(); reset_oscilloscopes(); PACKET.readstate=0; ShowWindow( ghWndMain, TRUE ); UpdateWindow( ghWndMain ); update_samplingrate(act_samplingrate); update_devicetype(); get_session_length(); SetDlgItemInt(ghWndStatusbox,IDC_SAMPLINGRATE,act_samplingrate,0); SetDlgItemText(ghWndStatusbox,IDC_STATUS,"Configuration loaded"); SetDlgItemText(ghWndStatusbox,IDC_TIME,"0.0"); SetDlgItemText(ghWndStatusbox,IDC_JUMPPOS,"0.0"); sprintf(szdata, "%.1f", (float)GLOBAL.session_length/(float)PACKETSPERSECOND); SetDlgItemText(ghWndStatusbox,IDC_SESSLEN,szdata); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,(LONG)0); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELEND,TRUE,(LONG)0); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,(LONG)0); SetWindowPos(ghWndMain,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); InvalidateRect(ghWndMain,NULL,TRUE); InvalidateRect(ghWndDesign,NULL,TRUE); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,0); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELEND,TRUE,1000); SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,(LONG)(0)); if (GLOBAL.minimized) ShowWindow(ghWndMain, SW_MINIMIZE); GLOBAL.loading=0; if ((GLOBAL.autorun) && (!GLOBAL.run_exception)) SendMessage(ghWndStatusbox,WM_COMMAND, IDC_RUNSESSION,0); if (save_toolbox!=-1) { GLOBAL.showtoolbox=save_toolbox; actobject=objects[GLOBAL.showtoolbox]; actobject->make_dialog(); } write_logfile("load successful"); return TRUE; } write_logfile("could not load design configuration file."); return FALSE; }