📄 1061e201b75f001d1289bbda6de18a35
字号:
/*$Log:**** Rev /main/NC_V0_integration/12** Date: Apr 17 17:33:43 2008 abdeaity** neue fkeys**** Rev /main/NC_V0_integration/11** Date: Apr 2 17:46:59 2008 karlgros** Grafik Applikation auf OEM-Partitition GUI_Demo**** Rev /main/NC_V0_integration/10** Date: Mar 7 17:45:10 2008 karlgros** changed MO_DIAGNOSE to the right key**** Rev /main/NC_V0_integration/9** Date: Mar 5 13:47:55 2008 abdeaity** define Clrt F tasten**** Rev /main/NC_V0_integration/8** Date: Jan 10 15:12:26 2008 abdeaity** exclude pxr0vxsc.h**** Rev /main/NC_V0_integration/7** Date: Nov 1 17:12:28 2007 abdeaity** Kommentar HMI Demo V2 **** Rev /main/NC_V0_integration/6** Date: Oct 30 15:12:51 2007 karlgros** putenv (benutzt in dab) fuer getenv von Tilcon**** Rev /main/NC_V0_integration/5** Date: Jun 6 17:10:18 2007 abdeaity** Kommentar:example of getting the text from system**** Rev /main/NC_V0_integration/4** Date: Jun 1 15:17:49 2007 abdeaity** Kommentar:exclude pxr0xx.h**** Rev /main/NC_V0_integration/3** Date: May 9 17:9:51 2007 abdeaity** Kommentar:call new functions**** Rev /main/NC_V0_integration/2** Date: Mar 13 13:58:1 2007 rolfglei** Log-Syntax geaendert*//*** ---------------------------------------------------------------------** 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.... ** ** ---------------------------------------------------------------------*//*======================================================================** >>>> C - Standard Headerfiles <<<<** ==================================================================== */#ifdef HWDS_WINDOWS #include <windows.h> /* required for all Windows applications*/#include <stdlib.h>#include <stdio.h>#endif#include <time.h>#include <string.h>/* include Tilcon API functions *//* All function Names begining with TRT_ are Tilcon funktions*//*lint -e46*//*lint -e49*//*lint -e10*/#include <tilcon/TRTAPI.h> // Tilcon API functions/*lint +e46*//*lint +e49*//*lint +e10*//*======================================================================** >>>> General definitions for c-files <<<<** these lines are generated automatically , do not modify !** ==================================================================== */#include <ty3c_mac.h>/*F*//*======================================================================** >>>> MTX - Headerfiles <<<<** ==================================================================== */#ifndef HWDS_WINDOWS#ifndef PXR1OSTY_INCLUDED#include "pxr1osty.h"#endif#endif#ifndef NCS1MCSY_INCLUDED#include "ncs1mcsy.h"#endif#ifndef NCS1MCCN_INCLUDED#include "ncs1mccn.h"#endif#ifndef NCS1BAS_INCLUDED#include "ncs1bas.h"#endif #ifndef NCS1WEA_INCLUDED#include "ncs1wea.h"#endif #ifndef NCS1BAP_INCLUDED#include "ncs1bap.h"#endif /*======================================================================** >>>> Headerfiles of the subsystem <<<<** ==================================================================== */#ifdef HWDS_WINDOWS#include "dab_h_win32.h"#endif#ifndef DAB_H_STARTGRA_INCLUDED#include "dab_h_startgra.h"#endif#ifndef DAB_H_ENGINE_IF_INCLUDED#include "dab_h_engine_if.h"#endif#ifndef DAB_H_WEA_INCLUDED#include "dab_h_wea_if.h"#endif#ifndef DAB_H_EVHAN_INCLUDED#include "dab_h_evhan.h"#endif#ifndef DAB_H_AXIS_IF_INCLUDED#include "dab_h_axis_if.h"#endif#ifndef DAB_H_OBJIDS_INCLUDED#include "dab_h_ObjIDs.h"#endif#ifndef DAB_H_CALLBACKS_INCLUDED#include "dab_h_callbacks.h"/*the Header file with Callback Funktions*/#endif#ifndef DAB_H_DIREXP_IF_INCLUDED#include "dab_h_direxp_if.h"#endif#ifndef DAB_H_GETMACPAR_INCLUDED#include "dab_h_getmacpar.h"#endif#ifndef DAB_H_NCEDITOR_INCLUDED#include "dab_h_nceditor.h"#endif#ifndef DAB_H_MEM_INCLUDED#include "dab_h_mem.h"#endif#ifndef DAB_H_MENUIF_INCLUDED#include "dab_h_menuif.h"#endif #ifndef DAB_H_MNTNANCE_INCLUDED#include "dab_h_mntnance.h"#endif#ifndef DAB_H_KYESDEF_INCLUDED#include "dab_h_keysdef.h"#endif#include "dab_h_cpl.h" /*Jiang add it*/IMPORT void Directory_Load(void);IMPORT void FileReadTest(void);/*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;#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*/ /***************************************************************************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++; } }/***************************************************************************This function can help us to find CPL variable from the variavle tree.***/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** 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.*/ "10.110.241.86", /* IP Adresse of the Target.*/ /*change as necessary*/ hWnd, /* Windo 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) { Dab_h_Delay(500);/*Wait*/ 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_FontRegister fontRegisterProps; long taskMask; short int TofElements = 4; short int NofParameters = 1; char file_ext[5] = ""; short int Error = 0; /* set tilcon environment */ putenv ("Tilcon=/ata0a/GUI_Demo"); 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*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -