Bonjour
Un système Electronique via le port série m'envoie des trames.
Ces trames de longueur variables sont la réponse à une commande particulière.
A une commande particulière, la définition de la trame de réponse est contenue dans une classe.
Je dois donc convertir mon flux de port série en une classe pour une commande particulière (environ 200 commandes différentes)
Mon souci est que le flux du port série contient des unsigned byte (provient d'un DSPIC microchip ou le développeur avait ce type en C)
Je cherche donc un moyen pour transformer mon byte[] en une classe sans avoir a reinterpreter chaque commande de retour. (j'en ai fait une pour tester en castant tout les byte en int & 0xFF mais c'est laborieux)
en cherchant un peu sur la toile j' ai trouvé ceci
mais evidemment avec met unsigned byte je me prend une magnifique exception Stream Corrupted Exception : invalid stream header.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public static Object MarshaltoObject(byte[] bytes){ Object object = null; try{ object = new java.io.ObjectInputStream(new java.io.ByteArrayInputStream(bytes)).readObject(); }catch(java.io.IOException ioe){ java.util.logging.Logger.global.log(java.util.logging.Level.SEVERE,ioe.getMessage()); } catch(java.lang.ClassNotFoundException cnfe){ java.util.logging.Logger.global.log(java.util.logging.Level.SEVERE,cnfe.getMessage()); } return object; }
Comment puis je automatiser en java un convertion Unsigned byte[] to object, toutes les fonctions que je trouve prennent des signed byte en java et rien n'utilise un short[] ou un int[]?
Suis je obliger de me taper un reinterpretation de toute les trames pour chaque variables de met 200 classes de retour ?
Cordialement
Partager