Difference between revisions of "OpenIGTLink/Library"

From NAMIC Wiki
Jump to: navigation, search
Line 21: Line 21:
  
 
= Tutorial =
 
= Tutorial =
==C-code implementation==
+
==C-code implementation (w/o socket)==
  
 
The library contains c codes in the Source/igtlutil directory to generate Open IGT Link message byte stream.
 
The library contains c codes in the Source/igtlutil directory to generate Open IGT Link message byte stream.
Line 27: Line 27:
 
To send transform
 
To send transform
  
 +
  #include "igtl_util.h"
 
   #include "igtl_header.h"
 
   #include "igtl_header.h"
 
   #include "igtl_transform.h"
 
   #include "igtl_transform.h"
 
    
 
    
   /* pack data body */
+
   /********** pack data body **********/
 
   igtl_float32 transform[12];
 
   igtl_float32 transform[12];
 
    
 
    
Line 40: Line 41:
 
   }
 
   }
 
    
 
    
   igtl_transform_convert_byte_order(transform);
+
   igtl_transform_convert_byte_order(transform); /* convert endian if necessary */
 +
 
 +
  /********** pack data body **********/
 +
 
 +
  igtl_header header;
 +
  igtl_uint64 crc = crc64(0, 0, 0LL);          /* initial crc */
 +
  header.version  = IGTL_HEADER_VERSION;
 +
  header.timestamp = 0;
 +
  header.body_size = GetBodyPackSize();
 +
  header.crc      = crc64((unsigned char*)m_Body, GetBodyPackSize(), crc);
 +
 
 +
  strncpy(header.name, "TRANSFORM", 12);      /* Device Type: should be "TRANSFORM" */
 +
  strncpy(header.device_name, "Tracker", 20);    /* Device name */
 +
 
 +
  igtl_header_convert_byte_order(h);  /* convert endian if necessary */

Revision as of 21:42, 23 June 2008

Home < OpenIGTLink < Library

<< OpenIGTLink

Source code

An Open Source implementation of the OpenIGTLink protocol is available at

http://www.na-mic.org/svn/NAMICSandBox/trunk/OpenIGTLink/

License

This code is distributed under the new BSD License.

Design

Building instructions


Tutorial

C-code implementation (w/o socket)

The library contains c codes in the Source/igtlutil directory to generate Open IGT Link message byte stream.

To send transform

 #include "igtl_util.h"
 #include "igtl_header.h"
 #include "igtl_transform.h"
 
 /********** pack data body **********/
 igtl_float32 transform[12];
 
 for (int i = 0; i < 3; i ++) {
   transform[i]   = matrix[i][0];
   transform[i+3] = matrix[i][1];
   transform[i+6] = matrix[i][2];
   transform[i+9] = matrix[i][3];
 }
 
 igtl_transform_convert_byte_order(transform);  /* convert endian if necessary */
 
 /********** pack data body **********/
 
 igtl_header header;
 igtl_uint64 crc = crc64(0, 0, 0LL);          /* initial crc */
 header.version   = IGTL_HEADER_VERSION;
 header.timestamp = 0;
 header.body_size = GetBodyPackSize();
 header.crc       = crc64((unsigned char*)m_Body, GetBodyPackSize(), crc);
 
 strncpy(header.name, "TRANSFORM", 12);       /* Device Type: should be "TRANSFORM" */
 strncpy(header.device_name, "Tracker", 20);    /* Device name */
 
 igtl_header_convert_byte_order(h);   /* convert endian if necessary */