Mahlzeit
Ich hab leider nochmal ein Problem bei dem mir die libusb und libusbJava
doku nicht weiterhilft.
Wenn ich LibusbJava1.libusb_close(usbHandle); aufrufe, während noch
bulktransfers ausstehen, werden die ausstehenden transfers nicht
beendet, bulktransfers mit timeout blockieren sogar dauerhaft, anstatt
eine Timeout exception zurückzugeben.
Auf welche Weise beende ich einen bulktransfer wenn das Device (aus
welchen Gründen auch immer) die Daten des transfers nicht empfängt oder
sendet?
Hier mal ein vereinfachter Codeausschnitt um mein Problem zu
veranschaulichten:
1 | if (usbHandle = device.open())
|
2 | {
|
3 | Thread t = new Thread()
|
4 | {
|
5 | public void run()
|
6 | {
|
7 | try
|
8 | {
|
9 | int length = 4;
|
10 | byte[] data = new byte[5];
|
11 | LibusbJava1.libusb_bulk_transfer(usbHandle, (byte) 0x1, data , length , 0);
|
12 | } catch (Exception e) {
|
13 | e.printStackTrace();
|
14 | }
|
15 | };
|
16 | };
|
17 | t.start();
|
18 | threadVector.add(t);
|
19 | }
|
20 | try {
|
21 | Thread.sleep(2000);
|
22 | } catch (InterruptedException e) {
|
23 | // TODO Auto-generated catch block
|
24 | e.printStackTrace();
|
25 | }
|
26 | LibusbJava1.libusb_close(usbHandle);
|
27 | EfmUsbService.exit();
|
Viele Grüsse
Chris