Hallo,
ich arbeite an einem programm das mir helfen soll daten an meinem per
usb angeschlossenem gerät zu schicken
wenn ich es in der IDE von Microsoft Visual Basic 2005 teste ist alles
in Ordnung
wenn ich aber die exe datei im debug (geschweige denn release) ordner
benutze dann liefert WriteFile ("error invalid handle") obwohl
CreateFile eine gültige Handle liefert in beiden Fällen
es funktioniert anscheinend nur mir debugging
weiß jemand warum bzw wie ich das lösen kann? Danke
hier ein snippset von meinem code
hDevice = CreateFile(devicePath, GENERIC_READ Or GENERIC_WRITE,
0, 0&, OPEN_EXISTING, 0&, 0&)
'Get the USB packet size, which we need for sending packets
If DeviceIoControl(hDevice, IOCTL_USB_PACKET_SIZE, IntPtr.Zero,
0, usbpacketsize, 4, theBytesReturned, IntPtr.Zero) Then
If theBytesReturned > 0 Then
Dim bytes1() As Byte
bytes1 = New Byte(theBytesReturned - 1) {}
Marshal.Copy(usbpacketsize, bytes1, 0,
theBytesReturned)
If theBytesReturned = 2 Then
usb_packet_size = BitConverter.ToInt16(bytes1, 0)
End If
End If
Else
Marshal.FreeHGlobal(ip)
Return
End If
'send the startsessionpacket
SendPacket(theStartSessionPacket)
'get the ok from the device
Do
thePacket = GetPacket()
If thePacket(0) = 0 And thePacket(4) =
USBProtocolPacketID.Pid_Session_Started Then Exit Do
Loop
Public Sub SendPacket(ByVal aPacket As Byte())
Dim theBytesReturned As Integer
///////////////Scheitert hier wenn ich außerhalb der IDE
teste///////////
Dim bool As Integer = WriteFile(hDevice, aPacket,
aPacket.Length, theBytesReturned, Nothing)
If bool = INVALID_HANDLE_VALUE Or bool = 0 Then
DisplayLastWin32Error()
theDevInfo = IntPtr.Zero
Return
End If
'If the packet size was an exact multiple of the USB packet
'size, we must make a final write call with no data
If usb_packet_size <> 0 Then
If (aPacket.Length Mod usb_packet_size = 0) Then
Dim newBytes() As Byte
newBytes = New Byte() {}
WriteFile(hDevice, newBytes, 0, theBytesReturned,
IntPtr.Zero)
End If
End If
End Sub
das problem hat sich wohl erledigt es lag an dem letzten parameter von WriteFile den ich als ByRef definiert hatte und als Byval hätte lieber definieren sollte
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.