VPLC系列机器视觉运动控制一体机快速入门(五)( 三 )
ZV_HMIRECT2(11,300)
DRAWLINE(TABLE(300),TABLE(301),TABLE(302),TABLE(303))'外矩形
DRAWLINE(TABLE(302),TABLE(303),TABLE(304),TABLE(305))
DRAWLINE(TABLE(304),TABLE(305),TABLE(306),TABLE(307))
DRAWLINE(TABLE(306),TABLE(307),TABLE(300),TABLE(301))
DRAWLINE(TABLE(308),TABLE(309),TABLE(310),TABLE(311))'方向箭头
DRAWLINE(TABLE(312),TABLE(313),TABLE(310),TABLE(311))
DRAWLINE(TABLE(314),TABLE(315),TABLE(310),TABLE(311))
if(0=TABLE(316))thenreturn
SET_COLOR(C_GREEN)
DIMidx
foridx=0toTABLE(316)-1
DRAWLINE(TABLE(317+idx*4),TABLE(318+idx*4),TABLE(319+idx*4),TABLE(320+idx*4))
next
ENDSUB
9.在draw.bas文件中添加在“Set_Roi1”窗口界面按下【确定】按钮时响应的函数并关联动作函数名 。
'设置Roi1窗口按下确定按钮时响应的函数
GLOBALSUBbtn_meas_confirm1()
HMI_CLOSEWINDOW(14)
ENDSUB
↓
文章图片
10.新建在“Set_Select”窗口界面按下【选择测量器区域2】按钮时弹出的“Set_Roi2”窗口,用于创建第二条尺寸边缘的直线测量器并设置检测直线的参数 。 
文章图片
11.在draw.bas文件中添加在“Set_Select”窗口界面按下【选择测量器区域2】按钮时响应的函数并关联动作函数名 。
'按下选择测量器区域2按钮时响应的函数
GLOBALSUBbtn_sel_roi2()
ZV_LATCHCLEAR(1)'清除锁存
ZV_LATCHSETSIZE(1,HMI_CONTROLSIZEX(15,1),HMI_CONTROLSIZEY(15,1))'设置锁存的大小
ZV_LATCH(grabImg,1)'显示图像在锁存上
SET_COLOR(RGB(0,255,0))
'图像roi坐标转控件roi
is_redraw=0
TABLE(11,d_meas_param2(0),d_meas_param2(1))
ZV_POSFROMIMG(1,1,11,11)'图像坐标转换到HMI控件坐标
TABLE(13)=ZV_LENFROMIMG(1,d_meas_param2(2))
TABLE(14)=ZV_LENFROMIMG(1,d_meas_param2(3))
TABLE(15)=d_meas_param2(4)
HMI_SHOWWINDOW(15)
ENDSUB
↓
文章图片
12.在draw.bas文件中添加Roi2根据鼠标操作更新ROI位置的函数以及实时绘制Roi1的函数 。
'根据鼠标操作更新Roi2的位置
GLOBALSUBupdate_roi2()
ifmouse_scan(21)=1then'扫描按下操作
hit_pos=ZV_HMIADJRECT2(table(21),table(22),11,-1)'只有按下时可以改变击中位置
is_redraw=1
endif
ifmouse_scan(21)=-1then'扫描松开操作
ZV_HMIADJRECT2(table(21),table(22),11,hit_pos)
is_redraw=1
endif
if(MOUSE_state(21))then
ZV_HMIADJRECT2(table(21),table(22),11,hit_pos)
is_redraw=1
endif
if(1=is_redraw)then
is_redraw=0
ZV_POSTOIMG(1,1,11,31)
d_meas_param2(0)=TABLE(31)
d_meas_param2(1)=TABLE(32)
d_meas_param2(2)=ZV_LENTOIMG(1,TABLE(13))
d_meas_param2(3)=ZV_LENTOIMG(1,TABLE(14))
d_meas_param2(4)=TABLE(15)
'如果选择补正源 , 就保存roi基准位置
if(TABLE(110)=1)then
set_base_roi()
endif
SET_REDRAW
endif
ENDSUB
'更新Roi2位置后实时绘制图形
GLOBALSUBdraw_roi2()
SET_COLOR(C_BLUE)
TABLE(16,d_meas_param2(6),d_meas_param2(7))'设置子区域个数和宽度两个参数
ZV_HMIRECT2(11,300)'计算控件的矩形roi相应的顶点和箭头锚点
DRAWLINE(TABLE(300),TABLE(301),TABLE(302),TABLE(303))'外矩形
DRAWLINE(TABLE(302),TABLE(303),TABLE(304),TABLE(305))
DRAWLINE(TABLE(304),TABLE(305),TABLE(306),TABLE(307))
DRAWLINE(TABLE(306),TABLE(307),TABLE(300),TABLE(301))
DRAWLINE(TABLE(308),TABLE(309),TABLE(310),TABLE(311))'方向箭头
DRAWLINE(TABLE(312),TABLE(313),TABLE(310),TABLE(311))
DRAWLINE(TABLE(314),TABLE(315),TABLE(310),TABLE(311))
if(0=TABLE(316))thenreturn
SET_COLOR(C_GREEN)
DIMidx
foridx=0toTABLE(316)-1
DRAWLINE(TABLE(317+idx*4),TABLE(318+idx*4),TABLE(319+idx*4),TABLE(320+idx*4))
next
ENDSUB
13.在draw.bas文件中添加在“Set_Roi2”窗口界面按下【确定】按钮时响应的函数并关联动作函数名 。
'设置Roi2窗口按下确定按钮时响应的函数
GLOBALSUBbtn_meas_confirm2()
HMI_CLOSEWINDOW(15)
ENDSUB
↓
文章图片
14.新建meas.bas文件用于存放计算两条直线的距离函数和标定函数等测量相关函数 , 并在文件中添加实现函数 。
'计算两条直线的距离宽度
globalsublength1()
LOCALdist,dist1,dist2
localdis_tmp,dst_tmp1
'计算直线2的起始点到直线1之间的距离
dist=ZV_DISTPL(d_meas_rst2(0),d_meas_rst2(1),d_meas_rst1(0),d_meas_rst1(1),d_meas_rst1(2),d_meas_rst1(3))
'计算直线2的终点到直线1之间的距离
dist1=ZV_DISTPL(d_meas_rst2(2),d_meas_rst2(3),d_meas_rst1(0),d_meas_rst1(1),d_meas_rst1(2),d_meas_rst1(3))
- 码垛机器人参数及组成单元
- 聚焦民生小案|东郊派出所迅速破获一起系列盗窃电动车案
- 米兰壁纸墙布窗帘五星门店专访系列:紧跟公司走 量利双丰收
- 红米K40Pro:基本现货,红米K40:压力都在它那里红米K40系列热度持续中红米K40Pro的亮点非常多红米K40Pro抢购压力小很多红米K40Pro的压力确实很大红米K40没有
- 《苍穹雷霆 GUNVOLT》系列最新作《锁环》视频公布
- 碎片商店哪款皮肤最值得兑换?夏日系列占两席,288碎片给他不亏
- 劳力士超人气系列手表,水鬼和迪通拿哪款更保值?
- 一加8系列,唯一进入“最佳安卓手机”前四名的国产手机
- 王者荣耀策划承诺落空?绝美皮肤遭腰斩,梅兰竹菊系列没有菊
- 华为发力!全新旗舰平板或与P50系列一同到来
