Teledyne LeCroy USB Analyzer Automation Manual User Manual

Page 56

Advertising
background image

Teledyne LeCroy Automation API Reference Manual for USBTracer, USB Advisor, and Voyager USB Protocol
Suite

56

C++:
IUsbTrace* usb_trace;
LONG packet_number;

. . .

VARIANT packet;
VariantInit( &packet );
long number_of_bits;
try
{
number_of_bits = usb_trace->GetPacket( packet_number, &packet );
}
catch ( _com_error& er)
{
if (er.Description().length() > 0)
::MessageBox( NULL, er.Description(), _T("UsbAnalyzer client"), MB_OK );
else
::MessageBox( NULL, er.ErrorMessage(),_T("UsbAnalyzer client"), MB_OK );
return 1;
}

if ( packet.vt == ( VT_ARRAY | VT_VARIANT) )
{
SAFEARRAY* packet_safearray = packet.parray;

TCHAR packet_message[256];
TCHAR elem[64];

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


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("UsbAnalyzer client"), MB_OK );
return 1;
}
if ( var.vt != ( VT_UI1) )
{
::MessageBox( NULL, _T("Array of bytes expected"), _T("UsbAnalyzer client"), MB_OK );
return 1;
}

_stprintf( elem, _T("%02X "), V_UI1(&var) );
_tcscat( packet_message, elem );
}
_stprintf( elem, _T("%d bits"), number_of_bits );
_tcscat( packet_message, elem );

::MessageBox( NULL, packet_message, _T("Raw packet bits"), MB_OK );
}
else
{
::MessageBox( NULL, _T("Invalid argument"), _T("UsbAnalyzer client"), MB_OK );
}












Advertising