C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制

直线测量功能

可以结合halcon算子的.net程序进行面向对象的编程:
源码如下:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第1张图片
打开算子的.net程序:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第2张图片
将程序运用到C#中:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第3张图片

C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第4张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第5张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第6张图片

halcondonet.dll源码解读

C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第7张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第8张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第9张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第10张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第11张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第12张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第13张图片

halcon与C#联合编程的demo

C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第14张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第15张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第16张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第17张图片

halcon的序列化机制

C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第18张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第19张图片
采用二进制进行序列化保存和反序列化
步骤:
1.创建一个类MyTool,并添加以下序列化和反序列化的代码:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第20张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第21张图片
2、创建另一个类MyData,填写要序列化保存的参数:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第22张图片

3、在主程序按钮事件中实例化这个参数并赋值,然后将这个参数进行序列化保存:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第23张图片
4、创建一个按钮事件进行反序列化,将之前保存的参数进行反序列化提取:

C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第24张图片
5、进一步的应用,序列化一个区域(region):
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第25张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第26张图片
6、进一步的应用,序列化一条直线(起始的坐标点),在MyData中定义Tuple:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第27张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第28张图片
直接赋值:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第29张图片
7、进一步的应用,序列化一条xld,在MyData中定义XLDCont,由于类型是HXLDCont,代码不能正常运行,是由于HXLDCont缺少反序列化的构造函数:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第30张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第31张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第32张图片
要想代码正常运行,要将变量定义为父类的类型,即HXLD类型:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第33张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第34张图片
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第35张图片
也可以显式的添加反序列化的构造函数,修改halcondotnet中的程序并重新生成后,报错的程序就可以重新使用:
C#联合halcon2——直线测量功能、halcondonet.dll源码解读、halcon与C#联合编程的demo、halcon的序列化机制_第36张图片

你可能感兴趣的:(C#联合halcon)