ERLEDIGT
JA
JA
ANTWORTEN
0
0
ZUGRIFFE
3213
3213
EMPFEHLEN
-
Hallo,
hab ein großes Problem bei dem ich nicht mehr weiter komme ...
Benutze eine USB Treiber DLL, dessen Aufruf so aussieht:
Code :1 2 3
Dim send_buf(64) As Byte Dim receive_buf(64) As Byte SendReceivePacket(send_buf, 2, receive_buf, RecvLength, 1000, 1000)
Das send_buf(64) array möchte ich ersetzen durch eine Struktur/Union:
Code :1 2 3 4 5 6
<StructLayout(LayoutKind.Explicit, Pack:=1, Size:=64)> Public Structure USB_data <FieldOffset(0)> Public command As Byte <FieldOffset(1)> Public len As Byte <FieldOffset(2)> Public data() As Byte <FieldOffset(0)> Public bytes() As Byte End Structure
(data, len, data (=62 byte) sollen mit byte (=64 byte) "überlappen")
Code :1 2
Public USB_RX_data As USB_data Public USB_TX_data As USB_data
Der Aufruf (... so dachte ich) sieht so aus:
Code :1
SendReceivePacket(USB_TX_data.bytes, 2, USB_RX_data.bytes, RecvLength, 1000, 1000)
Bekomme immer Fehlermeldungen: Eine Ausnahme (erste Chance) des Typs "System.NullReferenceException" ist in Booster.exe aufgetreten.
Die Funktion SendReceivePacket sieht so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Function SendReceivePacket(ByRef SendData() As Byte, ByRef SendLength As Integer, ByRef ReceiveData() As Byte, ByRef ReceiveLength As Integer, ByVal SendDelay As Integer, ByVal ReceiveDelay As Integer) As Integer Dim SentDataLength As Integer Dim ExpectedReceiveLength As Integer Dim x As System.Runtime.InteropServices.Marshal ExpectedReceiveLength = ReceiveLength If (USB_TX_pipe <> INVALID_HANDLE_VALUE And USB_RX_pipe <> INVALID_HANDLE_VALUE) Then If (USB_write(USB_TX_pipe, x.UnsafeAddrOfPinnedArrayElement(SendData, 0).ToInt32(), SendLength, SentDataLength, SendDelay) = SUCCESS) Then If (USB_read(USB_RX_pipe, x.UnsafeAddrOfPinnedArrayElement(ReceiveData, 0).ToInt32(), ExpectedReceiveLength, ReceiveLength, ReceiveDelay) = SUCCESS) Then If (ReceiveLength = ExpectedReceiveLength) Then SendReceivePacket = 1 '// Success! Exit Function ElseIf (ReceiveLength < ExpectedReceiveLength) Then SendReceivePacket = 2 '// Partially failed, incorrect receive length Log("incorrect receive length") Exit Function End If Else CheckInvalidHandle() End If Else CheckInvalidHandle() End If End If SendReceivePacket = 0 '// Operation Failed Log("Operation Failed") End Function
Vlt. hat jemand eine Idee, was ich falsch gemacht habe ...
(bin erst kürzlich von VB6 auf .net umgestiegen)
Vielen Dank schon im Voraus für Eure Hilfe
Daniel
Ähnliche Themen
-
byte Array in Datei speichern und wieder in byte Array einlesen
Von riseX im Forum JavaAntworten: 5Letzter Beitrag: 22.02.10, 12:05 -
Nummer als String nach byte[] Array
Von AAF im Forum JavaAntworten: 1Letzter Beitrag: 03.06.07, 09:54 -
String -> Byte Array
Von MonkDoc im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 13.05.07, 13:56 -
Array + Structure + Datenbank
Von rabado im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 11.09.06, 13:47 -
Byte-Array als Bitmap
Von siscop im Forum .NET ArchivAntworten: 3Letzter Beitrag: 20.05.04, 11:01





Zitieren
Login





