beautypg.com

Teledyne LeCroy SierraFC Automation API User Manual

Page 60

background image

LeCroy Corporation

SierraFC M8-4 API Reference Manual

Manual Version 1.00

60


C++:

IFCPacket* custom_packet;
LONG packet_number;

. . .

VARIANT packet_data;
double timestamp_ns;
VariantInit( &packet_data );
long number_of_bytes;
try
{
number_of_bytes = custom_packet->GetPacketData(PACKETFORMAT_BYTES, &packet_data);

timestamp_ns = custom_packet->GetTimestamp ( );

}
catch (_com_error& er)
{

if (er.Description().length() > 0)
::MessageBox( NULL, er.Description(), _T("SierraFC M8-4 client"), MB_OK );
else
::MessageBox( NULL, er.ErrorMessage(),_T("SierraFC M8-4 client"), MB_OK );
return 1;

}

if ( packet_data.vt == ( VT_ARRAY | VT_VARIANT) )
{

SAFEARRAY* packet_safearray = packet_data.parray;
TCHAR* packet_message =

new TCHAR [ 3*packet_safearray->rgsabound[0].cElements + 64 ];

TCHAR elem[64];

_stprintf(packet_message, _T("packet #%ld: "), GetDlgItemInt(IDC_PACKET_NUMBER));

_stprintf( elem, _T(" %.0lf ns"), timestamp_ns );
_tcscat( packet_message, elem );
_stprintf( elem, _T(", %d bytes: "), number_of_bytes );
_tcscat( packet_message, elem );

for ( long i=0; i<(long)packet_safearray->rgsabound[0].cElements; i++)
{

VARIANT var;
HRESULT hr = SafeArrayGetElement(packet_safearray, &i, &var);
if (FAILED(hr))
{

::MessageBox( NULL, _T("Error accessing array"), _T("SierraFC M8-4 client"),
MB_OK );

return 1;
}

if ( var.vt != ( VT_UI1) )
{

::MessageBox(NULL, _T("Array of bytes expected"), _T("SierraFC M8-4 client"),

MB_OK );

return 1;
}
_stprintf( elem, _T("%02X "), V_UI1(&var) );
_tcscat( packet_message, elem );

}
::MessageBox( NULL, packet_message, _T("packet"), MB_OK );
delete [] packet_message;

}
else
{
::MessageBox(NULL, _T("Invalid argument"), _T("SierraFC M8-4 client"), MB_OK );
}