实现功能:halcon写一个外部函数,用pythonnet调用。
首先把halcon自带的halcondotnet.dll和hdevenginedotnet.dll两个文件复制到python项目目录里。
python安装pythonnet库,代码头:
import clr
import sys
import System
from System import String, Char, Int32, Environment, IntPtr
d = clr.AddReference("./sources/halcondotnet")
print(d)
d = clr.AddReference("./sources/hdevenginedotnet")
print会打印出halcon的版本
类创建:
from HalconDotNet import *
class HdevEnginePy:
Procedure = HDevProcedure()
Program = HDevProgram()
ourProcedure = "./myProcedures" #外部函数路径
def __init__(self):
self.MyEngine = HDevEngine()
self.MyEngine.SetProcedurePath(self.ourProcedure)
return
#获得所有的外部函数名
def get_proc_names(self):
procedure_name = self.MyEngine.GetProcedureNames()
return procedure_name
可以开始调用:
func=HdevEnginePy()
print(func.get_proc_names())
#这三句一体才能执行其中一个外部函数
func.Procedure=HDevProcedure("halcontest")
func.ProcCall=HDevProcedureCall(func.Procedure)
func.ProcCall.Execute()
halcontest.hdvp是我写的一个非常简单无参数的halcon函数