halcon中tuple变量定义

By 笑口常开 at 2018-03-25 • 0人收藏 • 823人看过
typedef   void*   VOIDP;

/*****************************************************************************/
/* Parameter passing (Control parameters)                                    */
/*****************************************************************************/
#define UNDEF_PAR        0       /* Parameter type: no defined type          */
#define LONG_PAR         1       /* Parameter type: long                     */
#define HANDLE_PAR       LONG_PAR /* Parameter type: long                     */
#define FLOAT_PAR        2       /* Parameter type: float                    */
#define STRING_PAR       4       /* Parameter type: string                   */
/* Possible parameter types for a single element: */
#define ANY_ELEM    (LONG_PAR|FLOAT_PAR|STRING_PAR)
#define INT_PAR      LONG_PAR    /* Parameter type: int                      */
#define DOUBLE_PAR  FLOAT_PAR    /* Parameter type: double                   */
#define MIXED_PAR        8       /* Parameter type: Hcpar                    */
#define MAX_TUPLE_TYPE   MIXED_PAR/* maximum type number                     */
/* Possible parameter types for a tuple: */
#define ANY_TUPLE   (LONG_PAR|FLOAT_PAR|STRING_PAR|MIXED_PAR)
/*                      16          reserved */
/*                      32          reserved */
#define POINTER_PAR     64       /* Parameter type: pointer to any type      */
#define TUPLE_PAR      128       /* Parameter type: pointer to tuple         */
#define MAX_PAR     MIXED_PAR


/*****************************************************************************/
/* Constants and basic types                                                 */
/*****************************************************************************/
#define MAX_TUPLE_LENGTH 1000000   /* max. length of a tuple                 */
#define MAX_STRING       1024      /* max. length of a string                */

typedef UINT4            Herror;   /* Type function values (error messages)  */

typedef  long *Hkey;               /* primary key in DB (for iconic objects) */
#define  UNDEF_KEY   (Hkey)(0)     /* Undefined iconic object                */


/*****************************************************************************/
/* Structures for passing parameters between language interface and core     */
/*****************************************************************************/
#ifndef HC_NO_STRUCT_MEMBER_ALIGNMENT
/* sets the struct member alignment to avoid problems if
 * the settings of the user differ to those of the HALCON
 * version. (8 is the default alignment, generally) */
# pragma pack(push,8)
#endif
typedef union
{
  INT4_8  l;              /* 4/8 byte integer                       (input)  */
  double  d;              /* 8 byte real                            (input)  */
  char    *s;             /* pointer to strings                     (input)  */
  double  f;              /* 8 byte real (legacy 11.0)              (input)  */
} Hpar;                   /* parameter passing for the C interface           */

typedef union
{
  INT4_8  *l;             /* 4/8 byte integer                       (output) */
  double  *d;             /* 8 byte real,                           (output) */
  char    *s;             /* pointer to strings                     (output) */
  VOIDP   p;              /* pointer to var. of any type (e.g. tuple)(output)*/
  double  *f;             /* 8 byte real, (legacy 11.0)             (output) */
} Hvar;                   /* parameter passing for the C interface           */

typedef struct
{
  Hpar   par;             /* values                                          */
  HINT   type;            /* type flag                                       */
} Hcpar;                  /* parameter passing for the C interface           */

typedef struct
{
  Hvar   var;             /* values                                          */
  HINT   type;            /* type flag                                       */
} Hcvar;                  /* parameter passing for the C interface           */

typedef union {
  INT4_8 *l;
  double *d;
  char   **s;
  Hcpar  *cpar;
} Hcelem; /* pure type array */


typedef struct HCTUPLE
{
  Hpar  val;
  HINT  type;
  char  pad[sizeof(Hcpar)-sizeof(Hpar)-sizeof(HINT)]; /* padding for data
                                * structure alignement to enable val and type
                                * to get used as Hcpar structure */
  INT4_8 num;                   /* number of set array elements */
  INT4_8 capacity;              /* allocated array length */
  HINT  free;                   /* free array elem when destroying tuple? */
  Hcelem elem;                  /* the actual array */
} Hctuple;
#define HCTUPLE_INITIALIZER {{0},UNDEF_PAR,{0},0,0,0,{NULL}}

typedef struct
{
  Hcvar   *variables;     /* variables (of application) to write back values */
  Hcpar   *element;       /* tuple element(s)                                */
  INT4_8  num_el;         /* number of used elements                         */
  INT4_8  length;         /* total length of array (incl. unused elements)   */
} Hcvtuple;               /* for passing control parameter variables from    */
    
typedef struct                /* Tuple representation           */
{
  Hcpar   *tuple;
  INT_PTR length;
} Htuple;


11 个回复 | 最后更新于 2018-04-02
2018-03-26   #1

http://www.mvtec.com/doc/halcon/13/en/tuple_type.html

2018-03-28   #2
/* INT4_8 is 4 bytes on all 32-bit and 8 bytes on all 64-bit platforms */
#ifndef _WIN64  /* LP64 data model */
#  if !defined(_TMS320C6X)
#    define HINT4_8       long      /* workaround for preprocessor bug */
#    define INT4_8        HINT4_8
#    define INT4_8_FORMAT "l"
#    define INT4_8_MIN    LONG_MIN
#    define INT4_8_MAX    LONG_MAX
#    define UINT4_8_MIN   0UL
#    define UINT4_8_MAX   ULONG_MAX
#  else         /* _TMS320C6X long is really 40Bit, but sizeof(long)=8 */
#    define INT4_8        int
#    define INT4_8_FORMAT ""
#    define INT4_8_MIN    INT_MIN
#    define INT4_8_MAX    INT_MAX
#    define UINT4_8_MIN   0
#    define UINT4_8_MAX   UINT_MAX
#  endif
#else          /* LLP64 data model */
#  define INT4_8        __int64
#  define INT4_8_FORMAT "I64"
#  define INT4_8_MIN    _I64_MIN
#  define INT4_8_MAX    _I64_MAX
#  define UINT4_8_MIN   0UL
#  define UINT4_8_MAX   _UI64_MAX
#endif


2018-03-28   #3

Hlong* for integer arrays (HALCON type LONG_PAR),

double* for floating point arrays (DOUBLE_PAR) or

char** for string arrays (strings, STRING_PAR)


2018-03-28   #4
void create_tuple(tuple,length)     or     macro CT(tuple,length)
       Htuple    *tuple;
       Hlong      length;
       /* creates a MIXED_PAR tuple that can hold 'length' entries h  */

  void create_tuple_type(tuple,length,type)    
       Htuple    *tuple;
       Hlong      length;
       Hlong      type
       /* creates a tuple of 'type' that can hold 'length' entries. 
        * 'type' can hold either LONG_PAR, DOUBLE_PAR, STRING_PAR,  
        * or MIXED_PAR.                                              */

  void destroy_tuple(tuple)           or     macro DT(tuple)
       Htuple    tuple;
       /* deletes a tuple (if the tuple contains string entries,     */
       /* the memory allocated by the strings is freed, too)         */

  Hlong length_tuple(tuple)            or     macro LT(tuple)
       Htuple    tuple;
       /* returns the length of a tuple (number of entries)           */

  void copy_tuple(input,output)      or     macro CPT(input,output)
       Htuple    input;
       Htuple    *output;
       /* creates a tuple and copies the entries of the input tuple  */

  void resize_tuple(htuple,new_length) or   macro RT(htuple,new_length)
       Htuple    *htuple;
       Hlong      new_length;
       /* creates a tuple with the new size and copies the previous entries */
Figure 21.2: HALCON/C Htuple procedures (part one).

   void create_tuple_i(tuple,value)
       Htuple    *tuple;
       Hlong      val;
       /* creates a tuple with specifified integer value             */

  void create_tuple_d(tuple,value)
       Htuple    *tuple;
       double    val;
       /* creates a tuple with specifified double value              */

  void create_tuple_d(tuple,value)
       Htuple    *tuple;
       char      *val;
       /* creates a tuple with specifified string value              */

  void reuse_tuple_i(tuple,val)
       Htuple    *tuple;
       Hlong      val;
       /* reuses a tuple with specifified integer value              */

  void reuse_tuple_d(tuple,val)
       Htuple    *tuple;
       double    val;
       /* reuses a tuple with specifified double value               */

  void reuse_tuple_s(tuple,val)
       Htuple    *tuple;
       char      *val;
       /* reuses a tuple with specifified string value               */
Figure 21.3: HALCON/C Htuple procedures (part two).


2018-03-28   #5
void set_i(tuple,val,index)         or     macro SI(tuple,val,index)
       Htuple    tuple;
       Hlong      val;
       Hlong      index;
       /* inserts an integer with value 'val' into a tuple at        */
       /* position 'index' ('index' in [0,length_tuple(tuple) - 1])  */

  void set_d(tuple,val,index)         or     macro SD(tuple,val,index) 
       Htuple    tuple;
       double    val;
       Hlong      index;
       /* inserts a double with value 'val' into a tuple at          */
       /* position 'index' ('index' in [0,length_tuple(tuple) - 1])  */

  void set_s(tuple,val,index)         or     macro SS(tuple,val,index)
       Htuple    tuple;
       char      *val;
       Hlong      index;
       /* inserts a copy of string 'val' into a tuple at             */
       /* position 'index' ('index' in [0,length_tuple(tuple) - 1]). */
       /* The memory necessary for the string is allocated by set_s. */

   int get_type(tuple,index)           or     macro GT(tuple,index)
       Htuple    tuple;
       Hlong      index;
       /* returns the type of the value at position 'index' in the     */
       /* tuple. Possible values: LONG_PAR, DOUBLE_PAR or STRING_PAR   */

   Hlong get_i(tuple,index)             or     macro GI(tuple,index)
       Htuple    tuple;
       Hlong      index;
       /* returns the integer at position 'index' in the tuple          */
       /* (a type error results in a run time error)                    */

   double get_d(tuple,index)           or     macro GD(tuple,index)
          Htuple    tuple;
          Hlong      index;
       /* returns the floating point number at position 'index' in the  */
       /* tuple. (a type error results in a run time error)             */

   char *get_s(tuple,index)            or     macro GS(tuple,index)
        Htuple    tuple;
        Hlong      index;
       /* returns the pointer(!) to the string at position 'index' in   */
       /* the tuple. (a type error results in a run time error)         */
       /* Attention: all indices must be in [0,length_tuple(tuple) - 1] */
Figure 21.4: HALCON/C Htuple procedures (part three).


2018-03-29   #6

搞定:

原来dll中是有这么个函数可以操作tuple的,包含了创建/设置/销毁.....

import console
console.open()

dll = ..raw.loadDll("\res\halconc.dll","AArHalconC","cdecl");
F_create_tuple= dll.api("F_create_tuple","void(pointer& T, int length)");
F_create_tuple_i= dll.api("F_create_tuple_i","void(pointer T, int val)");
F_create_tuple_s=dll.api("F_create_tuple_s","void(pointer T, string val)");
F_get_s=dll.api("F_get_s","string(pointer T, int index)");
F_set_s=dll.api("F_set_s","void(pointer T, string val,int index)");
F_get_i=dll.api("F_get_i","int(pointer T, int index)");
var ctup = raw.buffer(1000);

F_create_tuple(ctup,5);
//console.varDump(ctup)
//F_create_tuple_i(ctup,5);
//F_create_tuple_s(ctup,"abcde");
console.varDump(ctup)
F_set_s(ctup,"abc",0);
F_set_s(ctup,"def",1);
F_set_s(ctup,"ghi",2);
F_set_s(ctup,"jkl",3);
F_set_s(ctup,"mnu",4);
var ret = F_get_s(ctup,2);
console.varDump(ret)
var ret = F_get_s(ctup,1);
console.varDump(ret)
F_set_s(ctup,"hahabb",1);
var ret = F_get_s(ctup,1);
console.varDump(ret)
var ret = F_get_s(ctup,4);
console.varDump(ret)
console.pause(true);


2018-04-01   #7

blob.png

2018-04-01   #8

QQ图片20180401171743.png

2018-04-01   #9
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 = HsystemX.GetSystem( que );
console.varDump(ret)

var info //= com.Variant();
var que = com.Variant("processor_num");
var HOperatorSetX = com.CreateObject("{6ebd90e2-d219-11d2-ade5-0000c00f4ef9}")
var ret2 = HOperatorSetX.GetSystem( que ,null);
console.varDump(ret2)


console.pause(true);


2018-04-02   #10
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,ll = HOperatorSetX.GetImageSize(Image,null,null);
	console.varDump(ww)
	console.varDump(ll)
}


2018-04-02   #11

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")
//调用控件
mainForm.button.oncommand = function(id,event){
    HOperatorSetX = com.CreateObject("{6ebd90e2-d219-11d2-ade5-0000c00f4ef9}")
    console.varDump(HOperatorSetX)
    var filepath = com.Variant("res/double_circle.png");
    var Image = HOperatorSetX.ReadImage(filepath);
    //console.varDump(Image)
    var ww,ll = HOperatorSetX.GetImageSize(Image);
    console.varDump(ww)
    console.varDump(ll)
}

mainForm.button2.oncommand = function(id,event){
	HImageX = com.CreateObject("{6EBD90E7-D219-11D2-ADE5-0000C00F4EF9}")
    var filepath = com.Variant("res/double_circle.png");
    HImageX.ReadImage(filepath);
    var ww,ll = HImageX.GetImageSize(null,null);
    console.varDump(ww)
    console.varDump(ll)
}


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...