Beispiel #1
0
		void USART2_IRQHandler(void)
{
 
	u8 RS485_RX_BUF[64];
	#ifdef OS_TICKS_PER_SEC	 	//如果时钟节拍数定义了,说明要使用ucosII了.
	OSIntEnter();    
      #endif
 		
	if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收到数据
	{	 
	 			 
		 RS485_RX_BUF[RS485_RX_CNT++]=USART_ReceiveData(USART2); 	//读取接收到的数据
		if(RS485_RX_BUF[RS485_RX_CNT-1]=='&'){RS485_RX_BUF[0]='&'; RS485_RX_CNT=1;}
		if(RS485_RX_BUF[RS485_RX_CNT-1]=='*')
		{
				RS485_RX_CNT=0;

				
				if(RS485_RX_BUF[1]=='#'){OSMboxPost(RS485_STUTAS_MBOX,(void*)&RS485_RX_BUF);}
				  else OSMboxPost(RS485_MBOX,(void*)&RS485_RX_BUF);
		} 
	}  	
	#ifdef OS_TICKS_PER_SEC	 	//如果时钟节拍数定义了,说明要使用ucosII了.
	OSIntExit();  											 
#endif

} 
Beispiel #2
0
void Task_UART0Rx(void *pdata){
	INT8U err;
	INT32U Recv = 0;
	Recv = Recv;
	
	while(1){
		Recv = (INT32U)OSMboxPend(Mbox_UART0Rx,0,&err);
		OSMboxPost(Mbox_UART0Tx,(void*)PackageRx0.iData);
		OSMboxPost(Mbox_BEEPMAN,(void*)PackageRx0.iType);
	}
}
void TaskCarLaneSensors(void *pdata) { 
	pdata = pdata;
	
	while(1) {
		if ((car1Pos.y == Y_SENSOR1 && car1Direction == DOWN) || (car1Pos.y == Y_SENSOR2 && car1Direction == UP)) 
			OSMboxPost(CarMbox, (void *)trafficSignals[0]);		//send request to cross signal to the controller
		
		if ((car3Pos.y == Y_SENSOR2 && car3Direction == DOWN) || (car3Pos.y == Y_SENSOR1 && car3Direction == UP)) 	
			OSMboxPost(CarMbox, (void *)trafficSignals[1]);		//send finish crossing signal to the controller
		
		OSTimeDly(1);	//delay here for the kernel to switch to another task
	} 
}
void TaskPedLaneSensors(void *pdata) { 
	pdata = pdata;
	
	while(1) {
		if ((pedPos.x == X_SENSOR1 && pedDirection == RIGHT) || (pedPos.x == X_SENSOR2 && pedDirection == LEFT)) 
			OSMboxPost(PedMbox, (void *)trafficSignals[2]);		//send request to cross signal to the controller
		
		if ((pedPos.x == X_SENSOR2 && pedDirection == RIGHT) || (pedPos.x == X_SENSOR1 && pedDirection == LEFT)) 
			OSMboxPost(PedMbox, (void *)trafficSignals[3]);		//send finish crossing signal to the controller
		
		OSTimeDly(1);	
	}
}
Beispiel #5
0
void GoRoute1(void)//从发车位到取树叶位置
{
	//uint16 sonic_dist;
	//uint8 flag=0;
	//static uint8 count=0;

	//int flaglidar=1;
	//fp64 robot_radian,y_record,y_scan;	
	//extern fp64 Lidar_Dist1;



	Route_Num=1;	
//	SetPointPath(0,Route[1],PointRoute[Route[1]].selfangle,PointRoute[Route[1]].position);
	
	while(RouteFinish) 
	 {
		if(Point_NowNum>=Point_EndNum-1)
	 	{	 		
	 		RouteFinish=0;
	 		
	 		Route_Num++;		
	 		OSMboxPost(ArmMbox,&Route_Num);

			LCD_SetXY(0,0);
			LCD_WriteString("route1 done");			
		}
				
		OSTimeDly(1);
	 }
}
Beispiel #6
0
void IsrEint1(void)
{
	pMsgTask->cnt = 255-t5;
	pMsgTask->msg = "uCOS2";
	
	OSMboxPost(Tmbox, (void *)pMsgTask);
}
Beispiel #7
0
void IRQ_UART1(void){
	INT32U drop,id,cont;
	drop = drop;

	if(rSUBSRCPND&(B5)){//Exception
		delay(10);
		rSUBSRCPND = (B3)|(B4)|(B5);
		rSRCPND = rINTPND;
		rINTPND = rINTPND;
		
		drop = rUERSTAT1;
		flush1();
	}
	else if(rSUBSRCPND&(B3)){//RXD1	
		rSUBSRCPND = (B3);
		rSRCPND = rINTPND;
		rINTPND = rINTPND;
		
		while(!RxF1COUNT);
		delay(10);
		drop = rURXH1;
		id = 0;
		for(cont = 1000000000;cont > 0;cont = cont/10)
			id += ((rURXH1-0x30)*cont);
		flush1();
		OSMboxPost(Mbox_UART0Tx,(void*)id);	
	}
}
Beispiel #8
0
void lcd_output(http_conn* conn)
{
  alt_u8* delimiter_token;
  alt_u8* temp_pos;

  delimiter_token = strtok(conn->rx_rd_pos, "&");

  while( delimiter_token != NULL )
  {
    if (strstr(delimiter_token, "lcd_text"))
    {
      temp_pos = strstr(delimiter_token, "=");
      ++temp_pos;
      //printf("\n--%s--\n",delimiter_token);
      /* LCD_TEXT is limited to 20 characters...limiting string to that size. */
      strncpy( board_funcs.LCD_TEXT, temp_pos, 20 );
    }
    delimiter_token = strtok( NULL, "&" );
  }

  /* Clean up the HTTP-formatted text string.  For now this just replaces '+'s with spaces. */

  http_cleanup_lcd_text();

  /* Post the updated LCD_TEXT to the board_control_mbox. */
  OSMboxPost(board_control_mbox, (void*)&board_funcs);

}
Beispiel #9
0
void IRQ_UART0(void){
	INT32U drop;
	drop = drop;

	if(rSUBSRCPND&(B2)){//Exception
		delay(10);
		rSUBSRCPND = (B0)|(B1)|(B2);
		rSRCPND = rINTPND;
		rINTPND = rINTPND;		

		drop = rUERSTAT0;
		flush0();

	}
	else if(rSUBSRCPND&(B0)){//RXD0
		rSUBSRCPND = (B0);
		rSRCPND = rINTPND;
		rINTPND = rINTPND;
		
		while(!RxF0COUNT);
		delay(10);
		recbin0((INT8U*)&PackageRx0,16);
		flush0();
		OSMboxPost(Mbox_UART0Rx,(void*)&PackageRx0);
	}
}
Beispiel #10
0
// added by Peli 04-06-2010
void sweep2(http_conn* conn)
{
  alt_u8* delimiter_token;
  alt_u8* temp_pos;

  /* Set board_funcs to be off, by default. */
    
  board_funcs.SSD_ON = 0;
  //board_funcs.LED_ON = 0;
  segnum = 0;
  delimiter_token = strtok(conn->rx_rd_pos, "&");
//  printf("\n--%s--\n",delimiter_token);
  
   while( delimiter_token != NULL )
  {
    
    if (strstr(delimiter_token, "seg_num"))
    {
      board_funcs.SSD_ON = 1;
      temp_pos = strstr(delimiter_token, "=");
      ++temp_pos;
      //printf("\n--%s--\n",delimiter_token);
      /* SEG_NUM is limited to 2 characters...limiting string to that size. */      
      strncpy( board_funcs.SEG_NUM, temp_pos, 20 );
    }
    delimiter_token = strtok( NULL, "&" );
  }
  http_cleanup_seg_num();
  
  OSMboxPost(board_control_mbox, (void*)&board_funcs);
 
}
Beispiel #11
0
/*****************************************************************************
** Function name:	LiftTableHandle	
** Descriptions:	给设备管理任务发送升降机控制邮箱														 			
** parameters:		HandleType:操作类型1:出货操作 2:检查状态 3:查询出货结果
					ChannelNum:逻辑货道编号
					LevelNum:层编号
					Binnum:箱柜编号
					BackMsg:返回的数据
** Returned value:	0:成功;1:失败;
*****************************************************************************/
unsigned char LiftTableHandle(unsigned char HandleType,unsigned char ChannelNum,unsigned char LevelNum,unsigned char Binnum,unsigned char *BackMsg)
{
	MessagePack *RecvBoxPack;
	uint8_t err,i;

	MsgAccepterPack.ChnlHandleType = HandleType;
	MsgAccepterPack.ChannelNum = ChannelNum;
	MsgAccepterPack.Binnum = Binnum;
	MsgAccepterPack.LevelNum = LevelNum;
	TraceChannel("LiftTableHandle[start]:type = %d\r\n",HandleType);
	liftSetReady(0);
	OSMboxPost(g_LiftTableMail,&MsgAccepterPack);
	RecvBoxPack = OSMboxPend(g_LiftTableBackMail,LIFT_HANDLE_TIMEOUT,&err);
	liftSetReady(1);
	if(err == OS_NO_ERR){
		TraceChannel("LiftTableHandle[pend]:type=%d\r\n",HandleType);
		for(i=0;i<10;i++){
			BackMsg[i] = RecvBoxPack->LiftTablePack[i];
		}
		return RecvBoxPack->HandleResult;
	}
	TraceChannel("LiftTableHandle[pend]:timeout!\r\n");
	return 0xFF;


}
Beispiel #12
0
void sweep(http_conn* conn)
{
  char *delimiter_token;

  /* Set board_funcs to be off, by default. */
  
  board_funcs.LED_ON = 0;
  board_funcs.SSD_ON = 0;

  delimiter_token = strtok(conn->rx_rd_pos, "&");
  
  while(delimiter_token != NULL)
  {
    if (strstr(delimiter_token, "LED"))
    {
      board_funcs.LED_ON = 1;
    }
    else if (strstr(delimiter_token, "seven"))
    {
      board_funcs.SSD_ON = 1;
    }

    delimiter_token = strtok( NULL, "&" );
  }
  
  OSMboxPost(board_control_mbox, (void*)&board_funcs);
 
}
Beispiel #13
0
void feed_task(void *pvParam)
{
	while(1) {
		if(KEY_Pressed(KEY_State(), key_service)) {	
			post_trace("feed data box");
			OSMboxPost(watcher_data->mbox_data, (void *)NULL);			
		}
	}
}
Beispiel #14
0
void Task_ADC1(void *p_arg)
{
	(void)p_arg;	//'p_arg'没有用到,防止编译器警告
	while(1)
	{
		 ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*10;
		 OSMboxPost(adc_MBOX,&ADC_ConvertedValueLocal);
		 OSTimeDlyHMSM(0,0,0,500);
	}
}
Beispiel #15
0
unsigned char TestLiftTablePost(unsigned char HandleType,unsigned char ChannelNum,unsigned char LevelNum,unsigned char Binnum)
{
	switch(HandleType)
	{
		case 1:
			MsgAccepterPack.ChnlHandleType = HandleType;
			MsgAccepterPack.ChannelNum = ChannelNum;
			MsgAccepterPack.Binnum = Binnum;
			MsgAccepterPack.LevelNum = LevelNum;
			//发送邮箱给DevieTask让其操作Hopper做出币操作
			OSMboxPost(g_LiftTableMail,&MsgAccepterPack);
			break;
		case 2:
			MsgAccepterPack.ChnlHandleType = HandleType;
			MsgAccepterPack.ChannelNum = ChannelNum;
			MsgAccepterPack.Binnum = Binnum;
			MsgAccepterPack.LevelNum = LevelNum;
			//发送邮箱给DevieTask让其操作Hopper做出币操作
			OSMboxPost(g_LiftTableMail,&MsgAccepterPack);
			break;
		case 3:
			MsgAccepterPack.ChnlHandleType = HandleType;
			MsgAccepterPack.ChannelNum = ChannelNum;
			MsgAccepterPack.Binnum = Binnum;
			MsgAccepterPack.LevelNum = LevelNum;
			//发送邮箱给DevieTask让其操作Hopper做出币操作
			OSMboxPost(g_LiftTableMail,&MsgAccepterPack);
			break;
		case 4:
			MsgAccepterPack.ChnlHandleType = HandleType;
			MsgAccepterPack.ChannelNum = ChannelNum;
			MsgAccepterPack.Binnum = Binnum;
			MsgAccepterPack.LevelNum = LevelNum;
			//发送邮箱给DevieTask让其操作Hopper做出币操作
			OSMboxPost(g_LiftTableMail,&MsgAccepterPack);
			break;
	}
	return 1;
}
Beispiel #16
0
/*
*******************************************************************************
**
** This function sends a message to a given mailbox. 
**
*******************************************************************************
*/
RTOS_Status RTOS_MailboxSend( RTOS_Mailbox mailbox, RTOS_Message message )
{
    if( ! RTOS_MailboxIsValid( mailbox ) )
        return( RTOS_MAILBOX_FAILURE );
        
    if( ! RTOS_MessageIsValid( message ) )
        return( RTOS_MESSAGE_FAILURE );
        
    if( OSMboxPost( (OS_EVENT*)mailbox, (void*) message ) != OS_NO_ERR )
        return( RTOS_FAILURE );
    
    return( RTOS_OK );
}
Beispiel #17
0
//邮箱投递,信号量投递任务
void AppPostTask(void *pdata)
{
	static uint8_t key='A';
	uint16_t task_counter=0;
	while(1)
	{
		key++;
		task_counter++;
		if(key > 'Z') key='A';            //改变邮箱投递的数据
		OSMboxPost(msg_test, &key);  //发送消息
		OSSemPost(sem_test);              //发送信号量

        printf("App Post Message&Sem:%d times\r\n", task_counter);
		OSTimeDlyHMSM(0, 0, 0, 300);
	}
}
Beispiel #18
0
//邮箱投递,信号量投递任务
void AppPostTask(void *pdata)
{
	uint8_t key='A';
	uint16_t TaskCtr=0;
	while(1)
	{
		key++;
		TaskCtr++;
		if(key > 'Z') key='A';            //改变邮箱投递的数据
		OSMboxPost(msg_test,(void*)key);  //发送消息
		OSSemPost(sem_test);              //发送信号量

		UART_printf("App Post Message&Sem:%d times\r\n", TaskCtr);
		OSTimeDlyHMSM(0, 0, 0, 300);
	}
}
Beispiel #19
0
void Task_UART0TX(void *pdata){
	INT8U err;
	INT32U Recv = 0;
	
	while(1){
		Recv = (INT32U)OSMboxPend(Mbox_UART0Tx,0,&err);
		PackageTx0.iSave = 0x0;
		PackageTx0.iType = iOPcode;
		PackageTx0.iData = Recv;
		PackageTx0.iMagicNumber = MAGIC;
		sendbin0((INT8U*)&PackageTx0,sizeof(PackageFormat));
		itos_dec(Recv,vBuffer,10);
		OSTimeDlyResume(15);
		OSMboxPost(Mbox_LCDMAN,(void*)vBuffer);
	}
}
Beispiel #20
0
void CCD_TASK(void *p_arg)
{
  (void)p_arg;
	uint8_t Track_Midline_value,A;
		CCD_Restet();
	while(1)
	{                    
		CCD_gather(); 
		CCD_Filtering();
		Data_binarization(averaging());
	  Track_Midline_value = Track_Midline();
		A = Track_Midline_value;
		printf("Track_Midline_value = %d\n",A);
		OSMboxPost(Str_Box_2,&Track_Midline_value);
   OSTimeDlyHMSM(0,0,0,30);		
	}
}
Beispiel #21
0
void Task5(void *pdata)
{
	unsigned char err = 0; 
	MsgTask *p = (MsgTask *)0;
 
	pdata=pdata;
 
	while(1)
	{
		p = (MsgTask *)OSMboxPend(Tmbox,0,&err);		   
		t5 = p->cnt;
		com_putstring(p->msg, 5);
		com_putenter();
		
		p->msg = "Task5";
		OSMboxPost(Tmbox, (void *)p);
		PA_OUT_REV(LED5);	
	}
}
Beispiel #22
0
/* ------------------------------------------------------------------------------------------------------
 *									TcpClientTask()
 *
 * Description : main function.
 *
 * Argument(s) : none.
 *
 */
static void TcpClientMainProc(void)
{
	struct in_addr  g_sClientIP;
	
	switch(g_bNetStatus)
	{
	case NETS_INIT:
		do
		{
			g_sClientIP.s_addr = lwIPLocalIPAddrGet();
			OSTimeDly(10);
		}while(0 == g_sClientIP.s_addr);

		OSMboxPost(App_LcdMbox, (void *)&g_sClientIP.s_addr);		/* Send lcd txt.*/
		
		g_bNetStatus = NETS_LOCIP;									/* Net mode charge LOCIP.*/
	
		TaskSocket_Create();										/* Create Socket task and init.*/
		
		break;

	case NETS_LOCIP:
//		TcpGetLocalIp();
		break;

	case NETS_SRVIP:
//		TcpGetServerIp();
		break;

	case NETS_LOGIN:
//		TcpClientRelogin();
		break;

	case NETS_NORMAL:
//		TcpNormalProc();
		break;

	default:
		break;
	}
}
Beispiel #23
0
/*
复位按键检测,实现对管理员密码和系统管理员密码复位
长按复位键5s可实现复位操作
time: LC 2013.8.13
*/
void RestKeyCheck()
{
/*检测复位键是否按下,低有效*/		 
	if(!RESETKEY)
	{
		u8 i;
		LED2ON;
		for(i=0;i<100;i++)
		{
			OSTimeDlyHMSM(0, 0, 0,50);//循环检测,按下时长超过3s
			if(RESETKEY)
			{
				LED2OFF;
				break;
			}
			if(i == 99)
			{
				CAB_MSG cab_msg;

				TIM_Cmd(TIM2,DISABLE);//禁能TIM2,禁止键盘输入
				RefreshLCD();
				Dis1LineMid("初始化中、、、" , 1);
				RefreshLCD();//刷新屏幕	
				
				ReadCabinetMsg(&cab_msg);//读取系统信息
				memset(cab_msg.sys_password , '8' , 6);//改变箱子系统管理员密码 888888
				memset(cab_msg.comm_password , '6' , 6);//改变箱子系统管理员密码	666666
				WriteCabinetMsg(&cab_msg);//写入系统信息						

				OSTimeDlyHMSM(0, 0, 2,0);//显示时间2s				
				LED2OFF;

				TIM_Cmd(TIM2,ENABLE);//使能TIM2
				pfunBlock = mainFunBlock;	
				OSMboxPost(display_box , pfunBlock);// 发送邮箱,刷新显示,回到主屏			
			}
		}
	}
}
Beispiel #24
0
static  void  OSView_RxPkt (void)
{
#if OS_VIEW_PARSE_TASK > 0
#if OS_SEM_EN > 0
    OSSemPost(OSView_Sem);                         /* We have a whole packet, signal task to parse it! */
#else
#if OS_MBOX_EN > 0
    OSMboxPost(OSView_Mbox, (void *)1);
#endif
#endif

#else
    INT16U   len;


    len = OSView_CmdParsePkt();                    /* We have a whole packet, parse it!                */
    if (len > 0) {
        OSView_TxLen = len;
        OSView_TxStart();
    }
#endif
}
Beispiel #25
0
/**
 * @brief  This function handles TIM3 interrupt request.
 * @param  None
 * @retval None
 */
