halcon之com组件的使用
2.显示图片到窗体
halcon之com组件的使用
操作图片com组件有两种方式,
第一种接口方式:
var HOperatorSetX = com.CreateObject("{6ebd90e2-d219-11d2-ade5-0000c00f4ef9}")读取图片,并获取大小尺寸
halcon中tuple变量定义
halcon的com控件必须要注册才能使用, 用com.lite()不行.
halcon中tuple变量定义
halcon中tuple变量定义
halcon写微信跳一跳辅助
图像中污渍的边缘处理
解决com.excel调用之后有excel进程残留问题
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(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.asynClienthalcon写微信跳一跳辅助
在前面版本的基础上增加了参数外部可调功能:
ios系统手机要想和PC机相连来截图,需要用到airplayer Pro软件,安装之后可以根据获取到的句柄截图,然后进行操作.
import win.ui; /*DSG{{*/ mainForm = win.form(text="跳一跳视觉halcon写微信跳一跳辅助
实测发现上述代码还是有一点不足,如果图像中有一个类似汉堡店的图形,那么小人的定位就不准,导致跳板定位也不准,于是,重新更改了小人的获取方式
图像进行缩放阈值处理之后,
halcon代码如下:
read_image (Img2506, 'C:/Users/Administrator/Desktop/t1ttest/halcon_T1T/res/tt/IMG_2506.PNG') rgb1_to_gray (Img2506, GrayImage) scale_image (GrayImaghalcon写微信跳一跳辅助
另外一个思路:
观察发现跳一跳的图形都是从小人脚部开始向左或者向右成30度角形成的跳板,而且跳板的中心就是这个跳板最顶部的点的正下方, 于是,我们可以以小人脚部点30度画一条斜线, 跳板的最高顶部点画一条垂直线, 两条线相交的地方就是跳板中心点.
通过简单的三角计算,就可以得到落脚点的中心坐标了.
于是只要找到了小人的脚部坐标和跳板的最高处坐标, 就可以进行操作了.
import win.ui; /*DSG{{*/ mainForm = win.form(text="Hal局部控件全屏展示(非窗体全屏,而是任意一个控件全屏)
以上代码实现了双击主界面中的custom来让custom全屏的功能:
但是,如果custom.loadForm()之后,在按照上面的方法就行不通了.因为这时候回调函数
w
如何让Button按钮实现[单击]和[长按]功能
很多时候为了用户操作方便,需要在窗口功能中实现 长按功能 ,并且也不能失去这个按钮的单击功能, 那么
一般应该是这样判断, 当按钮被按下的同时, 开启一个定时器(例如300毫秒), 然后判断在这段时间内是否松开了鼠标, 如果没有松开就判断它为长按, 否则为普通的单击事件
由此考虑: 有两种办法
1,开启一个1毫秒定时器 , 在定时器里获取鼠标左键状态 , 如果发现在不到300毫秒的间隔之内松开了鼠标,那么判定为单击, 超过300毫秒仍然处于按下状态则判断为长按!
2,利用多线程操作, 按下的同时开启一个线程
menu菜单选中状态设置
menu菜单选中状态设置
一鹤先生新增的menu菜单单选功能: