Gast
#385868
Hallo,
ich habe da ein programm in VB .NET geschrieben das mir helfen sollte
packete zu meinem gerät zu schicken oder welche von ihm zu empfangen
es läuft einigermaßen (das schicken zumindest! das empfangen ist sehr
langsam bzw. geht gar nicht)! ich kann kontakt zu meinem gerät
aufnehmen aber wenn ich packete empfangen möchte (methode getPacket())
dann dauert es so lange dass ich mein programm doch abbrechen muß
ich habe ein breakpoint gesetzt um zu sehen wo es hängen bleibt und da
habe ich gemerkt dass es bei der methode deviceiocontrol() in
getPacket() hängt
warum denn? ich verstehe das nicht!
kann mir jemand helfen? mein gerät ist per USB angeschlossen
hier mein code:
sub main()
SendPacket(theStartSessionPacket) // schicken läuft
Do
thePacket = GetPacket() //// Empfangen schläft fehl! Ab
hier läuft mein Programm nicht mehr bzw. sehr sehr langsam denn es geht
nicht weiter///////
If thePacket.Type = 0 And thePacket.PacketId = 6 Then
Exit Do
End If
Loop
end sub
Public Function GetPacket() As GarminPacket
Dim buffer As List(Of Byte)
Dim bufferSize As Integer
Dim data As Byte()
Dim dataSize As Integer
Dim packet As GarminPacket
buffer = New List(Of Byte)
Do
data = New Byte(ASYNC_DATA_SIZE - 1) {}
///////////------------dieser Aufruf ist der grund warum
mein programm ziemlich langsam läuft bzw. gar nicht! muß ich immer
selber abbrechen-------------/////////////
DeviceIoControl(hDevice, IOCTL_ASYNC_IN, IntPtr.Zero, 0,
data, ASYNC_DATA_SIZE, dataSize, IntPtr.Zero)
bufferSize += dataSize
buffer.AddRange(New List(Of Byte)(data).GetRange(0,
dataSize))
If dataSize = ASYNC_DATA_SIZE Then Exit Do
Loop
If buffer.Count > 0 Then
packet = New GarminPacket()
packet.Deserialize(buffer)
If packet.Type = 0 And packet.PacketId = 2 Then
' DataAvailable ...
packet = Nothing
data = New Byte(MAX_BUFFER_SIZE - 1) {}
dataSize = 0
ReadFile(hDevice, data, MAX_BUFFER_SIZE, dataSize,
IntPtr.Zero)
If dataSize > 0 Then
buffer = New List(Of Byte)(data).GetRange(0,
dataSize)
packet = New GarminPacket()
packet.Deserialize(buffer)
Return packet
End If
Else
Return packet
End If
End If
End Function