Bonsoir,
J'utilise ce bout de code pour ecouter un port UDP
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public static void updateBouton(){
//On crée un Worker générique, cette fois
SwingWorker sw = new SwingWorker<String, String>(){
protected String doInBackground() throws Exception {
String nees = null;
while(true)
{
String NewsMsg = null;
String TamponAIS;
try
{
try (DatagramSocket ClientSoc = new DatagramSocket(6020)) {
byte Receivebuff[]=new byte[1024];
//NewsMsg = null;
DatagramPacket dp=new DatagramPacket(Receivebuff,Receivebuff.length);
ClientSoc.receive(dp);
NewsMsg = new String(dp.getData(),0,dp.getLength());
BufferedReader entree = new BufferedReader(new StringReader(NewsMsg));
TamponAIS = NewsMsg;
ClientSoc.close();
Thread.sleep(50);
if((TamponAIS.substring(0, 6).equals("!AIVDM"))&&(TamponAIS.length()>19)){
TrameAIS = TamponAIS;
this.doInBackground();
// System.out.println("1");
// System.out.print(1 + "::" + TrameAIS);
}
else if((TamponAIS.substring(0, 6) != "$PNMLS") && (TamponAIS.substring(0, 6) != "!AIVDM")){
TrameAIS = TrameAIS + TamponAIS;
System.out.print( TrameAIS);
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
return nees;
}
} |
Les trames arrivent comme ceci
Citation:
!AIVDM,1,1,,B,1:182j003R0K3T4H>PdLsbI20
HC8,0*51
!AIVDM,1,1,
,A,13ccWT001s0Hss4HWKicLa<2080d,0*08
!AIVDM,1,1,,A,13chtv003
$PNMLS,30,20,3*52
!AIVDM,1,1,,A,1:182j003R0K2
$PNMLS,31,20,3*53
F04Sd,0*1E
$PNMLS,28,21,3*5A
2f:H>agttbHN0@8Q,0*05
ce que je souhaiterai c'est de passer de
Citation:
!AIVDM,1,1,,B,1:182j003R0K3T4H>PdLsbI20
HC8,0*51
à
Citation:
!AIVDM,1,1,,B,1:182j003R0K3T4H>PdLsbI20HC8,0*51
.
Tout en ignorant les trames commencant par"$PNMLS"
Voici mon resultat
Citation:
$PNMLS,33,19,3*5B
$PNMLS,34,19,3*5C
!AIVDM,1,1,,A,1:182j0vCQ0Jlp@HA5p=1JLN00S<,0*69
$PNMLS,33,19,3*5B
!AIVDM,1,1,,A,1:182j0vCQ0Jlp@HA5p=1JLN00S<,0*69
$PNMLS,33,19,3*5B
$PNMLS,33,19,3*5B
!AIVDM,1,1,,A,1:182j0vCQ0Jlp@HA5p=1JLN00S<,0*69
$PNMLS,33,19,3*5B
$PNMLS,33,19,3*5B
$PNMLS,33,19,3*5B
je n'arrive pas a virer "$PNMLS"