Не прошло и полгода, продолжим наши игры )
usbepx - монитор USB endpoints как-то не зашёл, хотя сам я с тех пор использую его постоянно, поэтому вот другой вариант - предельно упрощённый терминал прямого доступа в endpoint для winusb и т.п. девайсов
В отличие от usb serial терминалов он опрашивает usb девайс не постоянно, а только в течение примерно 100 мс после ввода строки и передачи в девайс, т.е. в полном соответствии с логикой usb: хост - мастер, девайс - слейв
Программка очень простая, вот она вся
#include <stdio.h>
#include "libusb.h"
libusb_device_handle *dh;
int vid, pid, ep, n;
char s[256];
int main ( int argc, char *argv[] ) {
if( argc == 4 ) {
sscanf( argv[1], "%x", &vid );
sscanf( argv[2], "%x", &pid );
sscanf( argv[3], "%x", &ep );
libusb_init( NULL );
if( dh = libusb_open_device_with_vid_pid( NULL, vid, pid ) ) {
libusb_claim_interface( dh, 0 );
while( 1 ) {
printf( "< " );
gets( s );
if( strlen( s ) == 0 ) break;
if( strlen( s ) > 63 ) s[63] = 0;
if( libusb_bulk_transfer( dh, ep, s, 64, &n, 100 ) == 0 ) {
int c = 10;
while( libusb_bulk_transfer( dh, ep+0x80, s, 64, &n, 100 ) == 0 ) {
printf( "> %s\n", s );
if( --c == 0 ) break;
}
} else break;
}
libusb_release_interface( dh, 0 );
libusb_close( dh );
} else printf( "No such device\nVID:%x PID:%x EP:%x\n", vid, pid, ep );
libusb_exit( NULL );
} else printf( "Usage\n%s VID PID EP\n", argv[0] );
return 0;
}Как оно работает очевидно из картинки
Поскольку программка всего 3 Кбайт, то эта же картинка содержит в себе и архив с usbept.exe и libusb-1.0.dll, достаточно переименовать файл картинки в файл.zip и он раскроется как zip

