上位机开发笔记 » 搜索 » user:admin post:true

halcon之com组件的使用

2.显示图片到窗体

var WindowHandle = HOperatorSetX.OpenWindow(0,0,width,height,mainForm.picturebox.hwnd,"transparent",""); HOperatorSetX.DispImage(Image,
aardio halcon admin •  2018-04-02 • 最后回复来自 admin
2

halcon之com组件的使用

操作图片com组件有两种方式,

第一种接口方式:

var HOperatorSetX = com.CreateObject("{6ebd90e2-d219-11d2-ade5-0000c00f4ef9}")

读取图片,并获取大小尺寸

aardio halcon admin •  2018-04-02 • 最后回复来自 admin
2

halcon中tuple变量定义

halcon的com控件必须要注册才能使用, 用com.lite()不行.

import console console.open() //import com.activeX; import com.lite; import com; var comdll = com.lite("\res\halconx.dll"); comdll.registerServer(); //注册控件 //com.activeX.regsvr32("\res\halconx.dll") //调用控件 mainFor
halcon admin •  2018-04-02 • 最后回复来自 admin
11

halcon中tuple变量定义

import com.activeX; //注册控件 com.activeX.regsvr32("\res\halconx.dll") //调用控件 mainForm.button4.oncommand = function(id,event){ var filepath = com.Variant("res/double_circle.png"); var Image = HOperatorSetX.ReadImage(null,filepath); console.varDump(Image) var ww,
halcon admin •  2018-04-02 • 最后回复来自 admin
11

halcon中tuple变量定义

import console console.open() import com; var HsystemX = com.CreateObject("{6ebd90de-d219-11d2-ade5-0000c00f4ef9}")  var que = com.Variant("processor_num"); var ret = HsystemX.GetSystem( que ); console.varDump(ret) var que = com.Variant("version"); var ret = 
halcon admin •  2018-04-01 • 最后回复来自 admin
11

halcon中tuple变量定义

halcon admin •  2018-04-01 • 最后回复来自 admin
11

halcon中tuple变量定义

halcon admin •  2018-04-01 • 最后回复来自 admin
11

halcon写微信跳一跳辅助

decompose3 (Image, Image1, Image2, Image3)  trans_from_rgb (Image1, Image2, Image3, ImageResult11, ImageResult21, ImageResult31, 'hsv')  threshold (ImageResult31, Regions1, 0, 129) opening_circle (Regions1, RegionOpening1, 3) threshold (ImageResult11, Regions
halcon admin •  2018-03-24 • 最后回复来自 admin
14

图像中污渍的边缘处理

read_image (Image101107918ca1dda0699400, 'C:/Users/RD-W/Desktop/10_11079_18ca1dda0699400.bmp') mean_image (Image101107918ca1dda0699400, ImageMean, 12, 12
admin •  2018-03-22

解决com.excel调用之后有excel进程残留问题

import console;  import com.excel; var excel = com.excel( true ); var book = excel.WorkBooks.Open("C:\Users\Administrator\Desktop\Book8.xlsx"); sleep(2000) //延时关闭,能够看到excel进程存在,然后被关闭         excel.Visible = false;         excel.alerts = false;         book.close
admin •  2018-03-21

wsock.udp的使用

第二种方法: 利用线程来循环接收数据, udpServer.recvfrom(1024);这个函数里面用了多次自调用,所以可以认为是阻塞式接收吧, 当有接收到数据,才能执行后面的代码

import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add() /*}}*/ import console import wsock.udp.client; console.open(
admin •  2018-03-21 • 最后回复来自 admin
1

wsock.udp的使用

udp和串口类似,这个利用网络协议.

发送暂且不说, 接收可以采用两种办法:

1,采用asynClient异步客户端 , 这样可以在界面线程中通过消息来操作

import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add() /*}}*/ import console //异步客户端 import wsock.udp.asynClient
admin •  2018-03-21 • 最后回复来自 admin
1

halcon写微信跳一跳辅助

在前面版本的基础上增加了参数外部可调功能:

ios系统手机要想和PC机相连来截图,需要用到airplayer Pro软件,安装之后可以根据获取到的句柄截图,然后进行操作.

import win.ui; /*DSG{{*/ mainForm = win.form(text="跳一跳视觉
halcon admin •  2018-03-18 • 最后回复来自 admin
14

halcon写微信跳一跳辅助

实测发现上述代码还是有一点不足,如果图像中有一个类似汉堡店的图形,那么小人的定位就不准,导致跳板定位也不准,于是,重新更改了小人的获取方式

图像进行缩放阈值处理之后,

halcon代码如下:

read_image (Img2506, 'C:/Users/Administrator/Desktop/t1ttest/halcon_T1T/res/tt/IMG_2506.PNG') rgb1_to_gray (Img2506, GrayImage) scale_image (GrayImag
halcon admin •  2018-03-17 • 最后回复来自 admin
14

halcon写微信跳一跳辅助

另外一个思路:

观察发现跳一跳的图形都是从小人脚部开始向左或者向右成30度角形成的跳板,而且跳板的中心就是这个跳板最顶部的点的正下方, 于是,我们可以以小人脚部点30度画一条斜线, 跳板的最高顶部点画一条垂直线, 两条线相交的地方就是跳板中心点.

通过简单的三角计算,就可以得到落脚点的中心坐标了.

于是只要找到了小人的脚部坐标和跳板的最高处坐标, 就可以进行操作了.

import win.ui; /*DSG{{*/ mainForm = win.form(text="Hal
halcon admin •  2018-03-16 • 最后回复来自 admin
14

局部控件全屏展示(非窗体全屏,而是任意一个控件全屏)

以上代码实现了双击主界面中的custom来让custom全屏的功能:

但是,如果custom.loadForm()之后,在按照上面的方法就行不通了.因为这时候回调函数

w

admin •  2018-03-11 • 最后回复来自 admin
1

如何让Button按钮实现[单击]和[长按]功能

很多时候为了用户操作方便,需要在窗口功能中实现 长按功能 ,并且也不能失去这个按钮的单击功能, 那么

一般应该是这样判断, 当按钮被按下的同时, 开启一个定时器(例如300毫秒), 然后判断在这段时间内是否松开了鼠标, 如果没有松开就判断它为长按, 否则为普通的单击事件


由此考虑: 有两种办法

1,开启一个1毫秒定时器 , 在定时器里获取鼠标左键状态 , 如果发现在不到300毫秒的间隔之内松开了鼠标,那么判定为单击, 超过300毫秒仍然处于按下状态则判断为长按!

2,利用多线程操作, 按下的同时开启一个线程

aardio admin •  2018-03-10 • 最后回复来自 admin
1

menu菜单选中状态设置

import win.ui; /*DSG{{*/ var winform = win.form(text="单选菜单演示";right=565;bottom=443) winform.add() /*}}*/ import win.ui.menu; var menuRadio = win.ui.popmenu(winform);     menuRadio.onMenuItemClick = function(id){         menuRadio.selId = id;         select(menuR
admin •  2018-03-07 • 最后回复来自 admin
2

menu菜单选中状态设置

一鹤先生新增的menu菜单单选功能:


添加selIdex,selId,selText等用于获取、设置单选项的属性, 并增加 onMenuItemClick事件用于一次性设置所有菜单项默认回调事件import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add() /*}}*/ import win.ui.menu; var menuRadio = win.ui.popmenu(winform
admin •  2018-03-07 • 最后回复来自 admin
2
登 录
信息栏
本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap