V-USB und libusbdotnet

Gast #3520278
Lesenswert?

Hallo ,

baue gerade eine USB IO Karte, und möchte gerne Daten von der USB Device 
zum PC übertragen.

Ich verwende V-USB und LibUSBDotNet.
Hab als Basis das tutorial von 
http://codeandlife.com/2012/02/04/avr-attiny-usb-tutorial-part-4/ 
vorwendet, was bestens funktioniert!
Jedoch schaffe ich es nicht mittels LibUSBDotNet das "Hello, USB!" zu 
bekommen. Der V-USB Part arbeitet anstandslos.

Aufruf in C funktioniert!
1
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, USB_DATA_OUT, 0, 0, (char *)buffer, sizeof(buffer), 5000);

Aufruf in C# nicht wie gewünscht
1
ControlTransfer(ref UsbSetupPacket setupPacket, IntPtr buffer, int bufferLength, out int lengthTransferred)

Verwende ich die falsche Funktion?

Lg Harry
Gast #3520346
Lesenswert?

Aufruf:
SendTest(2, 0);
1
public bool SendTest(byte command, byte value)
2
{
3
  if (IsConnected == false)
4
    return false;
5
  
6
  int bytesRead;
7

8
  UsbSetupPacket packet = new UsbSetupPacket(
9
    (byte)UsbRequestType.TypeVendor, 
10
    (byte)command, 
11
    (short)value, 0, 0);
12

13
  int temp1;
14
  object temp2 = null;
15
  //IntPtr incom = new IntPtr();
16
            
17
  return MyUsbDevice.ControlTransfer(ref packet, temp2, 14, out temp1);
18
}

(Mod.: code-Formatanweisung korrigiert)
#3520526
Lesenswert?

Weiß nicht obs Dir hilft, aber ich hab vor ein paar Jahren den HID code 
aus einem der V-USB Demoprojekte geklaut und mir eine 8 Port TRIAC 
Steuerung gebaut (für Scheinwerfer auf Hochzeitsfeier).

Mit HID brauchst Du kein libusb mehr, sondern kannst Treiber und HID 
Schnittstelle vom OS nutzen. Irgendwo hab ich auch noch den Code für AVR 
und Windows App. Auf Windows war die Kommunikation wirklich trivial.

Gruß,
Watz
Gast #3520542
Lesenswert?

So sollte es eigentlich laufen :
1
UsbSetupPacket setupPacket = new UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Recipient_Device | UsbCtrlFlags.Direction_In), request, 0x0000, 0x0000, 0x0000);
2
ControlTransfer(ref setupPacket, IntPtr buffer, int bufferLength, out int lengthTransferred)
Gast #3520623
Lesenswert?

Also bei mir ist object buffer aus der ControlTransfer ein einfaches 
byte Array.
Den Wert für request aus setupPacket mußt du natürlich noch richtig 
einstellen, der steht in der usbFunctionSetup() vom µC Code.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren