示例#1
0
	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);
	}
示例#2
0
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();
}
示例#3
0
文件: timer.cpp 项目: RD3BAX/BrainBay
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();

}
示例#4
0
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();

}
示例#5
0
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;    	
}