Voir chaque bit que je reçois sur le port serie

super1titi Messages postés 1 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 29 mars 2006 - 29 mars 2006 à 14:11
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 29 mars 2006 à 20:40
Bonjour,
Quelqu'un pourrai me donner de l'aide ou un tutorial (ou autre) sur les connection avec un port serie.
Et comment récuperer les données que je reçois. je voudrais aussi les récupérer bit par bit ou la valeur décimal de la série de 8 bits.
Merci d'avance

2 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
29 mars 2006 à 16:18
salut pour récupérer le données du port série il faut

1) configurer le port

2) l'ouvrir

3) lire les données

pour celà plusieurs possiblités soit utiliser les API, soit une DLL par exemple RSCOM ou un composant par exemple TCOMPORT.

les données récupérées sont au fornat 8 bit pour les avoir bit par bit
j'avais poster une fonction qui permet de savoir si un bit est à 1 ou à
0:

function extractbit(valeur:byte;numbit:integer):boolean;

begin

//renvoie vrai si le bit N° numbit est à 1 faux dans le cas contraire

if ( valeur and (1 shl numbit))<> 0 then result:true else result : false;

// on decale 1 de numbit vers la gauche et on fait un et logique avec la valeur à tester

end;

pour afficher bit par bit dans un label en rangeant du plus fort au plus faible:

for i:= 7 downto 0 do

if extractbit(valeur,i) then caption: =label1.caption+'1'

else caption:=label1.caption+'0';

pour afficher la valeur decimale label1.caption:=inttostr(valeur);



si tu as reçu la donnée sous forme de caractere:

valeur: integer ou byte;

donnee: char;

valeur :=ord(donnee);



si donnée fait partie d'une chaine à la position indice:

donnee:=chaine[indice];

@+

jlen
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
29 mars 2006 à 20:40
tite correction :

function extractbit(valeur:byte;numbit:integer):boolean;
begin
result := (valeur and (1 shl numbit)) <> 0;
end ;

sinon y'a toujours moyen de voir les valeurs en hexadecimal :

caption : = format('%.2x %.8x %.2x',[byte, integer, ord(char)]);

<hr size="2" width="100%">
0
Rejoignez-nous