hallo,
ich will mit meinen c# projekte ein usb device ansprechen.
das klappt auch soweit bis auf eine funktion die einen zeiger enthält.
der c++ aufruf:
EZUSBCTRLDLLExport int RdRAMByte_from_EzUSB (HANDLE hUSBDevice, int iAddr, unsigned char *iValue);
in iValue soll der aus dem usb device gelesene wert gespeichert werden.
die methode gibt einfach nur einen error code zurück.
mein c# aufruf der nicht funktioniert:
[DllImport("c://EZ-USB-FX2.dll")] // Read Ram Byte
public static extern int RdRAMByte_from_EzUSB(IntPtr hUSBDevice, int iAddr, byte iValue);
byte iValue;
Console.WriteLine(RdRAMByte_from_EzUSB(hUSBDevice, 57376, iValue));
das öffnen und schließen des treiber funktioniert sowie die übergabe des handle.
ich hab nur keine ahnung wie ich das mit dem zeiger umsetze.
vielen dank
mfg
mrtom
[DllImport("EZ-USB-FX2.dll")]
public static extern int RdRAMByte_from_EzUSB(IntPtr hUSBDevice, int iAddr, out byte iValue);
Btw.: Ist die Dll von Cypress, oder eine Eigenentwicklung?
Wie verhält sich das eigentlich mit Unsafe Code?
unsafe {
char* p;
}
Eher ein Tabu oder gängige Praxis?
Wie verhält sich was?
Unsafe-Code habe ich noch nie verwendet/gebraucht. Es gibt meistens eine bessere Alternative.
Was du gebraucht/genutzt hast, hat mich eigentlich weniger interessiert.
Es bietet sich an, ob im konkreten Fall eine Lösung, sei mal dahingestellt. Ich selber habe es biser auch nicht genutzt, daher die Frage.
Bis jetzt höre ich nur ein klares Nein dazu.
thx für die schnelle antwort werd gleich mal testen.
die dll ist ne eigentwicklung eines kollegens.
wir nutzen ihn für den datenaustausch von pc und cypress fx2 controllern unter c++ und labview.
da ich von c# begeistert bin wollte ich die dll mal in c# einbinden.
mfg
mrtom
Cypress bietet seit kurzem einen eigenen Treiber + .Net Dll für den FX2 an. Habt ihr den Treiber von Cypress mal probiert?
habs getestet funktioniert.
thx
@marsgk
danke für den tip.
hab ich noch gar nicth gesehen.
werd ich in zukunft mal ausprobieren und gucken ob er sich für meinen einsatz eignet.
mfg
mrtom