*--lc_DeviceName is returned from SetupDiGetDeviceInterfaceDetail lh_Device = CreateFile(lc_DeviceName, ; GENERIC_READ + GENERIC_WRITE ,; FILE_SHARE_READ + FILE_SHARE_WRITE, 0, OPEN_ALWAYS,; FILE_ATTRIBUTE_NORMAL + FILE_FLAG_SEQUENTIAL_SCAN, 0) IF (lh_Device != INVALID_HANDLE_VALUE) && Later test using DeviceIoControl From Lh_Device also lw_Buffer = SPACE( MAX_PATH ) lcSendValue = [! U1 MCR 80 T1 T2] + CHR(10) + CHR(13) && a command the USB device recognizes lnWritten = 0 IF WriteFile(lh_Device, lcSendValue, LEN(lcSendValue),@lnWritten,0) <> 0 && 0 is failure *!!!! Success - the device responds to the command sent *!!!! Now capture the data returning from the device (the response) lcReadBuffer = REPLICATE(" ",MAX_PATH) lnBytesReturned = 0 lnCounter2 = 0 *--Latest attempt is to loop through a read for awhile DO WHILE lnBytesReturned == 0 lncounter2 = lncounter2 + 1 IF ReadFile(lh_Device, @lcReadBuffer, LEN(lcReadBuffer), @lnBytesReturned, 0) <> 0 lncounter = 0 DO WHILE lncounter < 50 lncounter = lncounter + 1 DOEVENTS IF !EMPTY(MakeANSI(lcReadBuffer)) ? lcReadBuffer ? MakeANSI(lcReadBuffer) ENDIF ENDDO * ADD GetQueuedCompletionStatus() ENDIF IF lncounter2 = 100 EXIT ENDIF ENDDO ENDIF CloseHandle( lh_Device ) ENDIF