iNESTIM系统二次开发手册

合集下载

二次开发包使用说明书

二次开发包使用说明书

二次开发包使用说明书(版本V1.1)目录一、DEMO软件使用步骤 (3)1.1串口通讯单个显示屏 (3)1.1.1设置屏幕参数以及模组参数 (3)1.1.2打开DEMO软件 (6)1.1.3发送数据 (6)1.2串口通讯多个显示屏 (7)1.2.1设置屏幕参数以及模组参数 (7)1.2.2 打开DEMO软件 (9)1.2.3发送数据 (9)1.3 TCP/IP通讯单个显示屏 (9)1.3.1 设置屏幕参数以及模组参数 (9)1.3.2 打开DEMO软件 (12)1.3.3 发送数据 (12)1.4 TCP/IP通讯多个显示屏 (13)1.4.1 设置屏幕参数以及模组参数 (13)1.4.2 打开DEMO软件 (14)1.4.3 发送数据 (14)二、节目编辑流程 (14)三、调用顺序样例 (15)开发包使用说明软件使用步骤使用步骤一、DEMO软件单个显示屏1.1串口通讯串口通讯单个显示屏1.1.1设置屏幕参数以及模组参数主要设置屏幕参数以及模组参数,设置参数应使用“LED图文屏编辑控制平台”软件,设置步骤如下。

1)进入“LED图文屏编辑控制平台”中的硬件参数,设置参数。

参数设置完后,点击“发送后保存”。

2)打开二次开发包中的配置文件(.ini文件)打开二次开发包中的LED.INI文件。

参数配置说明参数配置说明::[地址:1]LinkAddr=1CardType=HL06ACOMPort=COM1LinkMode=串口IPAddr=PortNO=8000BaudRate=9600bpsColor=2Width=512Height=256① 控制卡地址"[地址:n]"和"LinkAddr" 范围为:1~253;② 控制卡类型CardType 的取值为: HL00、HL01、HL02、HL03A 、HL06A 、HL06A+ ③ 控制卡通讯模式“LinkMode ”的取值为:串口、TCP/IP④ 控制卡以太网参数:“IPAddr ”和“PortNO ”:IPAddr 取值:实际卡所配置IP 地址如:192.168.0.2PortNO 取值:实际卡所配置端口如:8000注:仅TCP/IP 模式需配置该参数⑥ 显示屏的宽度和高度分别为“Width ”和“Height ”:Width 取值范围: 8~屏幕高度,并且是8的倍数,Height 取值范围:8~屏幕高度⑦串口波特率和串口号分别为“BaudRate”和“COMPort”:BaudRate取值为:9600bps,38400bps,115200bps;COMPort取值为:COM1、COM2、COM3、...... (注:COM1为COM1口,COM2为COM2口);⑧显示屏颜色:0~3;0.单色屏(红色),1.单色屏(绿色),2.双色屏(红色&绿色),3.双色屏(绿色&红色)注意:*地址的个数可以根据实际显示屏的个数添加;*不要修改该文件的文件名及后缀;*该文件必须和应用程序放在同一个目录下。

NX二次开发-ufusr和ufsta等用户入口使用说明

NX二次开发-ufusr和ufsta等用户入口使用说明

NX⼆次开发-ufusr和ufsta等⽤户⼊⼝使⽤说明版本NX9+VS2012⽤户出⼝(⼊⼝)介绍这段内容是从书上抄的⽤户出⼝(User Exit)是NXOpen中的⼀个重要概念。

NX在运⾏过程中某些特定的位置存在规定的出⼝,当进程执⾏到这些出⼝时,NX会⾃动检查⽤户是否在此处已定义了指向内部程序位置的环境变量;若没有定义,则以NX默认的⽅式继续运⾏下去;若已定义,则从该处⾃动运⾏⽤户定制的应⽤程序。

利⽤不同的User Exit,可使⽤户定制的应⽤程序在NX运⾏到特定点时被⾃动执⾏。

每个User Exit都有唯⼀的出⼝名称,以便⽤户在⼦程序中调⽤,不同的User Exit使⽤不同的出⼝函数,最常⽤的User Exit是ufsta()与ufusr(),ufsta()是NX菜单启动时的User Exit,ufusr()是直接激活的User Exit。

通常情况下,User Exit函数的参数和返回值都相同,User Exit函数的定义如下:void entry_point(char *parm, int *returnCode, int rlen);其中parm和returnCode是输出参数,rlen是指参数parm的长度,由NX系统⾃动处理。

官⽅⽂档上的说明常⽤的两个⼊⼝函数例⼦ufusr()官⽅有⼀个example例⼦,我们编译执⾏去看⼀下/*===========================================================================Copyright (c) 1998Unigraphics Solutions CorporationUnpublished - All rights reserved===========================================================================*//************************************************************************** ** This is a sample C program written for Internal User Function. ** Its intent is a small, prewritten program so users can test ** Internal UFUN on their system to make sure it works. ** ** param - Parameters - Input, But Not Used ** retcod - Return Code - Output ** param_len - Length of 'param' argument - Input ** ** *************************************************************************/#include <stdio.h>#include <uf_defs.h>#include <uf.h>#include <uf_ui.h>#include <uf_cfi.h>#include <uf_curve.h>#include <uf_obj.h>#include <uf_part.h>#include <uf_assem.h>#include <uf_cfi.h>static void report_error( int error_code, char *msg_text, char *part_name );#define WAIT 1#define PART 2extern void ufusr( char *param, int *retcod, int param_len ){static char title[] = "CHOOSE OPTION";static char menu[6][37+1] = { "POINT","LINE","ARC","DELETE LAST ENTITY","CHANGE ARC MODE","EXIT PROGRAM" };static char mdmenu[2][37+1] = { "PARTIAL ARC","FULL CIRCLE" };static char linmsg[2][18] = { "CHOOSE LINE START","CHOOSE LINE END" };static char arcmsg[] = "CHOOSE POINT #";static char prtnam[MAX_FSPEC_BUFSIZE] = "blank";int choice; /* User Choice */int defalt[2]; /* Default Point Selection Type*/tag_t entid = 0; /* Entity Identifer */int idum; /* Dummy Integer Variable */int mode = 1; /* Arc Creation Mode */double point1[3]; /* Point Data Variable */double point2[3]; /* Point Data Variable */double point3[3]; /* Point Data Variable */int status; /* Status */int nopart; /* No active part flag */int pos_returned; /* Pos returned flag from menu */int rejected = 0; /* Reject flag from menu *//**/tag_t part_tag; /* Part Tag of Part */UF_PART_load_status_t /**/load_status; /* Structure to hold any *//* errors when loading part */int num_parts; /* Number of parts loaded */UF_initialize();/* Check For An Active Part */part_tag = UF_ASSEM_ask_work_part();if ( part_tag == NULL_TAG ){/* Ask For A Part To Retrieve or Create */nopart = 1;while (nopart){choice = uc1600("Retrieve/Create part*Enter name", prtnam, &idum);if (choice < 3) { return; }nopart=((choice != 1) && (choice != 4) && (prtnam[0] != 0)) ? 0 : 1;/* Check if the named part already exists on disk */status = uc4560(prtnam, PART);if ( status == 0 ){/* Retrieve specified part */status = UF_PART_open( prtnam, &part_tag, &load_status );nopart = 0;num_parts = load_status.n_parts;if ( status != 0 ){report_error( status, "retrieving part", prtnam );nopart = 1;}if ( num_parts > 0 ){int indx = 0;while ( indx < num_parts ){report_error( load_status.statuses[indx],"retrieving part",load_status.file_names[indx] );indx++;}UF_free_string_array( num_parts, load_status.file_names );UF_free( load_status.statuses );nopart = 1;}}else if ( status == 1 ){/* Create specified part */status = UF_PART_new(prtnam, UF_PART_ENGLISH, &part_tag ); report_error( status, "creating part", prtnam );if ( status == 0 )nopart = 0;}else{report_error( status, "checking part", prtnam );}}}/* We Now Have An Active Part *//* Get Next Action Choice (This Section Loops) */while (1){choice = uc1603(title, 0, menu, 6);/* Should always cancel out of the ufun dialog when the* user selects cancel or back*/if (choice == 1 || choice == 2){UF_terminate();}choice += -4;defalt[0] = 0;switch (choice) {case1: /* Create Points */choice = uc1616("CREATE POINT", defalt, 0, point1);while (choice > 4){UF_CURVE_create_point ( point1 , &entid );choice = uc1616("CREATE POINT", defalt, 0, point1);}break;case2: /* Create Lines */choice = 5;while (choice > 4){UF_CURVE_line_t line_coords;choice = uc1616(linmsg[0], defalt, 0,line_coords.start_point );if (choice > 4){choice = uc1616(linmsg[1], defalt, 0,line_coords.end_point );if (choice > 4)UF_CURVE_create_line ( &line_coords , &entid );if (choice == 1)choice = 5;}}break;case3: /* Create Arcs/Circles */pos_returned = 1;while (pos_returned){arcmsg[13] = '1';choice = uc1616(arcmsg, defalt, 0, point1);pos_returned = (choice > 4) ? 1 : 0;if (choice > 4)do {arcmsg[13] = '2';choice = uc1616(arcmsg, defalt, 0, point2);if (choice > 4){arcmsg[13] = '3';choice = uc1616(arcmsg, defalt, 0, point3);rejected = (choice == 1) ? 1 : 0;if (choice > 4)FTN(uf5063)(&mode,point1,point2,point3,&entid); }else/* check work */{rejected = (choice == 1) ? 0 : 1;pos_returned = (choice == 1) ? 1 : 0;}} while (rejected);}break;case4: /* Delete Last Entity Created */if (entid != 0)UF_OBJ_delete_object(entid);entid = 0;break;case5: /* Change Arc Mode */choice = uc1603("CHOOSE ARC MODE", mode, mdmenu, 2);if (choice > 4)mode = choice - 4;break;default: UF_terminate ( );return;}}}/*----------------------------------------------------------------------------*/static void report_error( int error_code, char *msg_text, char *part_name ) {if ( error_code != 0 ){char error_message[133];char local_string[300];UF_get_fail_message( error_code, error_message );sprintf(local_string,"Error %d %s: %s - %s",error_code, msg_text, part_name, error_message );uc1601( local_string, WAIT );}}我们⼆次开发最常⽤的⼊⼝函数就是ufusr()执⾏ufusr有两种⽅式,1.是直接挂到菜单栏上,从菜单点击下载。

思途旅游CMS标签调用说明前台模板二次开发文档

思途旅游CMS标签调用说明前台模板二次开发文档

思途CMS标签调用说明书本文档主要描述系统标签的功能与用法,系统标签的存储位置统一存放在include/taglib/smore/目录下,标签的命名格式为标签名.lib.php1.Attrgrouplist用途:此标签主要用于读取线路,酒店,租车,景点,文章,相册,团购的的属性组列表,此标签一般与getattrgrouplist配合使用,用于搜索列表,达到显示栏目相应属性的功能。

参数:typeid:需要调用属性的栏目id(线路:1,酒店:2,租车:3,文章:4,景点:5,相册:6,团购:13)filterid:需要排除的属性组id,如果排除多个则以逗号分隔。

row:调用的条数。

例子:这个标签一般用于在搜索列表使用如如上图所示,会调用线路属性组进行显示,typeid=1表示读取线路属性组,filterid=’91’表示排除属性组id为91的属性组,属性组id的查看可以在后台属性组管理页面进行查看。

如下图:2.getattrbygroup用途:用于通过某个属性组id或者属性名称来读取某个属性组相应的属性列表,该标签一般与attrgrouplist配合使用实现快速读取多个属性组信息。

参数:groupname:属性组的名称,如“旅行方式”typeid:同上groupid:属性组id的值。

row:调用的条数。

前台模板可用参数:[field:title/]:表示读取当前属性名称[field:id/]:表示读取当前属性id.例子:1.如我想单独调用线路属性组为“交通选择”的属性列表信息,则可以通过以下代码进行实现{sline:getattrbygroup typeid=’1’groupname=’交通选择’}<a data-id=”[field:id/]”>[field:title]</a>{/sline:getattrbygroup}也可以使用groupid来实现同样的效果,{sline:getattrbygroup typeid=’1’groupid=’84’}<a data-id=”[field:id/]”>[field:title]</a>{/sline:getattrbygroup}Groupid可以在后台相应栏目属性配置那里获取。

ERP二次开发规学习手册

ERP二次开发规学习手册

TIPTOP GP ERP二次开发规范说明TIPTOP ERP共分三大区:topstd(标准区) + toppord(正式区) + toptest(测试区)标准区正式生产环境用户测试,MIS程序客制测试┧━━━━━━┸━━━━━━┫目录结构和topprod完全一样标准tiptop($TOP)客制topcust($CUST)┧━━━━━━┳━━━┳━━━━━┳━━━┳━━━━╀━━━━━┫┗→目录结构和$TOP完全一样,只不过模组目录都是c开头的了config doc ds4gl2 ora out schema各模组目录(axm、asf...截止5.25已经有47个模组+sub+lib+qry)config:配置文件目录(top.global全局变量、4ad各程序ACTION列表、4st画面风格、4tb界面按钮风格、等)doc:帮助文档+系统图片目录ds4gl2:一些脚本目录,如r.c2、r.l2等ora:一下数据库应用查询脚本,如q_tabFREE等out:临时目录schema:数据库sch文件目录各模组目录:4fd画面档目录、per画面档编译后per目录、4gl源码档、42m、42rGenero Studio文件说明说明:$XXX表示各个模组;√:服务器必须文件;×服务器可选文件4pw:Genero Studio项目工程文件(位于服务器目录:$XXX/4pw)×4fd:画面档(位于服务器目录:$XXX/4fd)√per:gsform后4fd画面档对照文件(4fd经过gsform后的文件,位于服务器目录:$XXX/per)√42f:编译后的画面档文件(4fd经过r.f2后的文件,位于服务器目录:$XXX/per)√4gl:源码档(位于服务器目录:$XXX/4gl)√42m:编译后的源码链接档(4gl经过r.c2后的编译档,位于服务器目录:$XXX/42m)√42r:链接后的可执行文件(42m经过r.l2后的链接档,位于服务器目录:$XXX/42r)√4rp:报表文件(位于服务器目录:$XXX/4rp)×sch:数据库表结构文件(位于服务器目录:$XXX/sch)×TIPTOP ERP客制规范命名原则程序命名原则:X XX(3码)X(2码)XXX(3-5码)模组名程序类型流水号模组名:①如果为标准程序,程序名一定是a开头,程序位于对应的$AXX模组目录②如果修改标准程序,有些公司是修改为c程序有些公司还是用原来的a程序........................................................但是目录一定都是对应的$CXX模组目录③如果是新增程序,程序名一定是c开头,程序目录一定是对应的$CXX模组目录程序类型:r报表类程序、i基础资料类程序、q查询类程序、t交易类程序、p批处理类程序、s参数类程序流水号:一般随便编录,不重复就好;专业些就是同一作用的程序流水号一类$AZZ程序都是p_开头,规则不同与上$LIB为共用查询程序,都是cl_开头- $CLIB为客制共用查询程序,都是ccl_开头$SUB为副程序,都是s_开头- $CSUB为客制副程序,都是cs_开头$QRY为查询程序,都是q_开头- $CQRY为客制查询程序,都是cq_开头程序内部FUNCTION函数命名原则:X(2码)XXX(3-5码)_功能()常见功能函数如下:_menu:action功能菜单_q:开始查询,调用_fetch查取第一笔资料_cs:QBE条件查询及查询游标声明_fetch:N、P、F、L、/ 处理下、上、第一笔、末笔、指定笔单头资料读取,并调用_show显示资料_show:显示单头资料,如需要并调用_b_fill填充单身资料_a:新增,并先后调用_i(a)输入单头资料和_b输入单身资料_i:根据函数接受的参数a新增资料、u更新资料_u:更新,调用_i(u)更新资料_b:单身CRUD业务逻辑_b_fill:单身资料填充_bp:显示单身资料,提供单身action功能选项_r:删除整笔资料_out:打印函数_x:资料无效、有效处理_pic:显示或刷新图片_ef:EasyFlow送签_y:确认_z:取消确认_s:过账_w:过账还原_gen/_g:一般为根据某action自动产生单身资料_sub_y_chk或_y_chk:一般为复杂逻辑t程序"确认"动作时执行资料逻辑检查_sub_y_upd或_y_upd:一般为复杂逻辑t程序“确认”动作时执行资料更新_sub_refresh:一般为复杂逻辑t程序"确认"、"取消确认"、"过账"、"过账还原"动作更新后的资料刷新_sub_s:一般为复杂逻辑t程序“过账”_set_entry:设置单头栏位可进入录入资料_set_no_entry:设置单头栏位不可进入录入资料_set_entry_b:设置单身栏位可进入录入资料_set_no_entry_b:设置单身栏位不可进入录入资料_set_required:设置栏位为必须输入资料_init:初始化程序栏位是否可视,ACTION是否可视_a_default:新增资料时赋初值_b_move_to:单身栏位赋值、备份_b_move_back:单身栏位值还原修改数据库表栏位命名规则:①.修改现有表现有列:表列名称不变,只是旗标会自动由标准变成客制②.在现有表上增加列:表列规则ta_原表流水号,ex:ta_ima001③.新增表:表名及表列规则都是tc开头,表tc_xxx_file,表列tc_xxx流水号,ex:tc_lee_file,tc_lee001TIPTOP GP ERP 二次开发流程前提:熟悉基础的Linux命令+4GL基础语法+SQL语法,你可以看看本手册里面对应目录的相关资料一、p_zta增加或修改表(如果不用改表,这步可以跳过)修改表要数据库DBA的权限,如果你的账号没有这个权限可以在Linux服务器上用root执行一下脚步usermod -a -g dba Linux用户名(ex:为liyihui这个账号添加数据库dba组的权限usermod -a -g dba liyihui)(注意:是小g不是大G,大G是标准组,会覆盖之前用户所在的组,而不是添加组了)1、登入p_ztaDBA2、新增或修改表注意:你至少需要新增或修改ds库和程序业务使用的数据库,ds库是程序编译时参照的库(比如LIKE ima_file.tc_ima01)①.如果是新建表,先建立p_zta资料后,然后点击;如果是修改表就不用做这步骤了②.然后点击,根据是新增表还是修改表选择对应的选项操作//非必须操作③.更新ds.sch,Linux服务器上执行命令r.s2 ds //非必须操作,p_zta最后会自动r.s2一下我的技巧:如果多个营运中心都需要建立同一张表,我是这么做的①.ds帐套在p_zta按上面的流程建立表②.其他帐套在PL/SQL执行SQL:CREATE TABLE 表AS SELECT * FROM ds.表③.复制出zta_file及ztb_file该表的信息(将所属者改为其他帐套,每个帐套一份)④.再到p_zta里面,修改各个帐套的表的索引就OK了二、如果是将a标准程序修改为c客制程序,这里先做;如果是新增程序直接跳过本步骤为什么要先插入这一步:这样r.gf 客制程序2 c后自动新增的p_perlang和p_per就不用维护什么资料了1、p_perlang复制a标准程序的画面档资料为c客制程序的画面档资料p_perlang先查询出标准程序的资料-> 再按c(拷贝)-> 写入客制程序的代码+ 勾选"客制"栏位ex:先查询asft620的资料,然后复制(按c)将asft620客制为csft6202、p_per同理三、新增或修改4fd画面档及4gl程序源码档1、Linux服务器上下载ds.sch (如果做的4fd不用参照表就不用下载了,比如一些报表)Linux服务器上执行sz $TOP/schema/ds.sch2、打开Genero Studio软件,开始绘制4fd画面档①.建立Genero Studio的工程项目(注意是 .4pw 的工程项目工程文件哟)点击Ctrl + S 先保存项目文件,这是个人经常性按Ctrl+S保存文件的习惯^_^②.导入前面下载的ds.sch文件到工程文件中(否则等下做4fd画面档时会出现找不到表的情③.将导入的ds.sch 文件保存到工程文件中的Databases目录下面④.新建或修改4fd画面档对于新建4fd画面档时,我一般都是先摆好所有的控件,然后选择对应同一个表的所有控件(Ctrl可多选),再一起修改对应的表做画面档对于单身栏位,在单身列中间插入列时,该列在单身对应的SR变量里面一直摆在最后面,而不是对应的位置,需要手动调整一下(选中上下拉就可以了):⑤.rz -y 上传4fd档到服务器上对应的ERP模块4fd路径下面(Ex:$CSF/4fd),编译且预览画面档r.f2 4fd画面档(Ex:r.f2 csft620)r.gf 4fd画面档(Ex:r.gf csft620 2 c)(2:是语言别,表示中文简体;c:表示客制,如果是标准模块则换成p)⑥.新建或修改4gl源码档写4gl代码说明编辑器都可以,但个人还是喜欢用Genero Studio,因为有关键字着色、语法预警等功能⑦.rz -y 上传4gl源码档到服务器上对应的ERP模块4gl路径下面(Ex:$CSF/4gl),编译4gl(暂不链接)r.c2 源码档(Ex:r.c2 csft620)⑧.p_link查询出原标准程序的链接档,然后按C(复制)出客制程序的链接档,修改对应的项为客制目录下面的文件就可以了再新增p_zz里面的资料,注意p_zz里面的运行指令及模组都要改成客制目录⑨.回到服务器,链接程序r.l2 源码档(Ex:r.l2 csft620)⑩.回到p_zz,点击进入p_base_act程序后,一点要点击一下单身,然后退出,选择重新生成4ad档,才能在程序里面正确显示对应的ACTION如果不是tiptop账号,你需要$TOP/config/4ad整个目录文件的权限才可以成功生成新的程序的4ad文档四、根据需要,p_zm挂载程序到ERP目录里面及开通权限等........p_zm执行时,如果不是tiptop账号,你需要$TOP/config/4sm目录及文件的权限才可以成功生成menu.4sm目录文件。

【XXXX项目】二次开发设计说明书

【XXXX项目】二次开发设计说明书

文档编号:XXXX二次开发设计说明书XXXXXX有限公司目录1.引言 (3)1.1.编写目的 (3)1.2.项目背景 (3)1.3.参考资料 (3)2.二次开发结构 (3)2.1.软件结构 (3)2.2.条件与限制 (4)2.3.二次开发设计框架 (4)3.二次开发内容 (4)3.1.内容1(如:窗体定制—- ITEM属性表单的定制) (4)3.2.内容2 (5)3.3.内容n (5)4.接口设计 (5)4.1内部接口 (5)4.2外部接口 (6)5.数据结构设计 (6)5.1.库结构 (6)5.2.表结构 (6)6.出错处理设计 (6)6.1.出错信息 (6)6.2.补救措施 (6)6.3.系统维护设计 (6)7.其他 (6)1.引言1.1. 编写目的本文档主要针对系统的二次开发部分。

对在《实施总体设计方案》中描述的需要二次开发的内容,详细进行描述。

为编程人员、测试人员、实施人员和维护人员之间提供共同的参考依据,对XX软件功能及集成模块的实现作详细描述。

本说明书面向对象为编程人员、测试人员、实施人员和维护人员。

1.2. 项目背景本项目软件开发平台:本项目软件二次开发实施单位:1.3. 定义PLM (product life cycle management):产品生命周期管理PDM (product data management):产品数据管理BOM (bill of material):材料明细表CAPP(Computer Adied Process Planning):计算机辅助工艺设计PSE (product structure editor):产品结构编辑器ItemRevision:版本零部件……1.4. 参考资料《XXXX项目需求规格说明书》《XXXX项目总体设计方案》……2.二次开发结构2.1. 软件结构例如:TCEng软件的层次构成–Portal Java clients. 客户端–TCEng server 服务器端–Oracle 后台数据库–TCEngFS 文档服务器TCEng 存储数据的方式:结构化数据——存储于Oracle数据库中文件——存储于卷Volume中2.2. 条件与限制2.3. 二次开发设计框架客户程序类的层次如图所示:图:3.二次开发内容对于需要开发的内容有两类:一类是需要重新进行开发的内容,这相当于重新开发某一模块的功能。

二次开发使用手册.

二次开发使用手册.

二次开发使用手册条屏通讯控件thtplg.ocx(V3.3)一、说明每一个功能使用,均须先调用TP_SZLG_CardInit打开通讯口初始化,及在使用完成后,须调用TP_SZLG_CardEnd()关闭通讯口。

thtplg.ocx控件中,功能函数可以独立使用,点阵、方式函数,视需要可分开,混合使用。

二、功能函数1、TP_SZLG_CardInit(Com As Long, Port As Long, ScreenNo As Long)说明:通讯开始初始化输入参数:Com :串行口Port:波特率,使用19200ScreenNo :屏号,1-255,0为广播屏号,所有屏可接收,但无返回值。

输出参数:0-失败。

(串口被占用,或无效)1-成功。

2、TP_SZLG_CardEnd()说明:关闭通讯口输入参数:无输出参数:无3、TP_SZLG_Reset() '复位说明:显示屏复位输入参数:无输出参数:0-失败。

1-成功。

4、TP_SZLG_Screen_Send(Buffer() As Byte)说明:加载屏参数输入参数:Buffer: 13字节数组0-(不使用)1-驱动极性,0-低亮,1-高亮2-显示时间,1-显示3-接收超时复位,1-使用4-颜色,0-双色,1-单色5-亮度(1-64)6-宽度(4到24个汉字)7-高度(1到4行)8-扫描方式(16:1/16,8:1/8,4:1/4,2:1/2,0:静态扫描)9-备用10-备用11-备用12-备用输出参数:0-失败。

1-成功。

5、TP_SZLG_Screen_Seek(Buffer() As Byte)说明:读屏参数输入参数:Buffer: 13字节数组输出参数:0-失败。

1-成功。

Buffer:返回13字节数据1-屏号2-波特率参数,0-9600,1-19200,2-28800,3-576003-幕数4-极性,0-负极性低亮,1-正极性高亮5-时间,0-不显示,1-显示6-超时复位,0-不使用,1-使用超时复位功能7-颜色,0-双色,1-单色8-亮度(1-64)9-宽度(4到24个汉字)10-高度(1到4行)11-扫描方式(16:1/16,8:1/8,4:1/4,2:1/2,0:静态扫描)12-存储,1-24c64 8K,2-24c256 32K,3-24c512 64K6、TP_SZLG_Screen_Time()说明:校时输入参数:无输出参数:0-失败。

iNESTIM系统二次开发手册

iNESTIM系统二次开发手册

iNESTIM系统数据展示及应用分析平台二次开发手册目录文件修订记录一、引言iNESTIM软件是面向企业(集团)应用需求而研发的专业能源监测与集中控制管理平台,帮助企业加强能源计量管理,开展企业节能降耗行动,提高能源利用率,减少资源消耗、保护环境;协助企业更好地完成资源调配、组织生产、部门结算、成本核算,对能源供应进行监测,以便企业实时掌握能源状况,为实现能源自动化调控奠定坚实的数据基础。

系统配合各用能单位的节能工作,科学合理地降低单位产值或单位产品的能源资源消耗,实现分产品、分车间的能源管理,提高能源资源的利用水平,建立科学合理的能源体系,同时为用能单位能源网络的设计、优化、改造提供全面的基础数据和分析数据;加强对用能单位能源利用状况的宏观监督管理,以及对用能单位能源资源投入产出全过程进行全面的审计,建立科学的能源审计体系;为企业的安全、可靠、高效的用能提供全面的科学指导,最大限度地延长企业生产设备的使用寿命,有效降低维护成本。

本手册定制的目的是为了对项目实施及配置过程中的一些简单二次开发方式做一些说明。

二菜单配置方式菜单订制及查询sql定制Sql定制页面的功能是将简单的横行乘数列的表格使用web的方式展示。

原理是通过sql语句获取数据集并将获取到的数据集在web上展示出来。

此过程只涉及到2个数据表分别是module_info表与report_unit表。

也就是说在以上2张表中将记录完成就能在web上形成一个sql定制页面。

在数据库中直接配置的方法如下:2.1.1 数据表介绍首先介绍下module_info及report_unit的主要字段:Module_info菜单信息表MODULEID 数字型,菜单编号,MODULETYPEID 数字型,菜单种类编号大部分时候使用‘1’即可,PARENTID 数字型,父节点编号,即此菜单项下挂于菜单树的哪一级,MODULENAME 字符型,菜单名称,MODULEURL 字符型,页面地址及参数,STATE 数字型,默认0,ADMINPERM 字符型,管理权限字符串,使用‘1’,READPERM 字符型,读权限字符串,使用‘1’,FUNCTIONID 数字型,,TREEID 数字型,此菜单使用的树编号,此id对应MODULE_TREE_RELATION表中的id,ORDERINDEX 数字型,排序编号,若此菜单所属的父菜单包含多个子菜单,依照此字段的大小排序IMG 字符型,菜单在菜单树中使用的图片MODULETYPE 字符型,标识位,‘0’表示此项内容在后台系统即管理员显示,‘1’表示在前台系统即数据浏览页面显示。

ANSYS二次开发资料讲解

ANSYS二次开发资料讲解

A N S Y S二次开发ANSYS二次开发手册UIDL解析APDL解析收集于网络,如有侵权请联系管理员删除目录第二章解析UIDL篇 (1)2.1结识UIDL (1)2.2看看UIDL的模样 (2)2.3 Ansys调用UIDL的过程 (6)第三章UIDL实例解析一 (9)3.1问题描述: (9)3.2环境准备: (9)3.3添加菜单: (10)3.4结束语 (14)第四章UIDL实例解析二 (15)4.1问题描述: (15)4.2环境准备及构建对话框: (16)4.3参数提取杂谈 (19)4.4结束语 (20)附录 (20)第五章UIDL实例解析三 (23)5.1问题描述 (23)5.2环境准备及构建联机帮助: (24)5.3几点说明 (28)5.4 结束语 (29)第六章解析APDL (30)6.1 熟悉新朋友—APDL (30)6.2 二次开发工具之间的比较 (30)6.3 结束语 (31)第七章 APDL综合实例 (32)7.1 问题说明 (32)7.2 解题思想 (33)7.3 构建步骤 (34)7.4 几点说明 (40)7.5 结束语 (40)收集于网络,如有侵权请联系管理员删除第二章解析UIDL篇2.1结识UIDLUIDL是什么?Ansys二次开放语言的一种。

OK,那么它能带给我们什么?很多很多,如果你想让你在Ansys中制作的用户界面具有专业水准的话,请来结识一下我们的UIDL把。

●全称:UIDL的全名是User Interface Design Language,是Ansys中二次开发工具方面的三大金刚之一。

GUI方面几乎全部的二次开发功能都将由它运筹帷幄。

●功用:⏹组织我们自己强大的菜单系统。

想象一下我们在Ansys中也能轻松做出可以和VC,VB之类主流GUI开发工具媲美的菜单响应效果,Ansys的世界将是多么的亲切、友好。

⏹构建功能繁复的对话框。

Ansys中美观易用的ContactWizard对话框级联界面一定让你印象很深把,有了它,即使是最菜鸟的门外汉也能构建一流的工程算例,Ansys5.7中的DesignSpace应该就是无可争辩的例证之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

i N E S T I M系统二次开发手册标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]iNESTIM系统数据展示及应用分析平台二次开发手册目录文件修订记录一、引言iNESTIM软件是面向企业(集团)应用需求而研发的专业能源监测与集中控制管理平台,帮助企业加强能源计量管理,开展企业节能降耗行动,提高能源利用率,减少资源消耗、保护环境;协助企业更好地完成资源调配、组织生产、部门结算、成本核算,对能源供应进行监测,以便企业实时掌握能源状况,为实现能源自动化调控奠定坚实的数据基础。

系统配合各用能单位的节能工作,科学合理地降低单位产值或单位产品的能源资源消耗,实现分产品、分车间的能源管理,提高能源资源的利用水平,建立科学合理的能源体系,同时为用能单位能源网络的设计、优化、改造提供全面的基础数据和分析数据;加强对用能单位能源利用状况的宏观监督管理,以及对用能单位能源资源投入产出全过程进行全面的审计,建立科学的能源审计体系;为企业的安全、可靠、高效的用能提供全面的科学指导,最大限度地延长企业生产设备的使用寿命,有效降低维护成本。

本手册定制的目的是为了对项目实施及配置过程中的一些简单二次开发方式做一些说明。

二菜单配置方式菜单订制及查询sql定制Sql定制页面的功能是将简单的横行乘数列的表格使用web的方式展示。

原理是通过sql语句获取数据集并将获取到的数据集在web上展示出来。

此过程只涉及到2个数据表分别是module_info表与report_unit表。

也就是说在以上2张表中将记录完成就能在web上形成一个sql定制页面。

在数据库中直接配置的方法如下:2.1.1 数据表介绍首先介绍下module_info及report_unit的主要字段:Module_info菜单信息表MODULEID 数字型,菜单编号,MODULETYPEID 数字型,菜单种类编号大部分时候使用‘1’即可,PARENTID 数字型,父节点编号,即此菜单项下挂于菜单树的哪一级,MODULENAME 字符型,菜单名称,MODULEURL 字符型,页面地址及参数,STATE 数字型,默认0,ADMINPERM 字符型,管理权限字符串,使用‘1’,READPERM 字符型,读权限字符串,使用‘1’,FUNCTIONID 数字型,,TREEID 数字型,此菜单使用的树编号,此id对应MODULE_TREE_RELATION表中的id,ORDERINDEX 数字型,排序编号,若此菜单所属的父菜单包含多个子菜单,依照此字段的大小排序IMG 字符型,菜单在菜单树中使用的图片MODULETYPE 字符型,标识位,‘0’表示此项内容在后台系统即管理员显示,‘1’表示在前台系统即数据浏览页面显示。

SINGLE 字符型,标识位,‘0’即可。

REPORT_UNIT 报表信息表RE_UNIT_ID 数字型,报表编号,RE_UNIT_NAME 字符型,报表名称,显示于数据页面的正中,图形的上方,RE_UNIT_DEGREE 字符型,备用字段可为空,RE_UNIT_SQL 字符型,数据查询所用sql,RE_UNIT_RPT 字符型,模板名,可为空RE_UNIT_CONTERT 字符型,与RE_UNIT_NAME相同,RE_UNIT_CONDITION 字符型,可为空,RE_UNIT_SQL1 字符型,下钻页面所用sql,可为空,RE_DATA 字符型,标识位,是否可下钻‘1’为支持下钻,‘0’为不可下钻,RE_TIME_VISIBLE 字符型,标识位,时间字段可否下钻‘0’为显示双时间(起至),‘1’为单时间(时间点),‘2’为无时间XAXIS 字符型,x轴、横轴字段,一般为时间字段,填写字段顺序号即可,即希望做横轴的字段在sql查询数据集中为第几个字段。

YAXIS 字符型,y轴、纵轴字段,一般为数据字段,填写字段顺序号即可,即希望做横轴的字段在sql查询数据集中为第几个字段。