void TIM2_IRQHandler(void)
{
    uint8_t retval = OS_ERR_NONE;    
    static TASK1_MBOX_TypeDef mbox;

    OSIntEnter();

    LEDS_Toggle(LED_7);

    //
    // Clear the timer.  Failure to do so and you will just 
    // stay here since the timer will keep the IRQ asserted
    //
    //TIM2->SR &= ~TIM_SR_UIF;
    TIM_ClearFlag(TIM2, TIM_SR_UIF);
    
    
    //
    // Clear the interrupt at the NVIC level
    //
    NVIC_ClearPendingIRQ(TIM2_IRQn);

    //
    // Wake up task 1
    //
    mbox.action = 0x01;    
    retval = OSMboxPost(task1_mbox, (void *) &mbox);
    if (retval != OS_ERR_NONE){
	//Uh oh....??????
//	while(1);
    }
    
    OSIntExit();

    return;    
}
Beispiel #26
0
void Task3(void *pdata)
{
	pdata = pdata;
	//adc_init();
	unsigned char err = 0;
	MsgTask *p = (MsgTask *)0;
	while(1)
	{
		//adc_switch_channel(ADC_VOLTAGE);
		//START_ADC();
		PA_OUT_REV(LED3);

		//t5 = ADC;
		//com_printf("ADC = %d\n", t5);
		pMsgTask->cnt = 255-t5;
		pMsgTask->msg = "Task3";
		OSMboxPost(Tmbox, (void *)pMsgTask);
		p = (MsgTask *)OSMboxPend(Tmbox,0,&err);
		com_putstring(p->msg, 5);
		com_putenter();
		
		OSTimeDly(OS_TICKS_PER_SEC);
	}
}
/* Notes      :(1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
*                   used.  The compiler should not generate any code for this statement.
*
*
*********************************************************************************************************
*/
void APP_TaskTwo(void *p_arg)
{
  static char taskMsg[CHAR_BUFFER_SIZE]; /* buffer for received characters to be passed to TaskThree */
  signed int  taskCharBuffer = -1; /* Character buffer for receiving */
  unsigned char bufIndex = 0;

  (void)p_arg;  /* Note(1) */

  while (1)
  { /* Task body, always written as an infinite loop  */

    /* Load character received on serial to character buffer */
    taskCharBuffer = UART1_ReadChar();

    /* If the character in the buffer is valid... */
    if ( (taskCharBuffer >= 32) && (taskCharBuffer < 128) )
    {
      /* ...cast and copy it to message buffer variable... */
      taskMsg[bufIndex] = (char)taskCharBuffer;

      /* ...and post the message to the mailbox */
      if(OS_ERR_NONE != OSMboxPost(pSerialMsgObj, &taskMsg[bufIndex]))
      {
        /* Error has occured, handle can be done here */
      }

      bufIndex++;
      if(bufIndex >= CHAR_BUFFER_SIZE)
        bufIndex = 0;
    }

    /* Delay task for 1 system tick (uC/OS-II suspends this task and executes
     * the next most important task) */
    OSTimeDly(1);
  }
}
Beispiel #28
0
void GUI_X_SignalEvent(void)
{
  (void)OSMboxPost(EventMbox,(void *)1);
}
Beispiel #29
0
/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;
  int     SelNum;
  int     i;

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Listbox'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_0);
    for(i = 0;i < 6;i++)
    {
        LISTBOX_AddString(hItem, pTextPreamble[i]);
    }
    switch(g_rom_para.preamble)
    {
        case 0xFC:
            LISTBOX_SetSel(hItem,0);
            break;
        case 0xFA:
            LISTBOX_SetSel(hItem,1);
            break;
        case 0xFB:
            LISTBOX_SetSel(hItem,2);
            break;
        case 0xFD:
            LISTBOX_SetSel(hItem,3);
            break;
        case 0xFF:
            LISTBOX_SetSel(hItem,4);
            break;
        case 0xFE:
            LISTBOX_SetSel(hItem,5);
            break;
    }
    //
    // Initialization of 'Listbox'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX_1);
    for(i = 0;i < 7;i++)
    {
        LISTBOX_AddString(hItem, pTextSpeed[i]);
    }
    switch(g_rom_para.plc_freq)
    {
        case PLC_270_III:
            LISTBOX_SetSel(hItem,0);
            break;
        case PLC_270_III_5:
            LISTBOX_SetSel(hItem,1);
            break;
        case PLC_270_II:
            LISTBOX_SetSel(hItem,2);
            break;
        case PLC_421_50BPS:
            LISTBOX_SetSel(hItem,3);
            break;
        case PLC_421_100BPS:
            LISTBOX_SetSel(hItem,4);
            break;
        case PLC_421_600BPS:
            LISTBOX_SetSel(hItem,5);
            break;
        case PLC_421_1200BPS:
            LISTBOX_SetSel(hItem,6);
            break;
    
    }

    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
    WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE);
    BUTTON_SetBkColor(hItem,0,GUI_GREEN);

    hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
    WIDGET_AndState(hItem,WIDGET_STATE_FOCUSSABLE);
    BUTTON_SetBkColor(hItem,0,GUI_YELLOW);

    break;
    
  case WM_KEY:
    if((((WM_KEY_INFO *)(pMsg->Data.p))->PressedCnt) == 1)
    {   
        switch(((WM_KEY_INFO *)(pMsg->Data.p))->Key)
        {
            case GUI_KEY_GREEN:
                if(g_rom_para.channel != CHANNEL_PLC)
                {
                    ERR_NOTE(g_hWin_monitor,GUI_MSBOX_FUN_DISALE_ERROR);
                }
                else
                {
                    if(g_hWin_ReadMeter > 0)
                    {
                        hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_0);
                        SelNum = LISTBOX_GetSel(hItem);
                        if(SelNum != 5) //前导符不是FE
                        {
                            hItem = RMD_Get_Speed();
                            EDIT_SetText(hItem,pTextPreamble[SelNum]);
                        }
                        else if(SelNum == 5)
                        {
                            hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_1);
                            SelNum = LISTBOX_GetSel(hItem);
                            hItem = RMD_Get_Speed();
                            EDIT_SetText(hItem,pTextSpeed[SelNum]);
                        }
                    }
                    else if(g_hWin_ProtoDbg > 0)
                    {
                        hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_0);
                        SelNum = LISTBOX_GetSel(hItem);
                        if(SelNum != 5) //前导符不是FE
                        {
                            hItem = CPT_Get_Speed();
                            EDIT_SetText(hItem,pTextPreamble[SelNum]);
                        }
                        else if(SelNum == 5)
                        {
                            hItem = WM_GetDialogItem(pMsg->hWin,ID_LISTBOX_1);
                            SelNum = LISTBOX_GetSel(hItem);
                            hItem = CPT_Get_Speed();
                            EDIT_SetText(hItem,pTextSpeed[SelNum]);
                        }
                    }
                    else if(g_hWin_para > 0)
                    {
                        //保留
                    }
                    FRQ_PreamSel(pMsg);
                    if(0xFE == g_rom_para.preamble)
                    {
                        FRQ_FreqSel(pMsg);
                        g_gui_para.cmd = GUI_CMD_PLC_FREQ_SET;
                        g_gui_para.state = GUI_STATE_PLC_FREQ_SET;
                        OSMboxPost(g_sys_ctrl.up_mbox, (void*)&g_gui_para);
                    }
                    DEV_Parameters_Write();//保存数据
                    
                    WM_DeleteWindow(g_hWin_freq);
                    FRQ_SetFocus();
                    g_hWin_freq = HBWIN_NULL;
                }
                break;

            case GUI_KEY_YELLOW:
                WM_DeleteWindow(g_hWin_freq);
                FRQ_SetFocus();
                g_hWin_freq = HBWIN_NULL;
                break;
        }
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}
Beispiel #30
0
//++++++++++++COM1处理任务++++++++++++++++++++++++++
static  void Task_Com1(void *p_arg)
{     
   	INT8U err;   				  
	INT8U *s; 
	INT8U i;
	INT8U flag=0;
	static unsigned long d=0;
	static unsigned int freq_tmp=0;
	static unsigned int freq_tmp1=0;
	INT8U ADD_x=FREQ_LCD_ADD_X;  
	s=OSMboxPend(Com1_MBOX,0,&err);	
	//Init_AD9850();   	
	(void)p_arg;	
	while(1)
	{	
		//USART_OUT(USART1,"Task_Com1\r\n");
		if(*s=='L')
		{
			for(i=1;i<50;i++)
			{
				if(*(s+i)!='F')
				{
					d=d*10+(*(s+i)-0x30);
				}
				else
				{
					//AD9850_Write_Serial(d,0,0);
					//KEY_FLAG=0;
					//Freq_SET=d;
					//if(d/1000000>0)
					//{
					freq_tmp=d/1000000;
					if(freq_tmp>0)flag=1;
					if(flag==1)
					{
						USART_OUT(USART1,"USART is %d",freq_tmp);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);
					ADD_x+=12;						
					freq_tmp=d%1000000/1000;
					freq_tmp1=(freq_tmp)/100;
					if(freq_tmp1>0)flag=1;
					if(flag==1)
					{
						//USART_OUT(USART1,"%d",freq_tmp1);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);

					ADD_x+=12;
					freq_tmp1=(freq_tmp%100)/10;
					if(freq_tmp1>0)flag=1;
					if(flag==1)
					{
						USART_OUT(USART1,"%d",freq_tmp1);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);
				
					ADD_x+=12;
					freq_tmp1=(freq_tmp%100)%10;
					if(freq_tmp1>0)flag=1;
					if(flag==1)
					{
						USART_OUT(USART1,"%d",freq_tmp1);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);
					ADD_x+=12;
					freq_tmp=d%1000;
					freq_tmp1=(freq_tmp)/100;
					if(freq_tmp1>0)flag=1;
					if(flag==1)
					{
						USART_OUT(USART1,"%d",freq_tmp1);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);
					ADD_x+=12;
					freq_tmp1=(freq_tmp%100)/10;
					if(freq_tmp1>0)flag=1;
					if(flag==1)
					{
						USART_OUT(USART1,"%d",freq_tmp1);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);

					ADD_x+=12;
					freq_tmp1=(freq_tmp%100)%10;
					if(freq_tmp1>0)flag=1;
					if(flag==1)
					{
						USART_OUT(USART1,"%dHz\r\n",freq_tmp1);
						//TFT_PutChar12x24(ADD_x,FREQ_LCD_ADD_Y,freq_tmp1+0x30,0xffff,0x0000);							
					}
					//else GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y," ",1,0xffff,0x0000);
					
					ADD_x+=12;

					//GUI_Text12x24(ADD_x,FREQ_LCD_ADD_Y,"Hz",2,0xffff,0x0000);
					//}

					//TFT_PutChar12x24(00,200-24,tmp+0x30,0xffff,0x0000);
					//GUI_Text12x24(48,200-24,"KHz",3,0xffff,0x0000);
//					Select_DA();
//					SPI_SendData(d<<6);
//					NotSelect_DA();
					break;	
				}
			}
				
			*s=0;
			d=0;
			ADD_x=FREQ_LCD_ADD_X;
			flag=0;
			OSMboxPost(Com1_MBOX,(void *)&s);
		}
		OSTimeDlyHMSM(0, 0, 0, 200);
	}
}