hand代码自动生成

本文档详细描述了   使用Hand  PLSQL 代码自动生成器生成一些常用代码的方法


在 PLSQL developer中 使用 test 功能 (DBMS输出的缓冲区大小设置为1000000,太小了可能出错 @yunfang.shang )

分别运行以下函数或过程,可以在 DBMS输出窗口  中得到自动生成的代码。

程序包:HAND_PLSQL_AUTOCREATE

过程regist_table

用于产生表注册到应用的脚本。比如我们我们的Form要支持描述性弹性域,则必须把BLOCK的数据源表注册。

参数名

描述

 

 

P_TABLE_NAME

要注册的表名

P_OWNER

表的拥有者

P_APPL_SHORT_NAME

应用简名

 

过程form_view_iud

用于产生form操作表的程序单元<BLOCK_NAME> + ‘_PRIVATE’;

可以产生Insert_row;update_row;delete_row; lock_row ; 用于Form 中 Block上最常用的增,删,改触发器:ON-INSERT;ON-UPDATE;ON-DELETE; ON-LOCK

适用于表没有TABLE API的情况。

参数名

描述

 

 

P_BLOCK_NAME

FORM的块名

P_TABLE_NAME

要维护的表名

P_OWNER

表的拥有者

P_PRIMARY_KEY

表的主键字段

 

过程table_handle_pkg

用于产生form操作表的程序包<TABLE_NAME>_PKG

建议为每个业务表产生TABLEAPI。

参数名

描述

 

 

P_TABLE_NAME

要产生TABLE API的表名

P_OWNER

表的拥有者

P_PRIMARY_KEY

表的主键字段

 

过程form_table_handle

用于产生form操作表的程序单元<BLOCK_NAME> + ‘_PRIVATE’;

可以产生Insert_row;update_row;delete_row; lock_row ; 用于Form 中 Block上最常用的增,删,改触发器:ON-INSERT;ON-UPDATE;ON-DELETE; ON-LOCK

只不过,跟form_view_iud 相比,它利用了table_handle_pkg 产生的Table API 来完成增,删,改。所以如果要利用这个过程来产生Insert_row;update_row;delete_row; lock_row ; 则必须先使用table_handle_pkg 产生Table api

参数名

描述

 

 

P_BLOCK_NAME

FORM的块名

P_PACKAGE_NAME

TABLE API的程序包名

P_TABLE_NAME

要维护的表名

P_PRIMARY_KEY

表的主键字段

(适用于表具有TABLEAPI的情况。必须先产生TABLE API的程序包,然后才能产生FORM的程序单元。)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Halcon实现"Eye in Hand"(手眼)机器人的示例代码: ``` dev_set_draw('margin') dev_set_preferences('default_cd_orientation','portrait') dev_set_preferences('font','Arial-Bold-30') dev_set_preferences('foreground','white') * 读取相机标定数据 read_cam_par('calib_dat/Camera_Parameters_cam0.dat', CameraParameters) read_pose('calib_dat/Robot_Pose_cam0.dat', RobotPose) * 定义运动控制变量 P := [] Q := [] Vel := 200.0 Acc := 1000.0 Dec := 1000.0 * 定义手眼标定数据 read_pose('calib_dat/Hand_Eye_pose.dat', HandEyePose) * 读取模板图像 read_image(TemplateImage, 'template_image.png') * 初始化HALCON窗口 open_window(0, 0, 800, 600, 'Eye in Hand Example', '', 'visible') * 初始化机器人控制 set_robot_param('robot', 'communication', 'socket') set_robot_param('robot', 'hostname', '192.168.1.2') set_robot_param('robot', 'port', 10000) set_robot_param('robot', 'timeout', 30.0) set_robot_param('robot', 'username', 'default') set_robot_param('robot', 'password', 'default') open_robot('robot') * 机器人移动到初始位置 P[0] := 500.0 P[1] := -400.0 P[2] := 700.0 P[3] := 0.0 P[4] := 90.0 P[5] := 0.0 Q := pose_to_joint(HalconPoseToRobotPose(RobotPose) + [0, -pi/2, 0, 0, 0, 0]) move_joint('robot', Q, Vel, Acc, Dec) * 进行图像处理和机器人控制 while (1) * 采集图像 grab_image(Image, 'camera', -1) * 在图像中寻找模板 find_template(Image, TemplateImage, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, 'least_squares', 1, Row, Column, Angle, Scale, Score) * 如果找到了模板 if (Score > 0.5) * 计算机器人姿态 RobotPose := HalconPoseToRobotPose(HandEyePose * ImageToRobotPose(CameraParameters, Row, Column, Angle, Scale)) * 移动机器人到目标位置 Q := pose_to_joint(RobotPose + [0, -pi/2, 0, 0, 0, 0]) move_joint('robot', Q, Vel, Acc, Dec) * 抓取 move_joint('robot', Q + [0, 0, -pi/4, 0, 0, 0], Vel, Acc, Dec) move_joint('robot', Q + [0, 0, -pi/4, 0, 0, -pi/4], Vel, Acc, Dec) * 放置 move_joint('robot', Q + [0, 0, -pi/4, 0, 0, 0], Vel, Acc, Dec) move_joint('robot', Q, Vel, Acc, Dec) endif * 显示图像和机器人姿态 disp_image(Image, 0) dev_display_pose(RobotPose, CameraParameters, [], [], 'camera', 50) * 等待一段时间,然后清除窗口 wait_seconds(0.1) clear_window() endwhile * 关闭机器人和HALCON窗口 close_robot('robot') close_window() ``` 注意,这只是一个示例代码,实际的应用可能需要根据具体情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值