📄 u_data.c
字号:
adr.addr_tag = SYM_ADDR; /* select symbolic address */ adr.addr.sym_addr = "064"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"Integer16"); /* select type */ if (!ms_add_named_var (dom,"Temperature",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_INT16 *) (logical_mem + atoi (adr.addr.sym_addr))) = 72; } adr.addr.sym_addr = "066"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"Integer16"); /* select type */ if (!ms_add_named_var (dom,"Air_Pressure",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_INT16 *) (logical_mem + atoi (adr.addr.sym_addr))) = 100; } adr.addr.sym_addr = "096"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"Integer16"); /* select type */ if (!ms_add_named_var (dom,"Status",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_INT16 *) (logical_mem + atoi (adr.addr.sym_addr))) = 72; } adr.addr.sym_addr = "104"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"GeneralizedTime"); /* select type */ if (!ms_add_named_var (dom,"ClockGtime",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { time (&clock_time); *((time_t *) (logical_mem + atoi (adr.addr.sym_addr))) = clock_time; } milliseconds_today = calc_mill_since_12(); days_since_84 = calc_days_since_1184(); adr.addr.sym_addr = "108"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"BinaryTimeOfDay4"); /* select type */ if (!ms_add_named_var (dom,"ClockBTOD4",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_INT32 *) (logical_mem + 108)) = milliseconds_today; /* BTOD4 */ } adr.addr.sym_addr = "112"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"BinaryTimeOfDay6"); /* select type */ if (!ms_add_named_var (dom,"ClockBTOD6",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_INT32 *) (logical_mem + 112)) = milliseconds_today; /* BTOD6 */ *((ST_INT32 *) (logical_mem + 116)) = days_since_84; /* BTOD6 */ }/* Fri Dec 31 23:59:54 1999 on a PC is 946702794 seconds *//* Mon Feb 28 23:59:54 1999 on a PC is 951800394 seconds */ adr.addr.sym_addr = "120"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"GeneralizedTime"); /* select type */ if (!ms_add_named_var (dom,"Y2K_Gtime",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((time_t *) (logical_mem + atoi (adr.addr.sym_addr))) = 946702794; } adr.addr.sym_addr = "124"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"BinaryTimeOfDay6"); /* select type */ if (!ms_add_named_var (dom,"Y2K_BTOD6",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { /* time to get a fresh drink and get ready to shout happy new year*/ *((ST_INT32 *) (logical_mem + atoi (adr.addr.sym_addr))) = 86340000; /* ms for 23:59 */ *((ST_INT32 *) (logical_mem + atoi (adr.addr.sym_addr) + sizeof(ST_INT32))) = 5843; /* 12-31-9999 */ } adr.addr.sym_addr = "132"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"UtcTime"); /* select type */ if (!ms_add_named_var (dom,"UtcTimeNow",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { utc_time_now = (MMS_UTC_TIME *) (logical_mem + atoi (adr.addr.sym_addr)); utc_time_now->secs = time(NULL); utc_time_now->fraction = 0x00800000; /* 1/2 second */ utc_time_now->qflags= 0x11; }/* Add a few NamedVariableLists */ var_list_ptr = (VARIABLE_LIST *) chk_calloc (3, sizeof (VARIABLE_LIST)); var_list_idx = var_list_ptr; var_list_idx->var_spec.var_spec_tag = VA_SPEC_NAMED; var_list_idx->var_spec.vs.name.object_tag = VMD_SPEC; strcpy (var_list_idx->var_spec.vs.name.obj_name.vmd_spec, "Temperature"); var_list_idx++; var_list_idx->var_spec.var_spec_tag = VA_SPEC_NAMED; var_list_idx->var_spec.vs.name.object_tag = VMD_SPEC; strcpy (var_list_idx->var_spec.vs.name.obj_name.vmd_spec, "Air_Pressure"); var_list_idx++; var_list_idx->var_spec.var_spec_tag = VA_SPEC_NAMED; var_list_idx->var_spec.vs.name.object_tag = VMD_SPEC; strcpy (var_list_idx->var_spec.vs.name.obj_name.vmd_spec, "Status"); var_list_idx++; if (!ms_add_nvlist (&(m_vmd_select->vmd_wide), "PopularNamedVars", 3, var_list_ptr)) wait_msg ("PopularNamedVars Variable List ADD FAILURE"); chk_free (var_list_ptr);#ifdef INT64_SUPPORT/* Add huge integers */ adr.addr.sym_addr = "146"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"Integer64"); /* select type */ if (!ms_add_named_var (dom,"SunTemperature",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_INT64 *) (logical_mem + atoi (adr.addr.sym_addr)))#if defined(__hpux) || defined(_AIX) = 8589934592LL; /* 2^33 */#else = 8589934592; /* 2^33 */#endif } adr.addr.sym_addr = "154"; /* byte offset */ strcpy (type.obj_name.vmd_spec,"Unsigned64"); /* select type */ if (!ms_add_named_var (dom,"HugeCounter",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { *((ST_UINT64 *) (logical_mem + atoi (adr.addr.sym_addr)))#if defined(__hpux) || defined(_AIX) = 1099511627776LL; /* 2^40 */#else = 1099511627776; /* 2^40 */#endif }#endif/*** Now add variables to the "Flex_Gage" domain *//*** All remaining variables are ST_FLOAT */ strcpy (type.obj_name.vmd_spec,"Float"); /* select type */ if (!(ndom = ms_find_named_dom ("Flex_Gage"))) wait_msg ("Named Domain not found"); else { dom = &(ndom->objs); adr.addr.sym_addr = "072"; /* byte offset */ if (!ms_add_named_var (dom,"X_Dimension",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else *((ST_FLOAT *) (logical_mem + atoi (adr.addr.sym_addr))) = (ST_FLOAT) 1.1; adr.addr.sym_addr = "076"; /* byte offset */ if (!ms_add_named_var (dom,"Y_Dimension",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else *((ST_FLOAT *) (logical_mem + atoi (adr.addr.sym_addr))) = (ST_FLOAT) 2.2; adr.addr.sym_addr = "080"; /* byte offset */ if (!ms_add_named_var (dom,"Z_Dimension",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else *((ST_FLOAT *) (logical_mem + atoi (adr.addr.sym_addr))) = (ST_FLOAT) 3.3; }/*** Now add variables to the "Robot" domain */ if (!(ndom = ms_find_named_dom ("Robot"))) wait_msg ("Named Domain not found"); else { dom = &(ndom->objs); adr.addr.sym_addr = "084"; /* byte offset */ if (!ms_add_named_var (dom,"X_Axis",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else *((ST_FLOAT *) (logical_mem + atoi (adr.addr.sym_addr))) = (ST_FLOAT) 4.4; adr.addr.sym_addr = "088"; /* byte offset */ if (!ms_add_named_var (dom,"Y_Axis",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else *((ST_FLOAT *) (logical_mem + atoi (adr.addr.sym_addr))) = (ST_FLOAT) 5.5; adr.addr.sym_addr = "092"; /* byte offset */ if (!ms_add_named_var (dom,"Z_Axis",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else *((ST_FLOAT *) (logical_mem + atoi (adr.addr.sym_addr))) = (ST_FLOAT) 6.6; }/* The mem_chk varaibles */ dom = &m_vmd_select->vmd_wide;/* add all as VMD scope */ adr.addr_tag = SYM_ADDR; sprintf (address_string, "0x%p", (ST_CHAR*)&chk_curr_mem_count); adr.addr.sym_addr = address_string; strcpy (type.obj_name.vmd_spec,"Unsigned32"); /* select type */ if (!ms_add_named_var (dom,"chk_curr_mem_count",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { tptr = ms_find_named_type(&m_vmd_select->vmd_wide,"Unsigned32"); ms_add_unnamed_var((ST_UCHAR *)&chk_curr_mem_count, tptr, NULL); } sprintf (address_string, "0x%p", (ST_CHAR*)&chk_max_dyn_mem_ptrs); adr.addr.sym_addr = address_string; strcpy (type.obj_name.vmd_spec,"Unsigned32"); /* select type */ if (!ms_add_named_var (dom,"chk_max_dyn_mem_ptrs",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { tptr = ms_find_named_type(&m_vmd_select->vmd_wide,"Unsigned32"); ms_add_unnamed_var((ST_UCHAR *)&chk_max_dyn_mem_ptrs, tptr, NULL); } sprintf (address_string, "0x%p", (ST_CHAR*)&chk_max_mem_allocated); adr.addr.sym_addr = address_string; strcpy (type.obj_name.vmd_spec,"Unsigned32"); /* select type */ if (!ms_add_named_var (dom,"chk_max_mem_allocated",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { tptr = ms_find_named_type(&m_vmd_select->vmd_wide,"Unsigned32"); ms_add_unnamed_var((ST_UCHAR *)&chk_max_mem_allocated, tptr, NULL); } sprintf (address_string, "0x%p", (ST_CHAR*)&chk_curr_mem_size); adr.addr.sym_addr = address_string; strcpy (type.obj_name.vmd_spec,"Unsigned32"); /* select type */ if (!ms_add_named_var (dom,"chk_curr_mem_size",&type,&adr,0)) wait_msg ("Local Variable Name ADD FAILURE"); else { tptr = ms_find_named_type(&m_vmd_select->vmd_wide,"Unsigned32"); ms_add_unnamed_var((ST_UCHAR *)&chk_curr_mem_size, tptr, NULL); } }/************************************************************************//************************************************************************//* Local Variable and Type Read *//* This code reads the demo configuration file 'mmsvar.cfg' and creates *//* named types and named variables per the contents of that file. *//* Each variable has a memory buffer allocated for it. *//************************************************************************/#define VAR_NAME_BUF_LEN 200static ST_CHAR *named_type_name;static ST_CHAR *named_var_name;static ST_CHAR *named_var_list_name;static ST_CHAR *named_domain;static ST_INT num_of_variables;static VARIABLE_LIST *vl_ptr;static ST_INT init_var;static ST_BOOLEAN domain_specific;static ST_VOID cfg_domains_begin (ST_VOID);static ST_VOID cfg_domain_name (ST_VOID);static ST_VOID cfg_capability (ST_VOID);static ST_VOID cfg_domains_end (ST_VOID);static ST_VOID cfg_pis_begin (ST_VOID);static ST_VOID cfg_pi_name (ST_VOID);static ST_VOID cfg_pi_dom (ST_VOID);static ST_VOID cfg_pis_end (ST_VOID);static ST_VOID cfg_types_begin (ST_VOID);static ST_VOID cfg_type_name (ST_VOID);static ST_VOID cfg_type_def (ST_VOID);static ST_VOID cfg_types_end (ST_VOID);static ST_VOID cfg_vars_begin (ST_VOID);static ST_VOID cfg_var_name (ST_VOID);static ST_VOID cfg_var_name_init (ST_VOID);static ST_VOID cfg_var_type_name (ST_VOID);static ST_VOID cfg_vars_end (ST_VOID);static ST_RET read_var_data (ST_CHAR *dest, ST_CHAR *varname, RUNTIME_TYPE *rt_head, ST_INT rt_num);static ST_VOID cfg_var_lists_begin (ST_VOID);static ST_VOID cfg_var_list_name (ST_VOID);static ST_VOID cfg_varlists_end (ST_VOID);static ST_VOID cfg_vlist_nvar (ST_VOID);static ST_VOID cfg_vlist_ndom (ST_VOID);static ST_VOID cfg_vlist_end (ST_VOID);static ST_VOID cfg_journal_begin (ST_VOID);static ST_VOID cfg_jrnl_name (ST_VOID);static ST_VOID cfg_jrnl_ndom (ST_VOID);static ST_VOID cfg_jrnl_file (ST_VOID);static ST_VOID cfg_jrnl_deletable (ST_VOID);static ST_VOID cfg_jrnl_end (ST_VOID);static ST_VOID cfg_var_blocks_begin (ST_VOID);static ST_VOID cfg_var_block_begin (ST_VOID);static ST_VOID cfg_var_blocks_end (ST_VOID);static ST_VOID cfg_block_type_name (ST_VOID);static ST_VOID cfg_block_num_vars (ST_VOID);static ST_VOID cfg_block_base_var_name (ST_VOID);static ST_VOID cfg_block_update_on_read (ST_VOID);static ST_VOID cfg_block_update_on_time (ST_VOID);static ST_VOID cfg_var_block_end (ST_VOID);/*----------- Domains, PI's, Named Types and vars keyword tables -----*/struct cfg_kw_el domains_base_kwtbl[] = { {"%TypesBegin", cfg_types_begin, NULL }, {"%DomainsBegin", cfg_domains_begin, NULL }, {"%PisBegin", cfg_pis_begin, NULL }, {"%JournalsBegin", cfg_journal_begin, NULL}, { NULL, NULL, NULL} };struct cfg_kw_el domain_name_kwtbl[] = { {"DomainName", cfg_domain_name, NULL }, {"Capability", cfg_capability, NULL }, {"%domainsEnd", cfg_domains_end, NULL}, { NULL, NULL, NULL} };struct cfg_kw_el pi_name_kwtbl[] = { {"PiName", cfg_pi_name, NULL }, {"Domain", cfg_pi_dom, NULL }, {"%pisEnd", cfg_pis_end, NULL}, { NULL, NULL, NULL} };struct cfg_kw_el jrnl_name_kwtbl[] = { {"JournalName", cfg_jrnl_name, NULL }, {"Domain", cfg_jrnl_ndom, NULL }, {"JournalFile", cfg_jrnl_file, NULL }, {"Deletable", cfg_jrnl_deletable, NULL}, {"%journalsEnd", cfg_jrnl_end, NULL}, { NULL, NULL, NULL} };struct cfg_kw_el type_name_kwtbl[] = { {"TypeName", cfg_type_name, NULL }, {"%TypesEnd", cfg_types_end, NULL}, { NULL, NULL, NULL} };struct cfg_kw_el type_def_kwtbl[] = { {"TypeDef", cfg_type_def, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_begin_kwtbl[] = { {"%varsBegin", cfg_vars_begin, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_name_kwtbl[] = { {"varName", cfg_var_name, NULL }, {"varNameInit", cfg_var_name_init, NULL }, {"%varsEnd", cfg_vars_end, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el var_type_name_kwtbl[] = { {"TypeName", cfg_var_type_name, NULL }, { NULL, NULL, NULL} };/* Named Variable Lists */struct cfg_kw_el var_list_begin_kwtbl[] = { {"%VarListsBegin", cfg_var_lists_begin, NULL }, { NULL, NULL, NULL} };struct cfg_kw_el named_var_list_kwtbl[] =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -