⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 006c6438a95f001d1289bbda6de18a35

📁 Vxworks环境下
💻
📖 第 1 页 / 共 3 页
字号:
/*$Log$*//*** ---------------------------------------------------------------------**                Copyright (c) Bosch Rexroth AG 1997 - 2007**                        All Rights Reserved** ---------------------------------------------------------------------****    File: dab_h_startgra.c** **    Responsible: AB** **    Description of functions:**                This file is the main File of the graphic task.**                It contain the needed steps to interface to NC Kernel**                on the basis of NCS and to interface to the Tilcon EVE**                There are a few platform-specific commands that need **                to be compiled into the program: **		  We define one of the following according to which **                platform we use:**                1. #define CC_TRT_DOS and #define HWDS_WINDOWS for**                        a Win32 applications**                                   OR**		  2. #define CC_TRT_VXWORKS for an applications running **                       on BRC Target whith Vxworks****					                           **                 in this file we will:**			  -  Start the  GUI task **			  -  Connect the GUI task to NCS   **			  -  InitializeApp (Start the Tilcon Engine EVE,**                        - Open channel to the EVE,Initialize Callbacks**                              Loead Window...)**			  -  wait for events from EVE**			  -  call callback Funktion as example to get **                           axis values, axis number....  ** ** ---------------------------------------------------------------------*//*F*/
/*======================================================================
**           >>>>    Include all necessary headfiles     <<<<
** ==================================================================== */
#include "dab_h_allheadfiles.h"
#include "dab_h_callbacks.h" /*the Header file with Callback Funktions*/
/*F*//*======================================================================**           >>>>    Local definitions               <<<<** ==================================================================== *//* Plattform specifacation for Tilcon EVE */#ifdef	CC_TRT_VXWORKS	     /* if the Engine (EVE) will run on Vxworks*/#define OS_TYPE TRT_VXWORKS#endif#ifdef CC_TRT_DOS	 /*if the Engine (EVE) will run on a windows PC*/#define OS_TYPE TRT_MS_WINDOWS			#endifEXPORT pid_t TRT_cid;EXPORT TRT_ReceiveData rec_data;EXPORT int EngineStatus;



/*
************************************************************************
** > AUTHOR        : Jiang
** > The define variable and function is only used in the CPL function test.  
*/
#define MAXWatchNr 40                 /*we can monitor only 40 watchponts at same time.*/

char    FileFoldBuf[100];             /*it will save Directory you select.*/
char Currentfileselect[20]=""; /*It will save the file name only.*/
long WatchPointRecordNr=0;            /*Use it help me to operate the Watchpoint record.*/         
struct  WatchPoint_ID{
	char Name[20];                    /*"@1"*/
	int  ID;						    /*save ID gived by system*/ 
	int  Index;                       /*watchpoint element place in the array.*/
	int  Value;                       /*watchpoint element value in the array.*/
}WatchPointRecord[MAXWatchNr];      /*Use it to Save the Watchpoint*/ 

/*Note: Some changing of MainEventLoop is to support the directroy tree*/
/*
************************************************************************
**This function can help us to get correct file path. 
**For example "\usr\user"--->"/usr/user"
*/
void ChangeChar(char *Setence,char oldchar, char newchar)   
{   
	char* p= Setence;   
	while(*p !='\0')   
	{   
		if(*p == oldchar)   
			*p = newchar;   
		p++;   
	}   	
}

void Find_PermVariable(char* source)
{
   char* Hold=source;
   char* p;
   char* q;
   q=Hold;
   while(*q!=0) q++;
   p=q;
   while(*p!='@')p--;
   TRT_SetValues(TRT_cid2, "WatchSelect",
		TRT_ATT_TEXT,p,
		NULL);
   
   
}/*F*//*************************************************************************** >AUTHOR        : AB**  FUNCTIONNAME  : ChangeConnectSymbol** ** >DESCRIPTION: this funktion is  an example function for Display and hid**                the connect Symbol on the Window** ** >NOTES:** ** >PARAMETER:   status =1 -> connected to target**                     =0 -> Disconnected** ** >RETURN VALUE:** ** >INCLUDES:** */LOCAL void ChangeConnectSymbol(char status){	long Error=0;	if (status ==1)	{		/* Hide the disconnected symbol */		Error=TRT_Hide(TRT_cid, DISCONNEC_SYMBOL_ICON_ID);		/* Display the connected symbol*/		Error+=TRT_Display(TRT_cid, CONNEC_SYMBOL_ICON_ID); 	}	else if(status==0)	{ /* Hide the connect symbol */		Error=TRT_Hide(TRT_cid, CONNEC_SYMBOL_ICON_ID); 		/* Display the disconnect symbol*/		Error+=TRT_Display(TRT_cid, DISCONNEC_SYMBOL_ICON_ID);	}	if(Error)	{/*Traitment of Error*/	}}  /* OF ChangeConnectSymbol *//*F*//*************************************************************************** >AUTHOR         : AB** FUNCTION NAME  : On_Chan_Lang_Button** ** >DESCRIPTION: Example function for changing the GUI Language* ** >NOTES:** ** >PARAMETER:** ** >RETURN VALUE:** ** >INCLUDES:** */LOCAL void On_Chan_Lang_Button(void)
{
	static char LanguageFlag=0;
	long Error=0;
	char TextBuffer[100];
	/*China Language */
	if(LanguageFlag==0) 
	{
		/* Call the Tilcon funkion to load a Language file in the GUI */
		/*the Language file coud be created with Tilcon Interface Builder.*/
		/* For mor informations see the Tilcon Help*/
		/* Load China Language*/
		Error= TRT_ChangeLanguage(TRT_cid,"HermesGuiLang_086.twl",0);
		/* Change the system Language */
		if(Ncs_Bap_IniWeraLang_Cmd("086")) /* 086 for China language*/
		{/* Traitement of the error*/}
		
		/**************   Example A  ***********************/
		/* Report an error or warning with a number xxxxx 
		** this number muss be previously intred into the WERA database
		** the begin of the error numbers is 100000*/ 
		
		Ncs_WeaSetErrWar(100004,/* Error Number*/
								/* note: the Error number mus be defined
								** and ties to an error text.*/  
								""); /* string used to specify the format of 
		**additional optional parameter */
		Ncs_WeaSetErrWar(100002,"");
		
		/**************   END Of Example A  ****************/
		
		/*************    Example B  *******************/
		/* get a text from NC and display it on the GUI */ 
		/*the text will be in the curent Language(in this case china Lang)*/
		/* if ther is no text defined to the text number you will get*/
		/*a default syntax= "Text fehlt"*/
		
		/* get the text from NC Kernel over NCS */
		Ncs_Bap_nlscat(40100, /*Text number*/         
			0,/*Codepage*/ 
			TextBuffer,/*pointer on the Buffer to store the text*/
			100);  /* Size of the text to store */
		
		/*set the Text on the GUI*/
		(void)TRT_SetValues (TRT_cid,
			"ErrorDeskr_Multitext1", 
			TRT_ATT_TEXT, 
			TextBuffer, NULL);
		/**************   END Of Example B  ****************/
		
		
		LanguageFlag=1; 
	}
	/* English Language*/
	else
	{
		LanguageFlag=0;
		/*Load English Language for GUI */
		Error= TRT_ChangeLanguage(TRT_cid,"HermesGuiLang_044.twl",0);
		/* Change the system Language */
		if(Ncs_Bap_IniWeraLang_Cmd("044")) /** 044 is for English*/
		{/* Traitement of the Error*/
		}
		/**************   Example A  ***********************/
		Ncs_WeaSetErrWar(100001,"Tetst1");
		Ncs_WeaSetErrWar(100002,"Tetst2");
		/**************   END Of Example A  ****************/
		
		/*************    Example B  *******************/
		/* get a text from NC and display it on the GUI */ 
		/*the text will be in the curent Language(in this case English)*/
		/* if ther is no text defined to the text number you will get*/
		/*a default syntax= "Text missing"*/
		
		/* get the text from NC Kernel over NCS */
		Ncs_Bap_nlscat(40013, /*Text number*/         
			0,/*Codepage*/ 
			TextBuffer,/*pointer on the Buffer to store the text*/
			100);  /* Size of the text to store */
		
		/*set the Text on the GUI*/
		(void)TRT_SetValues (TRT_cid,
			"ErrorDeskr_Multitext1", 
			TRT_ATT_TEXT, 
			TextBuffer, NULL);
		/**************   END Of Example B  ****************/
	}
	if(Error) 
	{
		/*Traitment of Error*/
		
	}
}  /* OF On_Chan_Lang_Button *//*F*//*************************************************************************** >AUTHOR        : AB**  FUNCTIONNAME  : ConnectGUItoNCS** ** >DESCRIPTION: Connect the GUI task to NCS** ** >NOTES: there is a deference in the call of NC_OPEN()**	   between the PC variante and the BRC Target variante. ** ** >PARAMETER:** ** >RETURN VALUE: No one** ** >INCLUDES:** */LOCAL void ConnectGUItoNCS(void){	Ncs_Mbx_t HMI_EventHandlerMailbox;/* MailBox for receive ncs Responce*/	#ifdef HWDS_WINDOWS	HWND    hWnd = (HWND) NULL;#endif	/* get the ID of the mail box of the event handler mailbox created	from event handler task*/  	dab_h_GetEvHanMailbox(&HMI_EventHandlerMailbox);	#ifdef HWDS_WINDOWS	/* for PC variante the hwnd is the ID of the Mailbox  */	hWnd = (HWND) HMI_EventHandlerMailbox;	/* Register the GUI-Task by NCS   */	/* for synchron and asynchron Requests */	/*the response of synchron requests will be Processed in this Task*/	/*the response of asynchron requests will be*/ 	/*  Processed in Event Handler Task*/	if (Ncs_Open(NCS_SYNC_LENT_C,/*synchronous and asynchronous requests */		/* For asynchronous requests, a socket that has */		/* already be created for asynchronous requests.*/		/* we use this parameter because an Ncs_open with*/		/* NCS_SYNC_ASYNC_C */		/*is already occurred in evant handler Task.*/		//  "192.168.1.186",  /* IP Adresse of the Target.*/
		"10.110.241.88",
		//"localhost",		/*change as necessary*/		hWnd,             /* Windows handle of the calling program*/		WM_ASYNC_READ,    /* Message that is sent to the*/ 		/*hWnd window in*/ 		/*the case of an asynchronous response.*/ 		/* The MessageNumber must be higher than*/		/* WM_USER + 0x100*/		/* we use  #define WM_ASYNC_READ (WM_USER+0x101);*/				5)   /*Time in seconds after which a timeout shall */		/*occur for a */		/*synchronous call. 0 disables the timeout.*/		!= Ncs_ErrOk)  			{		/* Error Traitement */ 		Ncs_WeaSetCritSysErr(0,"");	}#else                /* GUI is running on Target */	/*the NCS_Open will be called as below*/	if (Ncs_Open(		NCS_SYNC_LENT_C, 		&HMI_EventHandlerMailbox,		TRUE,   /*ResourceWaitMode:what to do if the Sendepuffer*/		/* is occupied bei belegten Sendepuffern.*/		/*    TRUE -> wait of free Sendebuffer*/		/*    FALSE-> dont wait,beack off with Error*/		0)     /*Time in seconds after which a */		/*timeout shall occur for a */		/*synchronous call. 0 disables the timeout.*/		!= Ncs_ErrOk)	{		/* Error Traitement */ 		Ncs_WeaSetCritSysErr(0,"");	}#endif}  /* OF ConnectGUItoNCS *//*F*//*************************************************************************** >AUTHOR        : AB**  FUNCTIONNAME  : Dab_h_WaitForEngineStart** ** >DESCRIPTION: the event handler task will try to open a channel to **              Tilcon EVE but for a communication with Tilcon EVE the EVE**             mus be started first.this function synchronise the start. ** ** >NOTES: this function will be called from event handler task **           in module dab_h_evhan.c** ** >PARAMETER: void** ** >RETURN VALUE: void ** ** >INCLUDES: "ab_h_startgra.h"** */EXPORT void Dab_h_WaitForEngineStart(void){	boolean WaitingForEngine= TRUE;		while (WaitingForEngine == TRUE)	{		if(EngineStatus == 0)		{			#ifndef HWDS_WINDOWS   			(void)Pxr_Delay(500,1);   /* Wait */#endif      			WaitingForEngine = TRUE;		}		else		{			WaitingForEngine = FALSE;		}	}	}  /* OF Dab_h_WaitForEngineStart *//*F*//*************************************************************************** >AUTHOR        : AB**  FUNCTIONNAME  :  InitializeApp** ** >DESCRIPTION: Do everything that can be done before getting an event **               from outside.**               Start timers, clocks, etc.  Load/display primery windows.**               Update their objects.  Initialize data/structures.  **		 A local Tilcon EVE wil be launched.**		 we will open a channel to the EVE kernel (TRT_cid) and **               tell it to display the display the primery window **** ** >NOTES:       for more Information see the Tilcon Help** ** >PARAMETER: void** ** >RETURN VALUE: errorcode if an error is occurred else 0** ** >INCLUDES:** */LOCAL long InitializeApp(void){	long errorcode = 0;
		TRT_StartData StartData; /* Strucktur of start data */
		StartData.Os_Env  = OS_TYPE; /* Opereting system is seting at */	/*the beginning of this file */	StartData.Display	= NULL; /* we use 1 Display. muss be null */	StartData.IPAddr	= NULL;	/*IP addr if the Engine will be used in*/	/* a remote mode.Hier is NULL  */	StartData.AppName	= "HermesHMI"; /* the name of this aplikation */	/*if you change it hier you have*/ 	/*to change it in*/ 	/*dab_h_evhan.c too*/	StartData.Userprog 	= "GUI_TASK";  /* a name of user Programe*/ 	/*can be changed too*/	StartData.Flags		= FALSE;	
	errorcode =TRT_StartEx (0, &StartData); /* Start the Tilcon EVE */	if(errorcode)	{/*Traitment of Error*/	}		EngineStatus=1;       /* Engine is started ->*/	/* set the syncronisation signal*/		TRT_cid = StartData.TRT_CID; /*get the channel ID  GUITask <-> EVE */
			/*Ennable Blink */	errorcode = TRT_BlinkOn(TRT_cid, 1, 10);/*10x50=500ms on and 500ms off*/	if(errorcode)	{/*Traitment of Error*/	}		/*Load/display preliminary windows.*/	if(TRT_WindowLoad(TRT_cid, MAIN_WINDOW_FILE) )	{		/*Traitement of Error for example : Display Messagebox*/		return -1;	}
#ifdef HWDS_WINDOWS 
	/*Load/display preliminary windows.*/
	if(TRT_WindowLoad(TRT_cid, MOP_WINDOW_FILE) )
	{
		/*Traitement of Error for example : Display Messagebox*/
		return -1;
	}
#endif
	/*Initialize Callbacks.*/	/*For mor Information and example about*/ 	/*how does the callback mechanismus work*/	/*please see the Tilcon Help*/	errorcode = TRT_WindowCallbacks(TRT_cid,								MAIN_WINDOW_ID,								(char*)Callb_Struct_callback, 								sizeof(Callb_Struct_callback));	if(errorcode)	{/*Traitment of Error*/	}		if(TRT_WindowDisplay(TRT_cid, MAIN_WINDOW_ID) )	{		/*Traitement of Error*/			}
	
#ifdef HWDS_WINDOWS
	if(TRT_WindowDisplay(TRT_cid, MOP_WINDOW_ID) )
	{
		/*Traitement of Error*/
		
	}
#endif 
	
	return errorcode;}  /* OF  InitializeApp *//*F*//*************************************************************************** >AUTHOR        : AB**  FUNCTIONNAME  : MainEventLoop** ** >DESCRIPTION:stay in this loop until some event signals us to exit.  **              Check TRT_GetInput() to see if a Tilcon event occurred**              the event can be a notification from a button... **              If an event did occur, take appropriate  action. 	** ** >NOTES:  for more Information see the Tilcon Help** ** >PARAMETER: void** ** >RETURN VALUE: errorcode if an error is occurred else 0** 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -