Since I know a little bit of libusb-win32, I tried to use libusb-win32 device driver. It seems that reading from PIC is kind of working in certain condition. A working example is shown here. I will change the firmware and test the writing to PIC and reading back from PIC (loop back test).
In the enclosed zip file:
C:\PICkit_2\PICKit2GenISOC2\libusb>dir
Volume in drive C is RAWXP_D1
Volume Serial Number is C4B3-442F
Directory of C:\PICkit_2\PICKit2GenISOC2\libusb
07/30/2007 09:26 PM <DIR> .
07/30/2007 09:26 PM <DIR> ..
07/30/2007 09:24 PM 49,156 debugprint.txt --> debugview output
07/11/2007 05:28 PM 41,472 libusb0.dll --> libusb-win32 DLL
07/11/2007 05:28 PM 28,672 libusb0.sys --> libusb-win32 device driver
07/30/2007 09:12 PM 3,837 libusb_isoc.c --> test program
07/30/2007 09:12 PM 20,948 libusb_isoc.exe --> exe file for the test program
07/30/2007 08:08 PM 168 pickit2_isoc.cat --> driver cat file
07/30/2007 08:08 PM 3,475 pickit2_isoc.inf --> driver inf file
07/30/2007 08:08 PM 168 pickit2_isoc_x64.cat --> driver inf for Win64, may not work
07/30/2007 09:14 PM 7,989 read.txt --> data read from the application
07/30/2007 08:15 PM 2,480 testisoc.c --> source code
10 File(s) 158,365 bytes
2 Dir(s) 18,278,686,720 bytes free
Command lists:
C:\PICkit_2\PICKit2GenISOC2\libusb>gcc -o libusb_isoc.exe libusb_isoc.c -lusb
C:\PICkit_2\PICKit2GenISOC2\libusb>libusb_isoc.exe>read.txt 2>&1
Partial Output:
LIBUSB_DLL: info: usb_os_init: dll version: 0.1.12.1
LIBUSB_DLL: info: usb_os_init: driver version: 0.1.12.1
LIBUSB_DLL: info: usb_os_find_busses: found bus-0
LIBUSB_DLL: info: usb_os_find_devices: found \\.\libusb0-0001--0x04d8-0x0080 on bus-0
pickit2_isoc with Vendor Id: 4d8 and Product Id: 80 found.
42, 42, 42 43, 43, 43 44, 44, 44 45, 45, 45 46, 46, 46 47, 47, 47 48, 48, 48 49, 49, 49
4a, 4a, 4a 4b, 4b, 4b 4c, 4c, 4c 4d, 4d, 4d 4e, 4e, 4e 4f, 4f, 4f 50, 50, 50 51, 51, 51
52, 52, 52 53, 53, 53 54, 54, 54 55, 55, 55 56, 56, 56 57, 57, 57 58, 58, 58 59, 59, 59
5a, 5a, 5a 5b, 5b, 5b 5c, 5c, 5c 5d, 5d, 5d 5e, 5e, 5e 5f, 5f, 5f 60, 60, 60 61, 61, 61
62, 62, 62 63, 63, 63 64, 64, 64 65, 65, 65 66, 66, 66 67, 67, 67 68, 68, 68 69, 69, 69
6a, 6a, 6a 6b, 6b, 6b 6c, 6c, 6c 6d, 6d, 6d 6e, 6e, 6e 6f, 6f, 6f 70, 70, 70 71, 71, 71
72, 72, 72 73, 73, 73 74, 74, 74 75, 75, 75 76, 76, 76 77, 77, 77 78, 78, 78 79, 79, 79
7a, 7a, 7a 7b, 7b, 7b 7c, 7c, 7c 7d, 7d, 7d 7e, 7e, 7e 7f, 7f, 7f 80, 80, 80 81, 81, 81
<skipped>
DebugView Output:
00000000 9:13:54.057 PM
00000001 9:13:54.057 PM LIBUSB-DRIVER - release_all_interfaces(): releasing all interfaces bound to file object 0x8932b3c0
00000002 9:13:54.057 PM
00000003 9:13:54.057 PM [3548] LIBUSB_DLL: info: usb_os_init: dll version: 0.1.12.1
00000004 9:13:54.057 PM
00000005 9:13:54.057 PM LIBUSB-DRIVER - release_all_interfaces(): releasing all interfaces bound to file object 0x8932b3c0
00000006 9:13:54.057 PM [3548] LIBUSB_DLL: info: usb_os_init: driver version: 0.1.12.1
00000007 9:13:54.057 PM
00000008 9:13:54.057 PM
00000009 9:13:54.057 PM LIBUSB-DRIVER - get_descriptor(): buffer size 18
00000010 9:13:54.057 PM LIBUSB-DRIVER - get_descriptor(): type 0001
00000011 9:13:54.057 PM LIBUSB-DRIVER - get_descriptor(): recipient 0000
00000012 9:13:54.057 PM LIBUSB-DRIVER - get_descriptor(): index 0000
00000013 9:13:54.057 PM LIBUSB-DRIVER - get_descriptor(): language id 0000
00000014 9:13:54.057 PM LIBUSB-DRIVER - get_descriptor(): timeout 5000
00000015 9:13:54.057 PM [3548] LIBUSB_DLL: info: usb_os_find_busses: found bus-0
00000016 9:13:54.077 PM LIBUSB-DRIVER - release_all_interfaces(): releasing all interfaces bound to file object 0x8932b3c0
00000017 9:13:54.077 PM [3548] LIBUSB_DLL: info: usb_os_find_devices: found \\.\libusb0-0001--0x04d8-0x0080 on bus-0
00000018 9:13:54.077 PM
00000019 9:13:54.077 PM
00000020 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): buffer size 8
00000021 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): type 0002
00000022 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): recipient 0000
00000023 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): index 0000
00000024 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): language id 0000
00000025 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): timeout 1000
00000026 9:13:54.077 PM
00000027 9:13:54.077 PM
00000028 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): buffer size 32
00000029 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): type 0002
00000030 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): recipient 0000
00000031 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): index 0000
00000032 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): language id 0000
00000033 9:13:54.077 PM LIBUSB-DRIVER - get_descriptor(): timeout 1000
00000034 9:13:54.087 PM LIBUSB-DRIVER - release_all_interfaces(): releasing all interfaces bound to file object 0x8932b3c0
00000035 9:13:54.087 PM
00000036 9:13:54.087 PM
00000037 9:13:54.087 PM LIBUSB-DRIVER - set_configuration(): configuration 1
00000038 9:13:54.087 PM LIBUSB-DRIVER - set_configuration(): timeout 5000
00000039 9:13:54.087 PM
00000040 9:13:54.087 PM LIBUSB-DRIVER - claim_interface(): interface 0
00000041 9:13:54.087 PM
00000042 9:13:54.087 PM
00000043 9:13:54.087 PM LIBUSB-DRIVER - transfer(): isochronous transfer
00000044 9:13:54.087 PM LIBUSB-DRIVER - transfer(): direction in
00000045 9:13:54.087 PM LIBUSB-DRIVER - transfer(): endpoint 0x81
00000046 9:13:54.087 PM LIBUSB-DRIVER - transfer(): packet_size 0x40
00000047 9:13:54.087 PM LIBUSB-DRIVER - transfer(): size 640
00000048 9:13:54.087 PM LIBUSB-DRIVER - transfer(): sequence 1914
00000049 9:13:54.087 PM
00000050 9:13:54.087 PM
00000051 9:13:54.087 PM
00000052 9:13:54.087 PM LIBUSB-DRIVER - transfer(): isochronous transfer
00000053 9:13:54.087 PM LIBUSB-DRIVER - transfer(): direction in
00000054 9:13:54.087 PM LIBUSB-DRIVER - transfer(): endpoint 0x81
00000055 9:13:54.087 PM LIBUSB-DRIVER - transfer(): packet_size 0x40
00000056 9:13:54.087 PM LIBUSB-DRIVER - transfer(): size 640
00000057 9:13:54.087 PM LIBUSB-DRIVER - transfer(): sequence 1915
00000058 9:13:54.087 PM
00000059 9:13:54.087 PM
00000060 9:13:54.087 PM
<skip>
00000754 9:14:10.460 PM LIBUSB-DRIVER - transfer(): isochronous transfer
00000755 9:14:10.460 PM LIBUSB-DRIVER - transfer(): direction in
00000756 9:14:10.460 PM LIBUSB-DRIVER - transfer(): endpoint 0x81
00000757 9:14:10.460 PM LIBUSB-DRIVER - transfer(): packet_size 0x40
00000758 9:14:10.460 PM LIBUSB-DRIVER - transfer(): size 640
00000759 9:14:10.460 PM LIBUSB-DRIVER - transfer(): sequence 1978
00000760 9:14:10.460 PM
00000761 9:14:10.470 PM LIBUSB-DRIVER - transfer_complete(): sequence 1976: 640 bytes transmitted
00000762 9:14:10.470 PM
00000763 9:14:10.470 PM
00000764 9:14:10.470 PM LIBUSB-DRIVER - transfer(): isochronous transfer
00000765 9:14:10.470 PM LIBUSB-DRIVER - transfer(): direction in
00000766 9:14:10.470 PM LIBUSB-DRIVER - transfer(): endpoint 0x81
00000767 9:14:10.470 PM LIBUSB-DRIVER - transfer(): packet_size 0x40
00000768 9:14:10.470 PM LIBUSB-DRIVER - transfer(): size 640
00000769 9:14:10.470 PM LIBUSB-DRIVER - transfer(): sequence 1979
00000770 9:14:10.470 PM
00000771 9:14:10.480 PM LIBUSB-DRIVER - transfer_complete(): sequence 1977: 640 bytes transmitted
00000772 9:14:10.490 PM LIBUSB-DRIVER - transfer_complete(): sequence 1978: 640 bytes transmitted
00000773 9:14:10.500 PM LIBUSB-DRIVER - transfer_complete(): sequence 1979: 640 bytes transmitted
00000774 9:14:10.500 PM
00000775 9:14:10.500 PM
00000776 9:14:10.500 PM LIBUSB-DRIVER - set_interface(): interface 0
00000777 9:14:10.500 PM LIBUSB-DRIVER - set_interface(): altsetting 0
00000778 9:14:10.500 PM LIBUSB-DRIVER - set_interface(): timeout 5000
00000779 9:14:10.500 PM
00000780 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): buffer size 18
00000781 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): type 0001
00000782 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): recipient 0000
00000783 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): index 0000
00000784 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): language id 0000
00000785 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): timeout 5000
00000786 9:14:10.500 PM
00000787 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): buffer size 9
00000788 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): type 0002
00000789 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): recipient 0000
00000790 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): index 0000
00000791 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): language id 0000
00000792 9:14:10.500 PM LIBUSB-DRIVER - get_descriptor(): timeout 5000
00000793 9:14:10.510 PM
00000794 9:14:10.510 PM LIBUSB-DRIVER - get_descriptor(): buffer size 32
00000795 9:14:10.510 PM LIBUSB-DRIVER - get_descriptor(): type 0002
00000796 9:14:10.510 PM LIBUSB-DRIVER - get_descriptor(): recipient 0000
00000797 9:14:10.510 PM LIBUSB-DRIVER - get_descriptor(): index 0000
00000798 9:14:10.510 PM LIBUSB-DRIVER - get_descriptor(): language id 0000
00000799 9:14:10.510 PM LIBUSB-DRIVER - get_descriptor(): timeout 5000
00000800 9:14:10.560 PM LIBUSB-DRIVER - update_pipe_info(): interface 0
00000801 9:14:10.560 PM LIBUSB-DRIVER - update_pipe_info(): endpoint address 0x01
00000802 9:14:10.560 PM LIBUSB-DRIVER - update_pipe_info(): endpoint address 0x81
00000803 9:14:10.560 PM
00000804 9:14:10.560 PM LIBUSB-DRIVER - release_interface(): interface 0
00000805 9:14:10.560 PM LIBUSB-DRIVER - release_all_interfaces(): releasing all interfaces bound to file object 0x89da1798
<message edited by xiaofan on Monday, July 30, 2007 6:53 PM>