Thanks for your reply!
Saldy, removing StopExposure makes no difference for the case.
checked SnapThr() and found it matching my logic perfectly, which using python wrapper looks like this:
self._APIcall(self._ASISetROIFormat, (camProps.CameraID, currentWidth, currentHeight, cfg_bining, cfg_imgType.value))
self._APIcall(self._ASISetControlValue, (camProps.CameraID, ASI_CONTROL_TYPE.ASI_EXPOSURE.value, cfg_exposure))
while self._ASIGetExpStatus(camID).value == ASI_EXPOSURE_STATUS.ASI_EXP_WORKING.value:
pass
if self._ASIGetExpStatus(camID).value == ASI_EXPOSURE_STATUS.ASI_EXP_SUCCESS.value:
errc, imgByteArray = self._ASIGetImageData(camID, imgByteArraySize)
still always get ASI_EXPOSURE_STATUS = 3 on USB3 and ASI_EXPOSURE_STATUS = 0 on USB2 after looping though ASI_EXPOSURE_STATUS==working check for configured exposure duration
Thinking of workaround with Start/StopVideoCapture , which is kinda silly for single long exposure shot.