Envoie de donnée sur port série

Signaler
Messages postés
54
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 avril 2006
-
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
-
:question) :question) :question) :question) :question) :question) :question) :question) :question) :question) :question)

Je voulais savoir comment envoyer des données plus grande sur le port série :

Je m'explique :
Pour ecrire sur le port série, j'utilise ceci :
SerialPort portSerie;
OutputStream outputStream;
InputStream inputStream;

Pour ecrire sur le port , j'utilise ceci :
outputStream.write(commande);

Mes commandes sont du style :
final byte[] STANDBY_OFF = {0x020, 0x004, 0x024};

Les donnees premieres données sont les données utiles, et le troisieme est le checksum.

Je voulais donc savoir s'il etait possible d'envoyer des données plus grande que le type byte, car avec celui ci le
checksum ne peut depasser 0X7F.

Je voudrai pour faire :
final byte[] CMD= {0x021, 0x023, 0x040, 0x084};

Il faut prendre en compte le fait que write ne peut envoye que des byte[].

Est ce que qq'un connait une autre méthode????

:question) :question) :question) :question) :question) :question) :question) :question) :question) :question) :question)

6 réponses

Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
le byte est entre -128 et +127

tu fait ca avec un ou logique : tu calcul en int et tu fait

byte b=0;
i=truc+machin;
b|=i;
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
apres pour recuperer if faut faire un 0x100-not(i) si i<0

il me semble mais c'est a tester
Messages postés
54
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 avril 2006

ton calcul marche, mais il ne regle pas mon soucis, pour des valeurs allant jusqu'à 7F (127), il marche bien mais des que ca depasse, bing ca plante

tu n'a pas une autre idée

:question) :question) :question) :question) :question) :question) :question) :question) :question) :question) :question)
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
soit tu fait:
byte[] b={0x53, 0x40, 0x00};

int i=b[0]+b[1];
if (i>127)i=127-b;
b[3]=(byte)i;

soit au lieu de faire un + tu fait un xor. comme c'est bit a bit il ne t'embetera pas pour le signe.
Messages postés
54
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 avril 2006

désolé mais ca ne marche toujours pas !!!!
Je ne peux qu'ecrire sur le port serie avec
 write 
????

Il n'y aurait pas autre chose
Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
normallement ca ne peut que marcher!

Enfin pour un CRC fait des operation de bit a bit et pas du calcul!