Schönen guten Abend,
nachdem ich das Tutorial zu V-USB größtenteils verstanden habe, haperts 
es bei mir noch an einer Stelle. Ich möchte ein char[16] an meinen AVR 
übertragen. Dafür habe ich auf der sendenden Seite folgendes 
geschrieben:
| 1 | char inputbuffer[16];
 | 
| 2 | 
 | 
| 3 | //....
 | 
| 4 | 
 | 
| 5 | case USB_DATA_WRITE  :  cin >> inputbuffer;
 | 
| 6 | cout << endl << "Ihre Eingabe: " << inputbuffer << endl;
 | 
| 7 | nBytes = usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, USB_DATA_WRITE, 0, 0, inputbuffer, strlen(inputbuffer)+1, 5000);    continue;
 | 
Auf der Empfängerseite folgendes:
#define USB_CFG_IMPLEMENT_FN_WRITE      1 // in der usbconfig.h
| 1 | static uchar replyBuf[16]  = "Hello, USB!";
 | 
| 2 | static uchar reciveBuf[16]  = {""};
 | 
| 3 | 
 | 
| 4 | //.....
 | 
| 5 | 
 | 
| 6 | 
 | 
| 7 | case USB_DATA_WRITE:
 | 
| 8 | dataLength = (uchar)rq->wLength.word;
 | 
| 9 | dataReceived = 0;
 | 
| 10 |                 
 | 
| 11 | if(dataLength > sizeof(reciveBuf)) 
 | 
| 12 | {dataLength = sizeof(reciveBuf);}  //setzte wieviele Bytes empfangen werden können
 | 
| 13 |                 
 | 
| 14 | return USB_NO_MSG;  // ruft usbFunctionWrite auf
 | 
| 15 |         // irgendwie ja nicht :(
 | 
| 16 |         
 | 
| 17 | case   USB_DATA_ACT:
 | 
| 18 | for(uint8_t i = 0; i<16; i++)
 | 
| 19 | {replyBuf[i]=reciveBuf[i];}
 | 
| 20 | break;
 | 
| 21 |         
 | 
| 22 | 
 | 
| 23 | 
 | 
| 24 | //....    
 | 
| 25 | 
 | 
| 26 | USB_PUBLIC uchar usbFunctionWrite(uchar *data, uchar len) 
 | 
| 27 | {
 | 
| 28 | PORTB ^= (1<<PB1);
 | 
| 29 | uchar i;
 | 
| 30 | for(i = 0; dataReceived < dataLength && i < len; i++, dataReceived++)
 | 
| 31 | {reciveBuf[dataReceived] = data[i];}                  
 | 
| 32 | return (dataReceived == dataLength); // 1 if we received it all, 0 if not
 | 
| 33 | }
 | 
Das Problem ist jetzt, dass usbFunctionWrite nicht aufgerufen wird. 
Erkennbar daran, dass die LED nicht an geht.
Jedoch wird
case USB_DATA_WRITE
und
case   USB_DATA_ACT
laut meiner LED aufgerufen.
Kann man an dem was ich geschrieben habe erkennen was ich falsch gemacht 
habe?