Bonjour,
j'écris une interface pour lire des données entrant d'un port USB.
Des qu'une donnée arrive, un thread lit la donnée, la convertie et l'affiche dans un Table.
le problème c'est que durant mes tests si j'augmente la fréquence d'envois des données sur le port à une donnée/ms j'obtiens rapidement l'erreur suivante:
la ligne 132 et la deuxième ligne du code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Exception in thread "Thread-0" java.lang.StackOverflowError at org.eclipse.swt.internal.win32.OS.PostThreadMessage(OS.java:2411) at org.eclipse.swt.widgets.Display.wakeThread(Display.java:3961) at org.eclipse.swt.widgets.Synchronizer.addLast(Synchronizer.java:62) at org.eclipse.swt.widgets.Synchronizer.asyncExec(Synchronizer.java:81) at org.eclipse.swt.widgets.Display.asyncExec(Display.java:603) at ui.InputTrame_Viewer.addFrame(InputTrame_Viewer.java:132)
est ce que quelqu'un peut me dire comment gérer/éviter cette erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28 public void addFrame(final CanTrame trame) { ui.getDisplay().asyncExec(new Runnable() { public void run() { TableItem newLigne = new TableItem(ui, SWT.NONE); // Time newLigne.setText(0, trame.getStrTime()); // Priority newLigne.setText(1, String.valueOf(trame.getPriority())); // Transmitter newLigne.setText(2, trame.getStrTransmitter()); // Recipient newLigne.setText(3, trame.getStrRecipient()); // id newLigne.setText(4, trame.getStrId()); // Length newLigne.setText(5, String.valueOf(trame.getLength())); // Data newLigne.setText(6, trame.getStrData()); if (!btScrollLock.getSelection()) ui.showItem(newLigne); TxtNbTrameReceived.setText( String.valueOf(Integer.valueOf(TxtNbTrameReceived.getText()) + 1)); } }); }
Merci d'avance.
Partager