,YUNIT 字符型,y轴、纵轴单位,即数据字段所对应的单位如:kwH、A、V等,TIMER 字符型,填写字段编号,表示要进行时间下钻查询的第几个字段, PARMER 字符型,填写字段编号,表示要进行档案下钻查询的第几个字段2.1.2编写数据查询sql将需要进行查询的sql语句写出并按要求调整,以日电量查询为例:SELECT as编号, as 名称, c_tv as 时间, as 电量FROM d_ele a,eq_param bWHERE=这样的语句就能将所有日电量表中的电量数据查询出来了,但是在web上使用常常需要加条件如id = 445 及时间从2011-6-20到2011-6-23那么语句变成如下格式:SELECT as编号, as 名称, c_tv as 时间, as 电量FROM d_ele a,eq_param bWHERE=and in (445)and to_date('1970-01-01 08:00:00', 'yyyy-mm-ddHH24:mi:ss')+86400>=to_date('2011-06-20', 'yyyy-mm-dd')and to_date('1970-01-01 08:00:00', 'yyyy-mm-ddHH24:mi:ss')+86400<=to_date('2011-06-23', 'yyyy-mm-dd')而在web中所查询的参数是非固定的,是在每次查询的时候选择的,所以id及时间字段应该使用变量,inestim_web中为这样的变量值设置了固定的变量如 id 为v_mp_id,起始日时间为v_timestrday,结束日时间为v_timeendday,并将查询语句中所有不符合web 使用方式的单引号'替换为",所有参数变量名可以参照2.2.4的表格。

则最终结果变成SELECT as编号, as 名称, c_tv as 时间, as 电量FROM d_ele a,eq_param bWHERE=and in(v_mp_id)and to_date("1970-01-01 08:00:00","yyyy-mm-ddHH24:mi:ss")+86400>=to_date("v_timestrday","yyyy-mm-dd HH24:mi:ss")and to_date("1970-01-01 08:00:00","yyyy-mm-ddHH24:mi:ss")+86400<=to_date("v_timeendday","yyyy-mm-dd HH24:mi:ss")2.1.3 查询sql订制在report_unit中可以指定将要制作的页面中用于图形显示的字段,如:在查询的结果集中时间字段是第3个,数据字段是第4个,那么XAXIS为3,YAXIS为4,因为查询的结果值为电量所以单位应该是kwH,给将要增加的记录一个编号,要求在report_unit 中没有被使用过的如(2014),然后按照3.6.6.1所描述的字段定义组织记录如下:Insert into module_info(RE_UNIT_ID, RE_UNIT_NAME, RE_UNIT_SQL, RE_UNIT_CONTERT, RE_DATA,RE_TIME_VISIBLE, XAXIS, YAXIS, YUNIT, TIMER, PARMER)Values(2014,'日电量查询','selectas编号,as名称,to_date("1970-01-01 08:00:00","yyyy-mm-dd HH24:mi:ss")+86400as时间,trunc,2)as电量from d_ele a,eq_param bwhere=and=3199and in(v_mp_id)and to_date("1970-01-01 08:00:00","yyyy-mm-ddHH24:mi:ss")+86400>=to_date("v_timestrday","yyyy-mm-dd HH24:mi:ss")and to_date("1970-01-01 08:00:00","yyyy-mm-ddHH24:mi:ss")+86400<=to_date("v_timeendday","yyyy-mm-dd HH24:mi:ss")', 'null', '1', '1', '3', '4', 'KWh', '3', '2');COMMIT;将此记录插入report_unit表中,然后就可以为此报表增加一个菜单了。

2.1.4 菜单添加在module_info表为报表增加菜单记录需要注意的有:必须使用尚未被使用的菜单编号(moduleid),即此编号不可重复;若为数据查询页面,必须将此菜单正确的挂在某一父节点(parent_id)下;选择正确的树类型(treeid);明确菜单在前台数据浏览系统或者后台档案管理系统展示(moduletype)。

以将2.2.5.2的报表挂上菜单为例:找到一个尚未被使用的编号如:1662;此报表属于数据查询界面所以必须有父节点,因为属于电量查询我们将它下挂在18 电量统计下;他需要查询所有的对象包括虚拟节点与实际表计我们使用全树id为12(树的建立在另一章节中有说明。

);此页面应该在数据浏览系统被展示所以moduletype为1,然后我们组装关键的MODULEURL字段,以下如下地址模版进行:pages/share/flag=2&report_id=2014&dttype=d问号之前的部分为sql定制报表页面模板文件路径,所有的定制sql页面都使用此模板,故无需改动;flag字段为时间标识位,表示使用几个查询时间条件,可以使用的有’0’,’1’,’2’,0表示不使用时间条件,1表示时间点查询使用一个时间条件,2表示使用时间段查询,需要使用2个时间条件;report_id为使用报表在report_unit表中的记录编号,在2.2.5.2中我们使用的是2014;dttype为时间类型字段表示使用的查询时间条件最小单位是小时(h)或者天(d)或者月(m),所以例子的结果应该是pages/share/flag=2&report_id=2014&dttype=d。

相关文档
最新文档