User Manual

- 20 -
printf
("distance
average: %d\n",event->MeasureData.full_roi_data[0].distance_average);
break
;
case
FULL_DEPTH_PACKET
:
printf
("distance
average: %d\n",event->MeasureData.full_depth_data->distance_average);
break
;
case
SIMPLE_DEPTH_PACKET
:
printf
("distance
average: %d\n",event->MeasureData.simple_depth_data->distance_average);
break
;
case
NULL_PACKET
:
break
;
default
:
printf
("system error\n");
break
;
}
}
}
/*Observer initialization*/
AsyncIObserver_t My_Observer;
/*An observer subscribes to an event as a data receive event*/
My_Observer.AsyncEvent =
ISubject_Event_DataRecvd
;
My_Observer.NotifyEnable = true; /*enable observer*/
My_Observer.ObserverID = 0; /*observer id*/
/*Adding asynchronous observers */
ret = HPS3D_AddObserver(&User_Fun,&handle,&My_Observer);
if
(
RET_OK
!= ret)
{
printf
("observer add failed, error code:%d\n", ret);
}
Single measurement mode can support synchronization or asynchronous mode.
Asynchronous mode is the same as above. It is recommended to use synchronous mode. The
synchronization mode is as follows: Note: Synchronous single measurement function will set
handle.SyncMode to SYNC synchronization mode, if you want to switch to asynchronous The mode
needs to set this parameter to ASYNC;
ret = HPS3D_SingleMeasurement(&handle);
if
(ret ==
RET_OK
)
{
switch
(handle.RetPacketType)
{
case
SIMPLE_ROI_PACKET
: