Пример #1
0
Файл: test.c Проект: palmerc/lab
void  TaskStart (void *pdata)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    INT16S     key;


    pdata = pdata;                                         /* Prevent compiler warning                 */

    TaskStartDispInit();                                   /* Setup the display                        */

    OSStatInit();                                          /* Initialize uC/OS-II's statistics         */

    MsgQueue = OSQCreate(&MsgQueueTbl[0], MSG_QUEUE_SIZE); /* Create a message queue                   */

    TaskStartCreateTasks();

    for (;;) {
        TaskStartDisp();                                  /* Update the display                       */

        if (PC_GetKey(&key)) {                             /* See if key has been pressed              */
            if (key == 0x1B) {                             /* Yes, see if it's the ESCAPE key          */
                exit(0);                                   /* Yes, return to DOS                       */
            }
        }

        OSCtxSwCtr = 0;                                    /* Clear the context switch counter         */
        OSTimeDly(OS_TICKS_PER_SEC);                       /* Wait one second                          */
    }
}
/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void  TaskStart (void *pdata)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    char       s[100];
    INT16S     key;


    pdata = pdata;                                         /* Prevent compiler warning                 */

    TaskStartDispInit();                                   /* Initialize the display                   */

    OS_ENTER_CRITICAL();								   /* Used to disable interrupts (see chapter 13)*/
    PC_VectSet(0x08, OSTickISR);                           /* Install uC/OS-II's clock tick ISR        */
    PC_SetTickRate(OS_TICKS_PER_SEC);                      /* Reprogram tick rate                      */
    OS_EXIT_CRITICAL();									   /* Re-enable interrupts*/

    OSStatInit();                                          /* Initialize uC/OS-II's statistics         */

    TaskStartCreateTasks();                                /* Create all the application tasks         */

    for (;;) {


        if (PC_GetKey(&key) == TRUE) {                     /* See if key has been pressed              */
            if (key == 0x1B) {                             /* Yes, see if it's the ESCAPE key          */
                PC_DOSReturn();                            /* Return to DOS                            */
            }
        }

        OSCtxSwCtr = 0;                                    /* Clear context switch counter             */
        OSTimeDlyHMSM(0, 0, 1, 0);                         /* Wait one second                          */
    }
}
Пример #3
0
/*
*********************************************************************************************************
*                                              STARTUP TASK
*********************************************************************************************************
*/
void  TaskStart (void *pdata) {
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    char       s[100];
    INT16S     key;

    pdata = pdata;                                         /* Prevent compiler warning                 */

    TaskStartDispInit();                                   /* Initialize the display                   */

    OS_ENTER_CRITICAL();
    PC_VectSet(0x08, OSTickISR);                           /* Install uC/OS-II's clock tick ISR        */
    PC_SetTickRate(OS_TICKS_PER_SEC);                      /* Reprogram tick rate                      */
    OS_EXIT_CRITICAL();

    OSStatInit();                                          /* Initialize uC/OS-II's statistics         */
	FileContentInit();									   /* Initialize fileContent				   */
    TaskStartCreateTasks();                                /* Create all the application tasks         */
	
	OSTaskCreate(ReceiveTask,(void *)0, &ReceiveTaskStk[TASK_STK_SIZE - 1], 11);

    for (;;) {
        TaskStartDisp();                                  /* Update the display                       */


        if (PC_GetKey(&key) == TRUE) {                     /* See if key has been pressed              */
            if (key == 'q')                                /* Yes, see if it's the ESCAPE key          */
                PC_DOSReturn();                            /* Return to DOS                            */
			if (key == 'b')								   /* See if it's b and then stop the tasks	   */
				TaskSuspend();
			if (key == 'r')								   /* See if it's r and then resume the tasks	   */
				TaskResume();
        }

        OSCtxSwCtr = 0;                                    /* Clear context switch counter             */
        OSTimeDlyHMSM(0, 0, 0, 100);                         /* Wait one second                          */
    }
}
Пример #4
0
/*
*********************************************************************************************************
*                                                  RECEIVETASK
*********************************************************************************************************
*/
void ReceiveTask(void *pdata) {
	INT8U err;
	INT8U pos_x = 0, pos_y = 0;	
	INT8U font_color;
	char *str_receiv;
	INT16U recev;
	float result;
	char avg[10];
	char attention[2];
	INT16U i = 0; 										///used for row control
	char str_print[10];
	
	INT16U number = 0;									//used for calculating averages in receiving data.
	
	FILE* fp;	
	char filename[25];
	
	INT16U data_iter = 0;										//data_iter/10 is the row and data_iter%10 is the col
	static INT16U times[10];									//used for count the times received
	static INT16U data[10];									//used for record all the data.
	static INT16U max[10];
	static INT16U min[10];
	static INT16U sumr[10];	
	
    pdata = pdata;
	memset(min,1000,sizeof(min));							//initialize the min array
    for (;;) {
		GetDate(filename);
		strcat(filename,"Rv.dat");
		fp = fopen(filename, "a");
		str_receiv = OSQPend(MSGQ,20,&err);				//request message
		pos_x = i;
		i ++;
		i %= 10;
		if (pos_y/10 == 7) {
			pos_y = 0;
			
			PC_DispClrScr(DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
			TaskStartDispInit();
		}
        PC_DispStr(5+6*pos_x, 10 + pos_y/10, str_receiv, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
		fprintf(fp, "%s", str_receiv);
		recev = atoi(str_receiv);
		
		
		if (data_iter == 70) {
			data_iter = 0;
		}
		data[data_iter%10] = recev;

		PntIntNum((++ times[data_iter%10]),5+6*pos_x, 17);
		
		if (times[9] == 100) {
			TaskSuspend();
		}
		
		max[data_iter%10] = (max[data_iter%10] < recev) ? recev : max[data_iter%10];
		PntIntNum(max[data_iter%10],5+6*pos_x, 18);
		
		min[data_iter%10] = (min[data_iter%10] > recev) ? recev : min[data_iter%10];
		PntIntNum(min[data_iter%10],5+6*pos_x, 19);
		
		sumr[data_iter%10] += recev;
		PntFltNum((float)sumr[data_iter%10]/(float)times[data_iter%10],5+6*pos_x,20);
		DrawGraph(sumr[data_iter%10]/times[data_iter%10], pos_x);
		
		data_iter ++;
			
		number += recev;
		result = (float)number/10.0;
		sprintf(avg,"%6.2f",result);
		
		attention[0] = Classify((unsigned int)result);
		attention[1] = 0;								//the string ending
		strcat(avg,attention);
		font_color = 0x00 + ((*attention) - 'A');
		
		PC_DispStr(68, 10 + pos_y/10, avg, font_color + DISP_BGND_LIGHT_GRAY);
		if (pos_y%10 == 9) {
			fprintf(fp, "%8s\n%6s",avg," "); 
			memset(avg,0,sizeof(avg));
			number = 0;
			RemoveGraph();
		}
		
        OSTimeDlyHMSM(0, 0, 0, 100);
		pos_y ++;
		fclose(fp);
    }
	
}